annotate artifacts/src/main/java/org/dive4elements/river/artifacts/states/WDifferencesState.java @ 7167:2fd238b681a9

Add debug output triggered by debugging the last commit
author Andre Heinecke <aheinecke@intevation.de>
date Thu, 26 Sep 2013 12:22:01 +0200
parents 6205fe683ac7
children 640342d9ab8a
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 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
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
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
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: 4054
diff changeset
9 package org.dive4elements.river.artifacts.states;
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
10
1643
ff7bffb7d5f0 Let WDifferences-diagram show more than one difference, if asked to.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1626
diff changeset
11 import java.util.ArrayList;
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
12 import java.util.List;
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
13
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
14 import org.apache.log4j.Logger;
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
15
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
16 import org.dive4elements.artifactdatabase.state.Facet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
17 import org.dive4elements.artifactdatabase.data.StateData;
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
18
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
19 import org.dive4elements.artifacts.CallContext;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
20 import org.dive4elements.artifacts.Artifact;
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
21 import org.dive4elements.river.artifacts.ChartArtifact;
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
22 import org.dive4elements.river.artifacts.D4EArtifact;
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
23 import org.dive4elements.river.artifacts.FixationArtifact;
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
24 import org.dive4elements.river.artifacts.MINFOArtifact;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
25 import org.dive4elements.river.artifacts.StaticWKmsArtifact;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
26 import org.dive4elements.river.artifacts.WINFOArtifact;
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
27
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
28 import org.dive4elements.river.artifacts.math.WKmsOperation;
2136
3a5ef4ac8e0f 'New Chart' for w-differences curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1886
diff changeset
29
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
30 import org.dive4elements.river.artifacts.model.CalculationResult;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
31 import org.dive4elements.river.artifacts.model.DataFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
32 import org.dive4elements.river.artifacts.model.DifferenceCurveFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
33 import org.dive4elements.river.artifacts.model.EmptyFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
34 import org.dive4elements.river.artifacts.model.FacetTypes;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
35 import org.dive4elements.river.artifacts.model.WKms;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
36 import org.dive4elements.river.artifacts.model.WQKms;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
37
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
38 import org.dive4elements.river.artifacts.model.fixings.FixRealizingResult;
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
39
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
40 import org.dive4elements.river.utils.RiverUtils;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
41 import org.dive4elements.river.utils.StringUtil;
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
42
6573
7d86ed4537d9 Cosmetics, doc, obsolete import removal.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
43 /** State of a WINFOArtifact to get differences of data of other artifacts. */
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
44 public class WDifferencesState
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
45 extends DefaultState
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
46 implements FacetTypes
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
47 {
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
48 /** The logger that is used in this state. */
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
49 private static Logger logger = Logger.getLogger(WDifferencesState.class);
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
50
1173
2490d6ef394e Extended WDifferences bracnh of WINFO to have calculation in dedicated,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1161
diff changeset
51
2490d6ef394e Extended WDifferences bracnh of WINFO to have calculation in dedicated,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1161
diff changeset
52 /** Specify to display nothing (this is kind of a "final" state). */
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
53 @Override
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
54 protected String getUIProvider() {
1173
2490d6ef394e Extended WDifferences bracnh of WINFO to have calculation in dedicated,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1161
diff changeset
55 return "noinput";
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
56 }
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
57
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
58
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
59 @Override
1183
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
60 public boolean validate(Artifact artifact)
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
61 throws IllegalArgumentException
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
62 {
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
63 D4EArtifact flys = (D4EArtifact) artifact;
7029
a3d4153afb16 issue1470: Make validate of WDifferencesState return true if in "new chart".
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6618
diff changeset
64 if (artifact instanceof ChartArtifact) {
a3d4153afb16 issue1470: Make validate of WDifferencesState return true if in "new chart".
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6618
diff changeset
65 return true;
a3d4153afb16 issue1470: Make validate of WDifferencesState return true if in "new chart".
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6618
diff changeset
66 }
1183
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
67
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
68 StateData data = flys.getData("diffids");
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
69
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
70 if (data == null) {
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
71 throw new IllegalArgumentException("diffids is empty");
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
72 }
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
73
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
74 // TODO: Also validate format.
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
75
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
76 return true;
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
77 }
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
78
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
79
3122
721298eeb694 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3076
diff changeset
80 /**
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
81 * Access the data (wkms) of an artifact, coded in mingle.
3122
721298eeb694 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3076
diff changeset
82 */
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
83 protected WKms getWKms(String mingle, CallContext context) {
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
84 logger.debug("WDifferencesState.getWKms " + mingle);
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
85 String[] def = mingle.split(";");
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
86 String uuid = def[0];
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
87 String name = def[1];
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
88 int idx = Integer.parseInt(def[2]);
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
89
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
90 if (name.startsWith("staticwkms")) {
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
91 StaticWKmsArtifact staticWKms =
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
92 (StaticWKmsArtifact) RiverUtils.getArtifact(
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
93 uuid,
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
94 context);
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
95 logger.debug("WDifferencesState obtain data from StaticWKms");
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
96 WKms wkms = staticWKms.getWKms(idx);
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
97 if (wkms == null)
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
98 logger.error("No WKms from artifact.");
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
99 return wkms;
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
100 }
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2180
diff changeset
101
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
102 D4EArtifact d4eArtifact = RiverUtils.getArtifact(
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
103 uuid,
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
104 context);
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
105
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
106 if (d4eArtifact == null) {
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
107 logger.warn("One of the artifacts (1) for diff calculation could not be loaded");
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
108 return null;
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
109 }
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
110
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
111 if (d4eArtifact instanceof WINFOArtifact) {
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
112 logger.debug("Get WKms from WINFOArtifact");
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
113 WINFOArtifact flys = (WINFOArtifact) d4eArtifact;
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
114
6618
e8e76d50d119 issue1399: Use WKms instead of WQKms object, as W-Difference artifact themselves
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6582
diff changeset
115 WKms[] wkms = (WKms[]) flys.getWaterlevelData(context).
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
116 getData();
6618
e8e76d50d119 issue1399: Use WKms instead of WQKms object, as W-Difference artifact themselves
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6582
diff changeset
117 if (wkms == null || wkms.length == 0) {
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
118 logger.warn("no waterlevels in artifact");
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
119 }
6618
e8e76d50d119 issue1399: Use WKms instead of WQKms object, as W-Difference artifact themselves
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6582
diff changeset
120 else if (wkms.length < idx+1) {
e8e76d50d119 issue1399: Use WKms instead of WQKms object, as W-Difference artifact themselves
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6582
diff changeset
121 logger.warn("Not enough waterlevels in artifact.");
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
122 return new WQKms();
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
123 }
6618
e8e76d50d119 issue1399: Use WKms instead of WQKms object, as W-Difference artifact themselves
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6582
diff changeset
124 return wkms[idx];
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
125 }
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
126 else if (d4eArtifact instanceof MINFOArtifact) {
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
127 logger.debug("Get WKms from MINFOArtifact");
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
128 CalculationResult r = (CalculationResult)
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
129 d4eArtifact.compute(context, ComputeType.ADVANCE, false);
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
130 }
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
131 else if (d4eArtifact instanceof FixationArtifact) {
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
132 logger.debug ("Get WKms from FixationArtifact.");
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
133 CalculationResult r = (CalculationResult)
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
134 d4eArtifact.compute(context, ComputeType.ADVANCE, false);
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
135 FixRealizingResult frR = (FixRealizingResult) r.getData();
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
136 return frR.getWQKms()[idx];
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
137 }
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
138
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
139 logger.error("Do not know how to handle (getWKms) minuend/subtrahend");
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
140 return null;
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
141 }
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
142
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
143
1643
ff7bffb7d5f0 Let WDifferences-diagram show more than one difference, if asked to.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1626
diff changeset
144 /**
1652
46a2a5dc98b7 In W-Difference-calculation, respect indices of selected facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1643
diff changeset
145 * Return CalculationResult with Array of WKms that are difference of
46a2a5dc98b7 In W-Difference-calculation, respect indices of selected facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1643
diff changeset
146 * Waterlevels. Add respective facets (DifferencesCurveFacet, DataFacet).
1643
ff7bffb7d5f0 Let WDifferences-diagram show more than one difference, if asked to.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1626
diff changeset
147 */
1183
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
148 @Override
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
149 public Object computeAdvance(
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
150 D4EArtifact artifact,
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
151 String hash,
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
152 CallContext context,
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
153 List<Facet> facets,
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
154 Object old
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
155 ) {
2136
3a5ef4ac8e0f 'New Chart' for w-differences curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1886
diff changeset
156 if (artifact instanceof ChartArtifact) {
3a5ef4ac8e0f 'New Chart' for w-differences curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1886
diff changeset
157 ChartArtifact chart = (ChartArtifact)artifact;
3a5ef4ac8e0f 'New Chart' for w-differences curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1886
diff changeset
158 facets.add(new EmptyFacet());
3a5ef4ac8e0f 'New Chart' for w-differences curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1886
diff changeset
159 return null;
3a5ef4ac8e0f 'New Chart' for w-differences curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1886
diff changeset
160 }
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
161 WINFOArtifact winfo = (WINFOArtifact) artifact;
1173
2490d6ef394e Extended WDifferences bracnh of WINFO to have calculation in dedicated,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1161
diff changeset
162 String id = getID();
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
163
1183
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
164 // Load the Artifacts/facets that we want to subtract and display.
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
165 // Expected format is:
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
166 // [42537f1e-3522-42ef-8968-635b03d8e9c6;longitudinal_section.w;0]#[1231f2-....]
1661
a890bf077de5 Use StringUtil.wWrap , fix wrong loop, minor refac and cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1655
diff changeset
167 String diffids = winfo.getDataAsString("diffids");
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
168 logger.debug("WDifferencesState has: " + diffids);
1661
a890bf077de5 Use StringUtil.wWrap , fix wrong loop, minor refac and cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1655
diff changeset
169 String datas[] = diffids.split("#");
1183
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
170
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
171 // Validate the Data-Strings.
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
172 for (String s: datas) {
4054
102050c4fc00 fix issue909: strange validation code. be fearles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3122
diff changeset
173 if (!WaterlevelSelectState.isValueValid(s)) {
1183
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
174 // TODO: escalate.
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
175 }
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
176 }
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
177
1626
b9b47af71564 Preparations for ability to display multiple differences in one plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
178 if (datas.length < 2) {
1183
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
179 // TODO crash with style
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
180 }
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
181
1643
ff7bffb7d5f0 Let WDifferences-diagram show more than one difference, if asked to.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1626
diff changeset
182 List<WKms> wkmss = new ArrayList<WKms>();
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
183
1661
a890bf077de5 Use StringUtil.wWrap , fix wrong loop, minor refac and cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1655
diff changeset
184 for(int i = 0; i < datas.length; i+=2) {
1652
46a2a5dc98b7 In W-Difference-calculation, respect indices of selected facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1643
diff changeset
185 // e.g.:
46a2a5dc98b7 In W-Difference-calculation, respect indices of selected facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1643
diff changeset
186 // 42537f1e-3522-42ef-8968-635b03d8e9c6;longitudinal_section.w;1
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
187 WKms minuendWKms = getWKms(StringUtil.unbracket(datas[i+0]),
1626
b9b47af71564 Preparations for ability to display multiple differences in one plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
188 context);
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
189 WKms subtrahendWKms = getWKms(StringUtil.unbracket(datas[i+1]),
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
190 context);
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
191
1626
b9b47af71564 Preparations for ability to display multiple differences in one plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
192 String facetName = "diff ()";
b9b47af71564 Preparations for ability to display multiple differences in one plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
193
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
194 if (minuendWKms != null && subtrahendWKms != null) {
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2180
diff changeset
195 facetName = StringUtil.wWrap(minuendWKms.getName())
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
196 + " - " + StringUtil.wWrap(subtrahendWKms.getName());
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
197 WKms wkms = WKmsOperation.SUBTRACTION.operate(minuendWKms,
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
198 subtrahendWKms);
1643
ff7bffb7d5f0 Let WDifferences-diagram show more than one difference, if asked to.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1626
diff changeset
199 wkms.setName(facetName);
ff7bffb7d5f0 Let WDifferences-diagram show more than one difference, if asked to.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1626
diff changeset
200 wkmss.add(wkms);
1626
b9b47af71564 Preparations for ability to display multiple differences in one plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
201 logger.debug("WKMSSubtraction happened");
b9b47af71564 Preparations for ability to display multiple differences in one plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
202 }
b9b47af71564 Preparations for ability to display multiple differences in one plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
203 if (facets != null) {
1696
56953439dcae Fixed incorrect indexing of facets when doing multiple (w)differences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1670
diff changeset
204 facets.add(new DifferenceCurveFacet(i/2, W_DIFFERENCES, facetName,
1643
ff7bffb7d5f0 Let WDifferences-diagram show more than one difference, if asked to.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1626
diff changeset
205 ComputeType.ADVANCE, id, hash));
1626
b9b47af71564 Preparations for ability to display multiple differences in one plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
206 }
2180
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2136
diff changeset
207 }
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2136
diff changeset
208
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2136
diff changeset
209 if (facets != null) {
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2136
diff changeset
210 facets.add(new DataFacet(CSV, "CSV data"));
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2136
diff changeset
211 facets.add(new DataFacet(PDF, "PDF data"));
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2136
diff changeset
212 logger.debug("Adding facets in WDifferencesState.");
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2136
diff changeset
213 }
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2136
diff changeset
214 else {
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2136
diff changeset
215 logger.debug("Not adding facets in WDifferencesState.");
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
216 }
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
217
1652
46a2a5dc98b7 In W-Difference-calculation, respect indices of selected facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1643
diff changeset
218 // TODO Evaluate whether null is okay as reports.
1643
ff7bffb7d5f0 Let WDifferences-diagram show more than one difference, if asked to.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1626
diff changeset
219 WKms[] diffs = wkmss.toArray(new WKms[wkmss.size()]);
1652
46a2a5dc98b7 In W-Difference-calculation, respect indices of selected facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1643
diff changeset
220 CalculationResult result = new CalculationResult(diffs, null);
1643
ff7bffb7d5f0 Let WDifferences-diagram show more than one difference, if asked to.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1626
diff changeset
221 return result;
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
222 }
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
223 }
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
224 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org