annotate gwt-client/src/main/java/org/dive4elements/river/client/server/DataFactory.java @ 9074:766890addcb2

state To client communication;
author gernotbelger
date Fri, 18 May 2018 17:26:26 +0200
parents 5e38e2924c07
children
rev   line source
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5993
ea9eef426962 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5861
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5993
ea9eef426962 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5861
diff changeset
6 * documentation coming with Dive4Elements River for details.
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
9 package org.dive4elements.river.client.server;
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
8071
6e6506ec0ae0 Parse meta data for multi attribute data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7824
diff changeset
11 import java.util.Collections;
7824
2c221acebb76 New method to extract multi attribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 5993
diff changeset
12 import java.util.HashMap;
8071
6e6506ec0ae0 Parse meta data for multi attribute data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7824
diff changeset
13 import java.util.Map;
7824
2c221acebb76 New method to extract multi attribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 5993
diff changeset
14
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import javax.xml.xpath.XPathConstants;
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 import org.apache.log4j.Logger;
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
18 import org.dive4elements.artifacts.common.ArtifactNamespaceContext;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
19 import org.dive4elements.artifacts.common.utils.XMLUtils;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
20 import org.dive4elements.river.client.shared.model.Data;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
21 import org.dive4elements.river.client.shared.model.DataItem;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
22 import org.dive4elements.river.client.shared.model.DefaultData;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
23 import org.dive4elements.river.client.shared.model.DefaultDataItem;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
24 import org.dive4elements.river.client.shared.model.DoubleArrayData;
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
25 import org.dive4elements.river.client.shared.model.IntDataItem;
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
26 import org.dive4elements.river.client.shared.model.IntegerArrayData;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
27 import org.dive4elements.river.client.shared.model.IntegerData;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
28 import org.dive4elements.river.client.shared.model.IntegerOptionsData;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
29 import org.dive4elements.river.client.shared.model.IntegerRangeData;
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
30 import org.dive4elements.river.client.shared.model.LongRangeData;
7824
2c221acebb76 New method to extract multi attribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 5993
diff changeset
31 import org.dive4elements.river.client.shared.model.MultiAttributeData;
2c221acebb76 New method to extract multi attribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 5993
diff changeset
32 import org.dive4elements.river.client.shared.model.MultiDataItem;
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
33 import org.dive4elements.river.client.shared.model.StringData;
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
34 import org.dive4elements.river.client.shared.model.StringOptionsData;
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
35 import org.w3c.dom.Attr;
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
36 import org.w3c.dom.Element;
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
37 import org.w3c.dom.NamedNodeMap;
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
38 import org.w3c.dom.Node;
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
39 import org.w3c.dom.NodeList;
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 /**
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 */
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 public class DataFactory {
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8071
diff changeset
46 private static final Logger log = Logger.getLogger(DataFactory.class);
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 public static final String NS_URI = ArtifactNamespaceContext.NAMESPACE_URI;
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 /**
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 * Creates a new Data instance based on the <i>art:type</i> attribute of
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 * <i>element</i>.
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53 *
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
54 * @param element
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
55 * The Data element.
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 *
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 * @return a Data instance.
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 */
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
59 public static Data createDataFromElement(final Element element) {
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
60 final String name = element.getAttributeNS(NS_URI, "name");
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
61 String type = element.getAttributeNS(NS_URI, "type");
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2468
diff changeset
62 String label = element.getAttributeNS(NS_URI, "label");
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2468
diff changeset
63
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2468
diff changeset
64 label = label != null && label.length() > 0 ? label : name;
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
66 try {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8071
diff changeset
67 log.debug("Create Data instance for: " + name + " | " + type);
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
69 if (type == null || type.length() == 0) {
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2468
diff changeset
70 return createDefaultData(element, name, label);
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
71 }
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
72
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
73 type = type.toLowerCase();
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
74
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
75 if (type.equals(StringData.TYPE)) {
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2468
diff changeset
76 return createStringData(element, name, label);
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
77 } else if (type.equals(IntegerData.TYPE)) {
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2468
diff changeset
78 return createIntegerData(element, name, label);
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
79 } else if (type.equals(StringOptionsData.TYPE)) {
2532
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2528
diff changeset
80 return createStringOptionsData(element, name, label);
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
81 } else if (type.equals(IntegerOptionsData.TYPE)) {
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2468
diff changeset
82 return createIntegerOptionsData(element, name, label);
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
83 } else if (type.equals(IntegerRangeData.TYPE)) {
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2468
diff changeset
84 return createIntegerRangeData(element, name, label);
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
85 } else if (type.equals(IntegerArrayData.TYPE)) {
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2468
diff changeset
86 return createIntegerArrayData(element, name, label);
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
87 } else if (type.equals(DoubleArrayData.TYPE)) {
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2468
diff changeset
88 return createDoubleArrayData(element, name, label);
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
89 } else if (type.equals(LongRangeData.TYPE)) {
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2468
diff changeset
90 return createLongRangeData(element, name, label);
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
91 } else if (type.equals(MultiAttributeData.TYPE)) {
7824
2c221acebb76 New method to extract multi attribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 5993
diff changeset
92 return createMultiAttributeData(element, name, label);
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
93 } else {
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2468
diff changeset
94 return createDefaultData(element, name, label);
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
95 }
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
96 }
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
97 catch (final Exception e) {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8071
diff changeset
98 log.error("Error while data creation for: " + name);
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
99 }
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
100
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
101 return null;
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
102 }
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
103
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
104 public static Data createMultiAttributeData(final Element element, final String name, final String label) {
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
105 return new MultiAttributeData(name, label, extractMultiDataItems(element), extractMeta(element));
8071
6e6506ec0ae0 Parse meta data for multi attribute data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7824
diff changeset
106 }
6e6506ec0ae0 Parse meta data for multi attribute data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7824
diff changeset
107
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
108 private static Map<String, Map<String, String>> extractMeta(final Element element) {
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
109 final NodeList nl = element.getElementsByTagName("art:meta");
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
110 final int N = nl.getLength();
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
111 if (N != 1) {
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
112 log.debug("No or too much meta data found for multi attribute data");
8071
6e6506ec0ae0 Parse meta data for multi attribute data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7824
diff changeset
113 return Collections.<String, Map<String, String>>emptyMap();
6e6506ec0ae0 Parse meta data for multi attribute data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7824
diff changeset
114 }
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
115 final Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>();
8071
6e6506ec0ae0 Parse meta data for multi attribute data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7824
diff changeset
116
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
117 final Element metaElement = (Element) nl.item(0);
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
118 final NodeList metaChildren = metaElement.getChildNodes();
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
119
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
120 for (int i = 0; i < metaChildren.getLength(); ++i) {
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
121
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
122 final Node childNode = metaChildren.item(i);
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
123 if (childNode instanceof Element) {
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
124
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
125 final Element e = (Element) childNode;
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
126 final NamedNodeMap attrs = e.getAttributes();
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
127 final Map<String, String> kvs = new HashMap<String, String>();
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
128 for (int j = 0, A = attrs.getLength(); j < A; ++j) {
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
129 final Attr attr = (Attr) attrs.item(j);
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
130 kvs.put(attr.getName(), attr.getValue());
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
131 }
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
132 map.put(e.getLocalName(), kvs);
8071
6e6506ec0ae0 Parse meta data for multi attribute data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7824
diff changeset
133 }
6e6506ec0ae0 Parse meta data for multi attribute data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7824
diff changeset
134 }
6e6506ec0ae0 Parse meta data for multi attribute data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7824
diff changeset
135
6e6506ec0ae0 Parse meta data for multi attribute data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7824
diff changeset
136 return map;
7824
2c221acebb76 New method to extract multi attribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 5993
diff changeset
137 }
2c221acebb76 New method to extract multi attribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 5993
diff changeset
138
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
139 protected static DataItem[] extractMultiDataItems(final Element element) {
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
140 final NodeList itemList = (NodeList) XMLUtils.xpath(element, "art:item", XPathConstants.NODESET, ArtifactNamespaceContext.INSTANCE);
7824
2c221acebb76 New method to extract multi attribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 5993
diff changeset
141
2c221acebb76 New method to extract multi attribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 5993
diff changeset
142 if (itemList == null || itemList.getLength() == 0) {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8071
diff changeset
143 log.debug("No old data items found.");
7824
2c221acebb76 New method to extract multi attribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 5993
diff changeset
144 return null;
2c221acebb76 New method to extract multi attribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 5993
diff changeset
145 }
2c221acebb76 New method to extract multi attribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 5993
diff changeset
146
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
147 final int count = itemList.getLength();
7824
2c221acebb76 New method to extract multi attribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 5993
diff changeset
148
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
149 final MultiDataItem[] items = new MultiDataItem[count];
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
150
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
151 for (int i = 0; i < count; i++) {
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
152 final Element tmp = (Element) itemList.item(i);
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
153
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
154 final HashMap<String, String> data = new HashMap<String, String>();
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
155 final String label = tmp.getAttributeNS(NS_URI, "label");
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
156 final NamedNodeMap attributes = tmp.getAttributes();
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
157 for (int j = 0, L = attributes.getLength(); j < L; j++) {
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
158 final Node n = attributes.item(j);
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
159 if (n.getNodeName().equals("label")) {
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
160 continue;
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
161 }
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
162 data.put(n.getNodeName(), n.getNodeValue());
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
163 }
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
164 items[i] = new MultiDataItem(label, label, data);
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
165 }
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
166 return items;
7824
2c221acebb76 New method to extract multi attribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 5993
diff changeset
167 }
2c221acebb76 New method to extract multi attribute data.
Raimund Renkert <rrenkert@intevation.de>
parents: 5993
diff changeset
168
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
169 /**
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
170 * This method creates a new instance of DefaultData which has no real type
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
171 * set.
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
172 *
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
173 * @param ele
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
174 * The Data element.
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
175 * @param name
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
176 * The name of the Data instance.
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
177 *
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
178 * @return an instance of DefaultData.
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
179 */
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
180 protected static Data createDefaultData(final Element ele, final String name, final String label) {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8071
diff changeset
181 log.debug("Create new DefaultData");
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2468
diff changeset
182 return new DefaultData(name, label, "default", extractDataItems(ele));
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
183 }
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
184
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
185 /**
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
186 * This method creates a new instance of StringData which has a type
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
187 * "string" set.
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
188 *
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
189 * @param ele
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
190 * The Data element.
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
191 * @param name
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
192 * The name of the Data instance.
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
193 *
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
194 * @return an instance of StringData.
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
195 */
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
196 protected static Data createStringData(final Element ele, final String name, final String label) {
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2468
diff changeset
197 return new StringData(name, label, extractDataItems(ele));
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
198 }
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
199
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
200 /**
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
201 * This method creates a new instance of DefaultData which has a type
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
202 * "integer" set.
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
203 *
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
204 * @param ele
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
205 * The Data element.
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
206 * @param name
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
207 * The name of the Data instance.
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
208 *
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
209 * @return an instance of IntegerData.
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
210 */
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
211 protected static Data createIntegerData(final Element ele, final String name, final String label) {
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2468
diff changeset
212 return new IntegerData(name, label, extractDataItems(ele));
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
213 }
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
214
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
215 /**
2532
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2528
diff changeset
216 * This method creates a new instance of StringOptionsData which has a type
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2528
diff changeset
217 * "options" set.
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2528
diff changeset
218 *
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
219 * @param ele
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
220 * The Data element.
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
221 * @param name
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
222 * The name of the Data instance.
2532
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2528
diff changeset
223 *
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2528
diff changeset
224 * @return an instance of StringOptionsData.
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2528
diff changeset
225 */
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
226 protected static Data createStringOptionsData(final Element ele, final String name, final String label) {
2532
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2528
diff changeset
227 return new StringOptionsData(name, label, extractDataItems(ele));
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2528
diff changeset
228 }
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2528
diff changeset
229
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2528
diff changeset
230 /**
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
231 * This method creates a new instance of DefaultData which has a type
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
232 * "intoptions" set.
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
233 *
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
234 * @param ele
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
235 * The Data element.
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
236 * @param name
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
237 * The name of the Data instance.
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
238 *
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
239 * @return an instance of IntegerOptionsData.
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
240 */
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
241 protected static Data createIntegerOptionsData(final Element ele, final String name, final String label) {
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2468
diff changeset
242 return new IntegerOptionsData(name, label, extractDataItems(ele));
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
243 }
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
244
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
245 /**
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
246 * This method creates a new instance of DefaultData which has a type
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
247 * "intrange" set.
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
248 *
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
249 * @param ele
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
250 * The Data element.
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
251 * @param name
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
252 * The name of the Data instance.
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
253 *
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
254 * @return an instance of IntegerRangeData.
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
255 */
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
256 protected static Data createIntegerRangeData(final Element ele, final String name, final String label) {
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
257 final DataItem[] items = extractDataItems(ele);
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
258 final String rawValue = items[0].getStringValue();
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
259
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
260 final String[] minmax = rawValue.split(";");
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
261
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
262 return new IntegerRangeData(name, label, Integer.valueOf(minmax[0]), Integer.valueOf(minmax[1]));
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
263 }
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
264
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
265 /**
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
266 * This method creates a new instance of DefaultData which has a type
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
267 * "integerarray" set.
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
268 *
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
269 * @param ele
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
270 * The Data element.
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
271 * @param name
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
272 * The name of the Data instance.
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
273 *
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
274 * @return an instance of IntegerArrayData.
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
275 */
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
276 protected static Data createIntegerArrayData(final Element ele, final String name, final String label) {
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
277 final IntDataItem[] items = extractIntDataItems(ele);
2535
d0a9acddbea2 Added an int data item used in int array data and added getter that returns
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2532
diff changeset
278 return new IntegerArrayData(name, label, items);
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
279 }
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
280
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
281 /**
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
282 * This method creates a new instance of DefaultData which has a type
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
283 * "doublearray" set.
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
284 *
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
285 * @param ele
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
286 * The Data element.
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
287 * @param name
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
288 * The name of the Data instance.
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
289 *
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
290 * @return an instance of DoubleArrayData.
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
291 */
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
292 protected static Data createDoubleArrayData(final Element ele, final String name, final String label) {
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
293 final DataItem[] items = extractDataItems(ele);
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
294 final String rawValue = items[0].getStringValue();
1595
e53d773e6992 Display inserted W/Q values in WQSimpleArrayPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1586
diff changeset
295
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
296 final String[] values = rawValue.split(";");
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
297 final double[] doubles = new double[values.length];
1595
e53d773e6992 Display inserted W/Q values in WQSimpleArrayPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1586
diff changeset
298
e53d773e6992 Display inserted W/Q values in WQSimpleArrayPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1586
diff changeset
299 for (int i = 0; i < values.length; i++) {
e53d773e6992 Display inserted W/Q values in WQSimpleArrayPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1586
diff changeset
300 try {
e53d773e6992 Display inserted W/Q values in WQSimpleArrayPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1586
diff changeset
301 doubles[i] = Double.valueOf(values[i]);
e53d773e6992 Display inserted W/Q values in WQSimpleArrayPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1586
diff changeset
302 }
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
303 catch (final NumberFormatException nfe) {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8071
diff changeset
304 log.warn("Error while parsing DoubleArrayData: " + nfe);
1595
e53d773e6992 Display inserted W/Q values in WQSimpleArrayPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1586
diff changeset
305 }
e53d773e6992 Display inserted W/Q values in WQSimpleArrayPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1586
diff changeset
306 }
e53d773e6992 Display inserted W/Q values in WQSimpleArrayPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1586
diff changeset
307
2528
33e2a1e23ae8 Implemented ParameterMatrixPanel.createOld() and added a real 'description' to Data instances in DataFactory.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2468
diff changeset
308 return new DoubleArrayData(name, label, doubles);
1575
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
309 }
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
310
0f2b94408bd1 Added further methods to DataFactory to create concrete Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1571
diff changeset
311 /**
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
312 * This method extracts the art:item elements placed under <i>elements</i>.
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
313 *
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
314 * @param element
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
315 * A data node that contains items.
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
316 *
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
317 * @return a list of DataItems.
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
318 */
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
319 protected static DataItem[] extractDataItems(final Element element) {
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
320 final NodeList itemList = (NodeList) XMLUtils.xpath(element, "art:item", XPathConstants.NODESET, ArtifactNamespaceContext.INSTANCE);
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
321
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
322 if (itemList == null || itemList.getLength() == 0) {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8071
diff changeset
323 log.debug("No data items found.");
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
324 return null;
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
325 }
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
326
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
327 final int count = itemList.getLength();
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
328
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
329 final DataItem[] items = new DataItem[count];
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
330
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8071
diff changeset
331 log.debug("There are " + count + " data items in element.");
2532
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2528
diff changeset
332
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
333 for (int i = 0; i < count; i++) {
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
334 final Element tmp = (Element) itemList.item(i);
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
335
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
336 final String value = tmp.getAttributeNS(NS_URI, "value");
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
337 final String label = tmp.getAttributeNS(NS_URI, "label");
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
338
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8071
diff changeset
339 log.debug("Found data item:");
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8071
diff changeset
340 log.debug(" label: " + label);
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8071
diff changeset
341 log.debug(" value: " + value);
2532
261347ea60b8 Added new Data type StringOptionsData; allow this Data type for ParameterMatrixPanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2528
diff changeset
342
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
343 items[i] = new DefaultDataItem(label, label, value);
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
344 }
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
345
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
346 return items;
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
347 }
2468
6a65694bdcc2 Issue 506.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1595
diff changeset
348
6a65694bdcc2 Issue 506.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1595
diff changeset
349 /**
2535
d0a9acddbea2 Added an int data item used in int array data and added getter that returns
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2532
diff changeset
350 * This method extracts the art:item elements placed under <i>elements</i>.
d0a9acddbea2 Added an int data item used in int array data and added getter that returns
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2532
diff changeset
351 *
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
352 * @param element
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
353 * A data node that contains items.
2535
d0a9acddbea2 Added an int data item used in int array data and added getter that returns
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2532
diff changeset
354 *
d0a9acddbea2 Added an int data item used in int array data and added getter that returns
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2532
diff changeset
355 * @return a list of DataItems.
d0a9acddbea2 Added an int data item used in int array data and added getter that returns
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2532
diff changeset
356 */
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
357 protected static IntDataItem[] extractIntDataItems(final Element element) {
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
358 final NodeList itemList = (NodeList) XMLUtils.xpath(element, "art:item", XPathConstants.NODESET, ArtifactNamespaceContext.INSTANCE);
2535
d0a9acddbea2 Added an int data item used in int array data and added getter that returns
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2532
diff changeset
359
d0a9acddbea2 Added an int data item used in int array data and added getter that returns
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2532
diff changeset
360 if (itemList == null || itemList.getLength() == 0) {
8203
238fc722f87a sed 's/logger/log/g' src/**/*.java
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8071
diff changeset
361 log.debug("No old data items found.");
2535
d0a9acddbea2 Added an int data item used in int array data and added getter that returns
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2532
diff changeset
362 return null;
d0a9acddbea2 Added an int data item used in int array data and added getter that returns
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2532
diff changeset
363 }
d0a9acddbea2 Added an int data item used in int array data and added getter that returns
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2532
diff changeset
364
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
365 final int count = itemList.getLength();
2535
d0a9acddbea2 Added an int data item used in int array data and added getter that returns
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2532
diff changeset
366
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
367 final IntDataItem[] items = new IntDataItem[count];
2535
d0a9acddbea2 Added an int data item used in int array data and added getter that returns
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2532
diff changeset
368
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
369 for (int i = 0; i < count; i++) {
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
370 final Element tmp = (Element) itemList.item(i);
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
371
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
372 final String value = tmp.getAttributeNS(NS_URI, "value");
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
373 final String label = tmp.getAttributeNS(NS_URI, "label");
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
374
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
375 try {
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
376 final int data = Integer.parseInt(value);
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
377 items[i] = new IntDataItem(label, label, data);
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
378 }
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
379 catch (final NumberFormatException nfe) {
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
380 log.debug(nfe, nfe);
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
381 }
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
382 }
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
383 return items;
2535
d0a9acddbea2 Added an int data item used in int array data and added getter that returns
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2532
diff changeset
384 }
d0a9acddbea2 Added an int data item used in int array data and added getter that returns
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2532
diff changeset
385
d0a9acddbea2 Added an int data item used in int array data and added getter that returns
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2532
diff changeset
386 /**
2468
6a65694bdcc2 Issue 506.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1595
diff changeset
387 * This method creates a new instance of LongRangeData which has a type
6a65694bdcc2 Issue 506.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1595
diff changeset
388 * "longrange" set.
6a65694bdcc2 Issue 506.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1595
diff changeset
389 *
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
390 * @param ele
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
391 * The Data element.
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
392 * @param name
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
393 * The name of the Data instance.
2468
6a65694bdcc2 Issue 506.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1595
diff changeset
394 *
6a65694bdcc2 Issue 506.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1595
diff changeset
395 * @return an instance of IntegerRangeData.
6a65694bdcc2 Issue 506.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1595
diff changeset
396 */
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
397 protected static Data createLongRangeData(final Element ele, final String name, final String label) {
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
398 final DataItem[] items = extractDataItems(ele);
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
399 final String rawValue = items[0].getStringValue();
2468
6a65694bdcc2 Issue 506.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1595
diff changeset
400
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
401 final String[] minmax = rawValue.split(";");
2468
6a65694bdcc2 Issue 506.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1595
diff changeset
402
9074
766890addcb2 state To client communication;
gernotbelger
parents: 8856
diff changeset
403 return new LongRangeData(name, label, Long.valueOf(minmax[0]), Long.valueOf(minmax[1]));
2468
6a65694bdcc2 Issue 506.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1595
diff changeset
404 }
6a65694bdcc2 Issue 506.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1595
diff changeset
405
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
406 }
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
407 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org