Mercurial > dive4elements > river
diff flys-client/src/main/java/de/intevation/flys/client/server/DataFactory.java @ 2535:d0a9acddbea2
Added an int data item used in int array data and added getter that returns
values as colon separated string to all data types.
flys-client/trunk@4445 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Mon, 21 May 2012 08:48:16 +0000 |
parents | 261347ea60b8 |
children |
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/server/DataFactory.java Fri May 18 12:42:57 2012 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/server/DataFactory.java Mon May 21 08:48:16 2012 +0000 @@ -23,6 +23,7 @@ import de.intevation.flys.client.shared.model.StringOptionsData; import de.intevation.flys.client.shared.model.LongRangeData; +import de.intevation.flys.client.shared.model.IntDataItem; /** * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> @@ -198,22 +199,8 @@ * @return an instance of IntegerArrayData. */ protected static Data createIntegerArrayData(Element ele, String name, String label) { - DataItem[] items = extractDataItems(ele); - String rawValue = items[0].getStringValue(); - - String[] values = rawValue.split(";"); - int[] integers = new int[values.length]; - - for (int i = 0; i < values.length; i++) { - try { - integers[i] = Integer.valueOf(values[i]); - } - catch (NumberFormatException nfe) { - logger.warn("Error while parsing IntegerArrayData: " + nfe); - } - } - - return new IntegerArrayData(name, label, integers); + IntDataItem[] items = extractIntDataItems(ele); + return new IntegerArrayData(name, label, items); } @@ -289,6 +276,46 @@ /** + * This method extracts the art:item elements placed under <i>elements</i>. + * + * @param element A data node that contains items. + * + * @return a list of DataItems. + */ + protected static IntDataItem[] extractIntDataItems(Element element) { + NodeList itemList = (NodeList) XMLUtils.xpath( + element, + "art:item", + XPathConstants.NODESET, + ArtifactNamespaceContext.INSTANCE); + + if (itemList == null || itemList.getLength() == 0) { + logger.debug("No old data items found."); + return null; + } + + int count = itemList.getLength(); + + IntDataItem[] items = new IntDataItem[count]; + + for (int i = 0; i < count; i++) { + Element tmp = (Element) itemList.item(i); + + String value = tmp.getAttributeNS(NS_URI, "value"); + String label = tmp.getAttributeNS(NS_URI, "label"); + + try { + int data = Integer.parseInt(value); + items[i] = new IntDataItem(label, label, data); + } + catch(NumberFormatException nfe) { + logger.debug(nfe, nfe); + } + } + return items; + } + + /** * This method creates a new instance of LongRangeData which has a type * "longrange" set. *