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.
      *

http://dive4elements.wald.intevation.org