annotate artifacts/src/main/java/org/dive4elements/river/artifacts/transitions/ValueCompareTransition.java @ 5867:59ff03ff48f1

River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
author Sascha L. Teichmann <teichmann@intevation.de>
date Sun, 28 Apr 2013 15:23:01 +0200
parents 4897a58c8746
children af13ceeba52a
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
6 * documentation coming with Dive4Elements River for details.
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4043
diff changeset
9 package org.dive4elements.river.artifacts.transitions;
356
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import javax.xml.xpath.XPathConstants;
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 import org.apache.log4j.Logger;
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import org.w3c.dom.Node;
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4043
diff changeset
17 import org.dive4elements.artifacts.Artifact;
356
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4043
diff changeset
19 import org.dive4elements.artifactdatabase.data.StateData;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4043
diff changeset
20 import org.dive4elements.artifactdatabase.state.State;
356
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4043
diff changeset
22 import org.dive4elements.artifacts.common.utils.XMLUtils;
356
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
24 import org.dive4elements.river.artifacts.D4EArtifact;
356
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27 /**
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 * This transition compares data objects with a <i>equal</i> or <i>notequal</i>
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 * operator.
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 *
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 */
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33 public class ValueCompareTransition extends DefaultTransition {
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 /** The logger that is used in this transition.*/
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 private static Logger log = Logger.getLogger(ValueCompareTransition.class);
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 /** XPath that points to the condition's operator.*/
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 public static final String XPATH_OPERATOR = "condition/@operator";
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 /** XPath that points to the condition's value.*/
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 public static final String XPATH_VALUE = "condition/@value";
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 /** XPath that points to the condition's dataname.*/
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 public static final String XPATH_DATANAME = "condition/@data";
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 /** The value of the 'equal' operator.*/
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 public static final String OPERATOR_EQUAL = "equal";
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 /** The value of the 'not equal' operator.*/
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 public static final String OPERATOR_NOTEQUAL = "notequal";
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 /** The operator.*/
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 protected String operator;
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 /** The value used for comparison.*/
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 protected String value;
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 /** The name of the data used for the comparison.*/
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62 protected String dataname;
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 public ValueCompareTransition() {
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 }
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 public ValueCompareTransition(String from, String to) {
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 super(from, to);
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 }
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74
4043
eb5564662e19 Cosmetics, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 356
diff changeset
75 /** Setup member values from the document. */
356
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 @Override
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77 public void init(Node config) {
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 log.debug("ValueCompareTransition.init");
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 String tmp = (String) XMLUtils.xpath(
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81 config,
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82 XPATH_OPERATOR,
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 XPathConstants.STRING);
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 operator = tmp.trim().toLowerCase();
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86 value = (String) XMLUtils.xpath(
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
87 config,
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88 XPATH_VALUE,
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89 XPathConstants.STRING);
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
90
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
91 dataname = (String) XMLUtils.xpath(
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
92 config,
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
93 XPATH_DATANAME,
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
94 XPathConstants.STRING);
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
95 }
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
96
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
97
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
98 @Override
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
99 public boolean isValid(Artifact artifact, State a, State b) {
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100 log.debug("ValueCompareTransition.isValid");
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
101
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
102 D4EArtifact flysArtifact = (D4EArtifact) artifact;
356
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
103
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
104 StateData dataObj = flysArtifact.getData(dataname);
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
105 String dataVal = dataObj != null ? (String) dataObj.getValue() : "";
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
106
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
107 if (log.isDebugEnabled()) {
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
108 log.debug("Compare settings:");
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
109 log.debug("-- dataname: " + dataname);
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
110 log.debug("-- operator: " + operator);
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
111 log.debug("-- compare value: " + value);
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
112 log.debug("-- state value: " + dataVal);
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
113 }
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
114
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
115 if (operator.equals(OPERATOR_EQUAL)) {
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
116 return value.equals(dataVal);
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
117 }
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
118 else if (operator.equals(OPERATOR_NOTEQUAL)) {
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
119 return !(value.equals(dataVal));
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
120 }
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
121
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
122 log.error("Wrong operator set! No comparison takes place.");
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
123
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124 return false;
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
125 }
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
126 }
22e9574c8b1b Added a new Transition to compare values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
127 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org