annotate artifacts/src/main/java/org/dive4elements/river/artifacts/states/WDifferencesState.java @ 7697:640342d9ab8a

(issue1649) Remove broken getWKms from RiverUtils and use WDifferencesState instead This was basically duplicated code but only the code in WDifferenceState was maintained and extended. Another RiverUtils function bites the dust.
author Andre Heinecke <aheinecke@intevation.de>
date Mon, 16 Dec 2013 16:24:07 +0100
parents 6205fe683ac7
children 6451970e0562
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 */
7697
640342d9ab8a (issue1649) Remove broken getWKms from RiverUtils and use WDifferencesState instead
Andre Heinecke <aheinecke@intevation.de>
parents: 7030
diff changeset
83 public 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