annotate flys-client/src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java @ 1592:f34bbb5fb6d2

Added TODO and handle dynamic data of unknown type. flys-client/trunk@3892 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Fri, 03 Feb 2012 11:15:09 +0000
parents 1227878665b5
children ff9d71469b7c
rev   line source
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.client.server;
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 import java.util.ArrayList;
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
4 import java.util.List;
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
5
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6 import javax.xml.xpath.XPathConstants;
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8 import org.w3c.dom.Document;
803
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
9 import org.w3c.dom.Element;
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10 import org.w3c.dom.Node;
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import org.w3c.dom.NodeList;
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
13 import org.apache.log4j.Logger;
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
14
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import de.intevation.artifacts.common.ArtifactNamespaceContext;
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16 import de.intevation.artifacts.common.utils.ClientProtocolUtils;
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 import de.intevation.artifacts.common.utils.XMLUtils;
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 import de.intevation.flys.client.shared.model.ArtifactDescription;
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 import de.intevation.flys.client.shared.model.DataItem;
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
21 import de.intevation.flys.client.shared.model.DataList;
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
22 import de.intevation.flys.client.shared.model.DefaultArtifactDescription;
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 import de.intevation.flys.client.shared.model.DefaultData;
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 import de.intevation.flys.client.shared.model.DefaultDataItem;
65
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
25 import de.intevation.flys.client.shared.model.DefaultOutputMode;
1527
252c22237fe7 Added new Data classes for integer array and integer options.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1522
diff changeset
26 import de.intevation.flys.client.shared.model.IntegerArrayData;
1522
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
27 import de.intevation.flys.client.shared.model.IntegerRangeData;
1527
252c22237fe7 Added new Data classes for integer array and integer options.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1522
diff changeset
28 import de.intevation.flys.client.shared.model.IntegerOptionsData;
65
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
29 import de.intevation.flys.client.shared.model.OutputMode;
807
6f65e70fa11d Repaired broken recommendation parsing from Artifact's DESCRIBE document (which structure has changed).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
30 import de.intevation.flys.client.shared.model.Recommendation;
565
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
31 import de.intevation.flys.client.shared.model.WQDataItem;
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 /**
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 * This factory class helps creating an {@link ArtifactDescription} based on the
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 * DESCRIBE document of an artifact returned by the artifact server. Use the
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 * {@link createArtifactDescription(org.w3c.dom.Document)} method with the
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 * DESCRIBE document to create such an {@link ArtifactDescription}.
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 *
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 */
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 public class ArtifactDescriptionFactory {
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
44 private static final Logger logger =
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
45 Logger.getLogger(ArtifactDescriptionFactory.class);
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
46
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
47
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 public static final String XPATH_STATE_NAME = "@art:name";
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49
22
a85bac235069 Implemented code to parse the UIProvider that should be used for a current state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 16
diff changeset
50 public static final String XPATH_UIPROVIDER = "@art:uiprovider";
a85bac235069 Implemented code to parse the UIProvider that should be used for a current state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 16
diff changeset
51
32
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
52 public static final String XPATH_REACHABLE_STATE = "art:state";
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
53
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
54 public static final String XPATH_STATIC_STATE_NODE = "art:state";
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
55
34
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
56 public static final String XPATH_STATIC_DATA_NODE = "art:data";
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
57
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
58 public static final String XPATH_STATIC_ITEM_NODE = "art:item";
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
59
803
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
60 public static final String XPATH_RECOMMENDED_ARTIFACTS =
808
3187b268b311 Repaired broken XPath expression.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 807
diff changeset
61 "/art:result/art:recommended-artifacts//*[@factory]";
803
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
62
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63 /**
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 * This method creates the {@link ArtifactDescription} of the DESCRIBE
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 * document <i>doc</i>.
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 *
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 * @param doc A DESCRIBE document.
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 *
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 * @return the {@link ArtifactDescription}.
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 */
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 public static ArtifactDescription createArtifactDescription(Document doc) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
72 logger.debug("ArtifactDescriptionFactory.createArtifactDescription");
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74 Node currentState = ClientProtocolUtils.getCurrentState(doc);
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 Node staticNode = ClientProtocolUtils.getStaticUI(doc);
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 Node dynamicNode = ClientProtocolUtils.getDynamicUI(doc);
32
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
77 Node reachable = ClientProtocolUtils.getReachableStates(doc);
65
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
78 NodeList outputs = ClientProtocolUtils.getOutputModes(doc);
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 String state = (String) XMLUtils.xpath(
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81 currentState,
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82 XPATH_STATE_NAME,
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 XPathConstants.STRING,
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 ArtifactNamespaceContext.INSTANCE);
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
85
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
86 logger.debug("Current state name: " + state);
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
87
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
88 DataList currentData = extractCurrentData(dynamicNode, state);
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
89 DataList[] old = extractOldData(staticNode);
34
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
90 String[] states = extractReachableStates(reachable);
803
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
91 OutputMode[] outs = extractOutputModes(outputs);
807
6f65e70fa11d Repaired broken recommendation parsing from Artifact's DESCRIBE document (which structure has changed).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
92 Recommendation[] rec = extractRecommendedArtifacts(doc);
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
93
65
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
94 return new DefaultArtifactDescription(
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
95 old,
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
96 currentData,
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
97 state,
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
98 states,
803
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
99 outs,
807
6f65e70fa11d Repaired broken recommendation parsing from Artifact's DESCRIBE document (which structure has changed).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
100 rec);
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
101 }
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
102
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
103
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
104 /**
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
105 * This method extracts the data that the user is able to enter in the
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
106 * current state of the artifact.
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
107 *
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
108 * @param dynamicNode The dynamic node of the DESCRIBE document.
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
109 * @param state The name of the current state.
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
110 *
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
111 * @return A {@link Data} object that represents the data which might be
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
112 * entered by the user in the current state or null, if no data might be
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
113 * entered.
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
114 */
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
115 protected static DataList extractCurrentData(Node dynamicNode, String state) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
116 logger.debug("ArtifactDescriptionFactory.extractCurrentData");
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
117
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
118 NodeList data = ClientProtocolUtils.getSelectNode(dynamicNode);
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
119 String uiProvider = extractUIProvider(dynamicNode);
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
120
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
121 if (data == null || data.getLength() == 0) {
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
122 return null;
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
123 }
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124
1522
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
125 int dataNum = data.getLength();
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
126 DataList list = new DataList(state, dataNum, uiProvider);
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
127
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
128 for (int i = 0; i < dataNum; i++) {
1522
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
129 Element d = (Element) data.item(i);
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
130 String label = ClientProtocolUtils.getLabel(d);
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
131 String name = XMLUtils.xpathString(
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
132 d, "@art:name", ArtifactNamespaceContext.INSTANCE);
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
133 String type = XMLUtils.xpathString(
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
134 d, "@art:type", ArtifactNamespaceContext.INSTANCE);
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
135
1522
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
136 logger.debug("Create new IntegerRangeData object for: " + name);
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
137 logger.debug("New Data is from type: " + type);
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
138
1592
f34bbb5fb6d2 Added TODO and handle dynamic data of unknown type.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1571
diff changeset
139 // TODO replace with DataFactory.
f34bbb5fb6d2 Added TODO and handle dynamic data of unknown type.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1571
diff changeset
140
1522
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
141 if (type == null || type.length() == 0) {
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
142 NodeList choices = ClientProtocolUtils.getItemNodes(d);
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
143 DataItem[] dataItems = extractCurrentDataItems(choices);
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
144 DataItem def = extractDefaultDataItem(d);
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
145
1522
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
146 list.add(new DefaultData(name, label, null, dataItems, def));
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
147 }
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
148 else if (type.equals("intrange")) {
1566
c408074c6409 Initialize the min and max fields in RangePanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1527
diff changeset
149 String min = ClientProtocolUtils.getMinNode(d);
c408074c6409 Initialize the min and max fields in RangePanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1527
diff changeset
150 String max = ClientProtocolUtils.getMaxNode(d);
c408074c6409 Initialize the min and max fields in RangePanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1527
diff changeset
151
c408074c6409 Initialize the min and max fields in RangePanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1527
diff changeset
152 String defMin = ClientProtocolUtils.getDefMin(d);
c408074c6409 Initialize the min and max fields in RangePanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1527
diff changeset
153 String defMax = ClientProtocolUtils.getDefMax(d);
1522
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
154
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
155 try {
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
156 int lower = Integer.parseInt(min);
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
157 int upper = Integer.parseInt(max);
1566
c408074c6409 Initialize the min and max fields in RangePanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1527
diff changeset
158
c408074c6409 Initialize the min and max fields in RangePanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1527
diff changeset
159 if (defMin != null && defMax != null) {
c408074c6409 Initialize the min and max fields in RangePanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1527
diff changeset
160 list.add(new IntegerRangeData(
c408074c6409 Initialize the min and max fields in RangePanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1527
diff changeset
161 name, label,
c408074c6409 Initialize the min and max fields in RangePanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1527
diff changeset
162 lower, upper,
c408074c6409 Initialize the min and max fields in RangePanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1527
diff changeset
163 Integer.parseInt(defMin),
c408074c6409 Initialize the min and max fields in RangePanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1527
diff changeset
164 Integer.parseInt(defMax)));
c408074c6409 Initialize the min and max fields in RangePanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1527
diff changeset
165 }
c408074c6409 Initialize the min and max fields in RangePanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1527
diff changeset
166 else {
c408074c6409 Initialize the min and max fields in RangePanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1527
diff changeset
167 list.add(
c408074c6409 Initialize the min and max fields in RangePanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1527
diff changeset
168 new IntegerRangeData(name, label, lower, upper));
c408074c6409 Initialize the min and max fields in RangePanel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1527
diff changeset
169 }
1522
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
170 }
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
171 catch (NumberFormatException nfe) {
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
172 logger.warn("NumberFormatException: ", nfe);
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
173 }
df9baca681a0 Added a new Data type IntegerRangeData that stores min and max integer values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1367
diff changeset
174 }
1527
252c22237fe7 Added new Data classes for integer array and integer options.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1522
diff changeset
175 else if (type.equals("intarray")) {
252c22237fe7 Added new Data classes for integer array and integer options.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1522
diff changeset
176 list.add(new IntegerArrayData(name, label, null));
252c22237fe7 Added new Data classes for integer array and integer options.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1522
diff changeset
177 }
252c22237fe7 Added new Data classes for integer array and integer options.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1522
diff changeset
178 else if (type.equals("intoptions")) {
252c22237fe7 Added new Data classes for integer array and integer options.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1522
diff changeset
179 NodeList choices = ClientProtocolUtils.getItemNodes(d);
252c22237fe7 Added new Data classes for integer array and integer options.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1522
diff changeset
180 DataItem[] opts = extractCurrentDataItems(choices);
252c22237fe7 Added new Data classes for integer array and integer options.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1522
diff changeset
181
252c22237fe7 Added new Data classes for integer array and integer options.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1522
diff changeset
182 list.add(new IntegerOptionsData(name, label, opts));
252c22237fe7 Added new Data classes for integer array and integer options.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1522
diff changeset
183 }
1592
f34bbb5fb6d2 Added TODO and handle dynamic data of unknown type.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1571
diff changeset
184 else {
f34bbb5fb6d2 Added TODO and handle dynamic data of unknown type.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1571
diff changeset
185 logger.warn("Unrecognized Dynamic data type.");
f34bbb5fb6d2 Added TODO and handle dynamic data of unknown type.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1571
diff changeset
186 NodeList choices = ClientProtocolUtils.getItemNodes(d);
f34bbb5fb6d2 Added TODO and handle dynamic data of unknown type.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1571
diff changeset
187 DataItem[] dataItems = extractCurrentDataItems(choices);
f34bbb5fb6d2 Added TODO and handle dynamic data of unknown type.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1571
diff changeset
188 DataItem def = extractDefaultDataItem(d);
f34bbb5fb6d2 Added TODO and handle dynamic data of unknown type.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1571
diff changeset
189
f34bbb5fb6d2 Added TODO and handle dynamic data of unknown type.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1571
diff changeset
190 list.add(new DefaultData(name, label, null, dataItems, def));
f34bbb5fb6d2 Added TODO and handle dynamic data of unknown type.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1571
diff changeset
191 }
f34bbb5fb6d2 Added TODO and handle dynamic data of unknown type.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1571
diff changeset
192
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
193 }
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
194
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
195 return list;
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
196 }
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
197
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
198
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
199 /**
515
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
200 * This method extracts the default value of a Data object.
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
201 *
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
202 * @param data The data object node.
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
203 *
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
204 * @return the default DataItem.
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
205 */
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
206 protected static DataItem extractDefaultDataItem(Node data) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
207 logger.debug("ArtifactDescriptionFactory.extractDefaultDataItem");
515
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
208
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
209 String value = XMLUtils.xpathString(
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
210 data, "@art:defaultValue", ArtifactNamespaceContext.INSTANCE);
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
211
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
212 String label = XMLUtils.xpathString(
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
213 data, "@art:defaultLabel", ArtifactNamespaceContext.INSTANCE);
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
214
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
215 if (value != null && label != null) {
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
216 return new DefaultDataItem(label, null, value);
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
217 }
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
218
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
219 return null;
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
220 }
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
221
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
222
27ffaf628b54 The default values/labels for Data objects are read from DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 65
diff changeset
223 /**
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
224 * This method extract the {@link DataItem}s of the DESCRIBE document.
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
225 *
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
226 * @param items The items in the DESCRIBE document.
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
227 *
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
228 * @return the {@link DataItem}s.
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
229 */
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
230 protected static DataItem[] extractCurrentDataItems(NodeList items) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
231 logger.debug("ArtifactDescriptionFactory.extractCurrentDataItems");
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
232
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
233 if (items == null || items.getLength() == 0) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
234 logger.debug("No data items found.");
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
235 return null;
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
236 }
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
237
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
238 int count = items.getLength();
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
239
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
240 List<DataItem> dataItems = new ArrayList<DataItem>(count);
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
241
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
242 for (int i = 0; i < count; i++) {
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
243 Node item = items.item(i);
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
244 String label = ClientProtocolUtils.getLabel(item);
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
245 String value = ClientProtocolUtils.getValue(item);
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
246
565
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
247 double[] mmQ = extractMinMaxQValues(item);
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
248 double[] mmW = extractMinMaxWValues(item);
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
249
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
250 if (mmQ != null || mmW != null) {
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
251 dataItems.add(new WQDataItem(label, null, value, mmQ, mmW));
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
252 }
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
253 else {
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
254 dataItems.add(new DefaultDataItem(label, null, value));
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
255 }
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
256 }
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
257
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
258 return (DataItem[]) dataItems.toArray(new DataItem[count]);
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
259 }
22
a85bac235069 Implemented code to parse the UIProvider that should be used for a current state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 16
diff changeset
260
a85bac235069 Implemented code to parse the UIProvider that should be used for a current state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 16
diff changeset
261
565
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
262 protected static double[] extractMinMaxQValues(Node item) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
263 logger.debug("ArtifactDescriptionFactory.extractMinMaxQValues");
565
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
264
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
265 if (item == null) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
266 logger.debug("This node is empty - no min/max Q values.");
565
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
267 return null;
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
268 }
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
269
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
270 Node node = (Node) XMLUtils.xpath(
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
271 item,
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
272 "art:range[@art:type='Q']",
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
273 XPathConstants.NODE,
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
274 ArtifactNamespaceContext.INSTANCE);
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
275
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
276 if (node == null) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
277 logger.debug("No min/max Q values found.");
565
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
278 return null;
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
279 }
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
280
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
281 return extractMinMaxValues(node);
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
282 }
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
283
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
284
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
285 protected static double[] extractMinMaxWValues(Node item) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
286 logger.debug("ArtifactDescriptionFactory.extractMinMaxWValues");
565
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
287
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
288 if (item == null) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
289 logger.debug("This node is empty - no min/max W values.");
565
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
290 return null;
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
291 }
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
292
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
293 Node node = (Node) XMLUtils.xpath(
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
294 item,
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
295 "art:range[@art:type='W']",
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
296 XPathConstants.NODE,
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
297 ArtifactNamespaceContext.INSTANCE);
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
298
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
299 if (node == null) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
300 logger.debug("No min/max W values found.");
565
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
301 return null;
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
302 }
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
303
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
304 return extractMinMaxValues(node);
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
305 }
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
306
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
307
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
308 protected static double[] extractMinMaxValues(Node node) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
309 logger.debug("ArtifactDescriptionFactory.extractMinMaxValues");
565
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
310
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
311 String minStr = XMLUtils.xpathString(
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
312 node, "art:min/text()", ArtifactNamespaceContext.INSTANCE);
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
313
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
314 String maxStr = XMLUtils.xpathString(
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
315 node, "art:max/text()", ArtifactNamespaceContext.INSTANCE);
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
316
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
317 if (maxStr == null || minStr == null) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
318 logger.debug("No min/max values found.");
565
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
319 return null;
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
320 }
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
321
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
322 try {
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
323 double min = Double.valueOf(minStr);
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
324 double max = Double.valueOf(maxStr);
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
325
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
326 return new double[] { min, max };
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
327 }
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
328 catch (NumberFormatException nfe) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
329 logger.debug("Error while parsing min/max values.");
565
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
330 }
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
331
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
332 return null;
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
333 }
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
334
a078ba1c139d Introduced a client side input validation for the adapted WQ panel.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 515
diff changeset
335
22
a85bac235069 Implemented code to parse the UIProvider that should be used for a current state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 16
diff changeset
336 /**
34
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
337 * This method extracts the data objects from the data node of the static ui
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
338 * part of the DESCRIBE document.
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
339 *
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
340 * @param staticNode The static ui node of the DESCRIBE.
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
341 *
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
342 * @return the DataList objects.
34
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
343 */
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
344 protected static DataList[] extractOldData(Node staticNode) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
345 logger.debug("ArtifactDescriptionFactory.extractOldData()");
34
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
346
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
347 NodeList stateNodes = (NodeList) XMLUtils.xpath(
34
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
348 staticNode,
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
349 XPATH_STATIC_STATE_NODE,
34
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
350 XPathConstants.NODESET,
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
351 ArtifactNamespaceContext.INSTANCE);
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
352
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
353 if (stateNodes == null || stateNodes.getLength() == 0) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
354 logger.debug("No old items found.");
34
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
355 return null;
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
356 }
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
357
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
358 int count = stateNodes.getLength();
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
359 DataList[] data = new DataList[count];
34
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
360
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
361 for (int i = 0; i < count; i++) {
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
362 Node tmp = stateNodes.item(i);
34
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
363
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
364 String name = XMLUtils.xpathString(
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
365 tmp, "@art:name", ArtifactNamespaceContext.INSTANCE);
52
1d0be51ab93b The DataList has a label now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 51
diff changeset
366 String uiprovider = XMLUtils.xpathString(
1d0be51ab93b The DataList has a label now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 51
diff changeset
367 tmp, "@art:uiprovider", ArtifactNamespaceContext.INSTANCE);
1d0be51ab93b The DataList has a label now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 51
diff changeset
368 String label = XMLUtils.xpathString(
1d0be51ab93b The DataList has a label now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 51
diff changeset
369 tmp, "@art:label", ArtifactNamespaceContext.INSTANCE);
34
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
370
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
371 NodeList dataNodes = (NodeList) XMLUtils.xpath(
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
372 tmp,
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
373 XPATH_STATIC_DATA_NODE,
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
374 XPathConstants.NODESET,
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
375 ArtifactNamespaceContext.INSTANCE);
34
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
376
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
377 if (dataNodes == null || dataNodes.getLength() == 0) {
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
378 continue;
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
379 }
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
380
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
381 int size = dataNodes.getLength();
52
1d0be51ab93b The DataList has a label now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 51
diff changeset
382 DataList list = new DataList(name, size, uiprovider, label);
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
383
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
384 for (int j = 0; j < size; j++) {
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
385 Node dataNode = dataNodes.item(j);
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
386
1571
1227878665b5 Introduced a DataFactory that should be used to create new Data instances.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1566
diff changeset
387 list.add(DataFactory.createDataFromElement((Element) dataNode));
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
388
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
389 data[i] = list;
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
390 }
34
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
391 }
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
392
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
393 return data;
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
394 }
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
395
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
396
bf84bcd4e11b Parse static data from DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 32
diff changeset
397 /**
22
a85bac235069 Implemented code to parse the UIProvider that should be used for a current state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 16
diff changeset
398 * This method extracts the UIProvider specified by the data node.
a85bac235069 Implemented code to parse the UIProvider that should be used for a current state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 16
diff changeset
399 *
a85bac235069 Implemented code to parse the UIProvider that should be used for a current state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 16
diff changeset
400 * @param data The data node.
a85bac235069 Implemented code to parse the UIProvider that should be used for a current state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 16
diff changeset
401 *
a85bac235069 Implemented code to parse the UIProvider that should be used for a current state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 16
diff changeset
402 * @return the UIProvider that is specified in the data node.
a85bac235069 Implemented code to parse the UIProvider that should be used for a current state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 16
diff changeset
403 */
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
404 protected static String extractUIProvider(Node ui) {
22
a85bac235069 Implemented code to parse the UIProvider that should be used for a current state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 16
diff changeset
405 return (String) XMLUtils.xpath(
51
a2923d63f530 Introduced a data structure DataList to manage to list of Data objects of a single state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 37
diff changeset
406 ui,
22
a85bac235069 Implemented code to parse the UIProvider that should be used for a current state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 16
diff changeset
407 XPATH_UIPROVIDER,
a85bac235069 Implemented code to parse the UIProvider that should be used for a current state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 16
diff changeset
408 XPathConstants.STRING,
a85bac235069 Implemented code to parse the UIProvider that should be used for a current state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 16
diff changeset
409 ArtifactNamespaceContext.INSTANCE);
a85bac235069 Implemented code to parse the UIProvider that should be used for a current state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 16
diff changeset
410 }
32
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
411
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
412
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
413 /**
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
414 * This method extracts the reachable states of the current artifact.
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
415 *
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
416 * @param reachable The reachable states node.
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
417 *
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
418 * @return an array with identifiers of reachable states.
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
419 */
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
420 protected static String[] extractReachableStates(Node reachable) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
421 logger.debug("ArtifactDescriptionFactory.extractReachableStates()");
32
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
422
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
423 NodeList list = (NodeList) XMLUtils.xpath(
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
424 reachable,
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
425 XPATH_REACHABLE_STATE,
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
426 XPathConstants.NODESET,
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
427 ArtifactNamespaceContext.INSTANCE);
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
428
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
429 if (list == null || list.getLength() == 0) {
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
430 return null;
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
431 }
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
432
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
433 int count = list.getLength();
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
434
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
435 String[] states = new String[count];
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
436
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
437 for (int i = 0; i < count; i++) {
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
438 Node state = list.item(i);
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
439
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
440 String name = XMLUtils.xpathString(
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
441 state, "@art:name", ArtifactNamespaceContext.INSTANCE);
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
442
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
443 states[i] = name;
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
444 }
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
445
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
446 return states;
88c530c25968 Added a service for the ADVANCE operation and a service that bundles FEED and ADVANCE in a single service.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 22
diff changeset
447 }
65
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
448
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
449
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
450 /**
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
451 * This method extract available output modes of the the current artifact.
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
452 *
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
453 * @param outputs A list of nodes that contain information about output
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
454 * modes.
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
455 *
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
456 * @return an array of Output modes.
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
457 */
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
458 protected static OutputMode[] extractOutputModes(NodeList outputs) {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
459 logger.debug("ArtifactDescriptionFactory.extractOutputModes");
65
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
460
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
461 if (outputs == null || outputs.getLength() == 0) {
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
462 return null;
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
463 }
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
464
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
465 int size = outputs.getLength();
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
466
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
467 List<OutputMode> outs = new ArrayList<OutputMode>(size);
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
468
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
469 for (int i = 0; i < size; i++) {
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
470 Node out = outputs.item(i);
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
471
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
472 String name = XMLUtils.xpathString(
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
473 out, "@art:name", ArtifactNamespaceContext.INSTANCE);
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
474 String desc = XMLUtils.xpathString(
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
475 out, "@art:description", ArtifactNamespaceContext.INSTANCE);
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
476 String mimeType = XMLUtils.xpathString(
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
477 out, "@art:mime-type", ArtifactNamespaceContext.INSTANCE);
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
478
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
479 if (name != null) {
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
480 outs.add(new DefaultOutputMode(name, desc, mimeType));
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
481 }
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
482 else {
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
483 logger.debug("Found an invalid output mode.");
65
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
484 }
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
485 }
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
486
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
487 return (OutputMode[]) outs.toArray(new OutputMode[size]);
8f719fa1a691 The output modes of an artifact are extracted from DESCRIBE document and put into the ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 61
diff changeset
488 }
803
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
489
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
490
807
6f65e70fa11d Repaired broken recommendation parsing from Artifact's DESCRIBE document (which structure has changed).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
491 protected static Recommendation[] extractRecommendedArtifacts(Document doc){
1367
ab8eb2f544f2 Replaced stdout and stderr logging with log4j loggers in server classes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 839
diff changeset
492 logger.debug("ArtifactDescriptionFactory.extractRecommendedArtifacts.");
803
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
493
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
494 NodeList list = (NodeList) XMLUtils.xpath(
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
495 doc,
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
496 XPATH_RECOMMENDED_ARTIFACTS,
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
497 XPathConstants.NODESET,
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
498 ArtifactNamespaceContext.INSTANCE);
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
499
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
500 int num = list != null ? list.getLength() : 0;
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
501
807
6f65e70fa11d Repaired broken recommendation parsing from Artifact's DESCRIBE document (which structure has changed).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
502 Recommendation[] rec = new Recommendation[num];
803
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
503
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
504 for (int i = 0; i < num; i++) {
807
6f65e70fa11d Repaired broken recommendation parsing from Artifact's DESCRIBE document (which structure has changed).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
505 Element e = (Element) list.item(i);
6f65e70fa11d Repaired broken recommendation parsing from Artifact's DESCRIBE document (which structure has changed).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
506 String factory = e.getAttribute("factory");
836
0fe456332785 Datacage: s/db-ids/ids/g to unify system and user specific loading.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 808
diff changeset
507 String index = e.getAttribute("ids");
803
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
508
807
6f65e70fa11d Repaired broken recommendation parsing from Artifact's DESCRIBE document (which structure has changed).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
509 if (factory != null && factory.length() > 0) {
839
6a1cd38e6e18 Made Recommendation a class for direct use.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 836
diff changeset
510 rec[i] = new Recommendation(factory, index);
803
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
511 }
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
512 }
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
513
807
6f65e70fa11d Repaired broken recommendation parsing from Artifact's DESCRIBE document (which structure has changed).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 803
diff changeset
514 return rec;
803
653ae84533e7 Read/create recommended Artifacts and add them to the current Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 565
diff changeset
515 }
16
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
516 }
f8a5f2c5e2b7 The DESCRIBE document returned by the artifact server is parsed after calling create() of the artifact service and a new Artifact is created with an ArtifactDescription that contains the UUID, HASH, und the current Data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
517 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org