annotate artifacts/src/main/java/org/dive4elements/river/artifacts/states/WDifferencesState.java @ 9425:3f49835a00c3

Extended CrossSectionFacet so it may fetch different data from within the artifact result. Also allows to have acces to the potentially already computed artifact result via its normal computation cache.
author gernotbelger
date Fri, 17 Aug 2018 15:31:02 +0200
parents 6b93a2498e06
children
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;
7792
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
17 import org.dive4elements.artifactdatabase.state.FacetActivity;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
18 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
19
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
20 import org.dive4elements.artifacts.CallContext;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
21 import org.dive4elements.artifacts.Artifact;
8547
04367906f158 (issue1754) Add distantce handling to WINFO differences state
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8546
diff changeset
22 import org.dive4elements.river.artifacts.access.RangeAccess;
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.ChartArtifact;
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
24 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
25 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
26 import org.dive4elements.river.artifacts.MINFOArtifact;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
27 import org.dive4elements.river.artifacts.StaticWKmsArtifact;
8876
23264d1a528f Allow access to staticwqkms data; also allow to acces by km range
gernotbelger
parents: 8860
diff changeset
28 import org.dive4elements.river.artifacts.StaticWQKmsArtifact;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
29 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
30
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
31 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
32
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
33 import org.dive4elements.river.artifacts.model.CalculationResult;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
34 import org.dive4elements.river.artifacts.model.DataFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
35 import org.dive4elements.river.artifacts.model.DifferenceCurveFacet;
7792
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
36 import org.dive4elements.river.artifacts.model.DifferenceCurveFilterFacet;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
37 import org.dive4elements.river.artifacts.model.EmptyFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
38 import org.dive4elements.river.artifacts.model.FacetTypes;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
39 import org.dive4elements.river.artifacts.model.WKms;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
40 import org.dive4elements.river.artifacts.model.WQKms;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4054
diff changeset
41
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
42 import org.dive4elements.river.artifacts.model.fixings.FixRealizingResult;
7792
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
43 import org.dive4elements.river.artifacts.resources.Resources;
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
44
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
45 import org.dive4elements.river.utils.RiverUtils;
8186
a1ceacf15d3a Removed NASTY package clash. We had too org.dive4elements.river.util packages.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7792
diff changeset
46 import org.dive4elements.river.backend.utils.StringUtil;
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
47
6573
7d86ed4537d9 Cosmetics, doc, obsolete import removal.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
48 /** 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
49 public class WDifferencesState
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
50 extends DefaultState
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
51 implements FacetTypes
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
52 {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8186
diff changeset
53 /** The log that is used in this state. */
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8186
diff changeset
54 private static Logger log = Logger.getLogger(WDifferencesState.class);
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
55
7792
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
56 private static final String I18N_DIFFERENCES_FACET_NAME =
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
57 "facet.w_differences";
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
58 private static final String I18N_DIFFERENCES_FACET_NAME_RAW =
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
59 "facet.w_differences.raw";
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
60
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
61 static {
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
62 // Active/deactivate facets.
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
63 FacetActivity.Registry.getInstance().register(
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
64 "winfo",
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
65 new FacetActivity() {
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
66 @Override
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
67 public Boolean isInitialActive(
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
68 Artifact artifact,
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
69 Facet facet,
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
70 String output
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
71 ) {
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
72 String name = facet.getName();
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
73
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
74 if (name.equals(FacetTypes.W_DIFFERENCES)) {
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
75 return Boolean.FALSE;
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
76 }
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
77 return Boolean.TRUE;
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
78 }
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
79 });
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
80 }
1173
2490d6ef394e Extended WDifferences bracnh of WINFO to have calculation in dedicated,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1161
diff changeset
81
2490d6ef394e Extended WDifferences bracnh of WINFO to have calculation in dedicated,
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1161
diff changeset
82 /** 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
83 @Override
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
84 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
85 return "noinput";
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
86 }
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
87
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
88
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
89 @Override
1183
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
90 public boolean validate(Artifact artifact)
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
91 throws IllegalArgumentException
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
92 {
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
93 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
94 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
95 return true;
a3d4153afb16 issue1470: Make validate of WDifferencesState return true if in "new chart".
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6618
diff changeset
96 }
1183
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
97
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
98 StateData data = flys.getData("diffids");
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
99
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
100 if (data == null) {
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
101 throw new IllegalArgumentException("diffids is empty");
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
102 }
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
103
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
104 // TODO: Also validate format.
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
105
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
106 return true;
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
107 }
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
108
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
109
3122
721298eeb694 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3076
diff changeset
110 /**
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
111 * Access the data (wkms) of an artifact, coded in mingle.
3122
721298eeb694 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3076
diff changeset
112 */
8853
8c64617a7991 Some source code comments and fixme's
gernotbelger
parents: 8647
diff changeset
113 // FIXME: meanwhile used by several places outside this context; refactor into separate helper class to access waterlevels
8881
6b93a2498e06 Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents: 8876
diff changeset
114 // FIXME: use org.dive4elements.river.artifacts.states.WaterlevelFetcher instead
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8647
diff changeset
115 public WKms getWKms(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8647
diff changeset
116 String mingle,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8647
diff changeset
117 CallContext context,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8647
diff changeset
118 double from,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8647
diff changeset
119 double to
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8647
diff changeset
120 ) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8186
diff changeset
121 log.debug("WDifferencesState.getWKms " + mingle);
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
122 String[] def = mingle.split(";");
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
123 String uuid = def[0];
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
124 String name = def[1];
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
125 int idx = Integer.parseInt(def[2]);
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
126 D4EArtifact d4eArtifact = RiverUtils.getArtifact(
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
127 uuid,
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
128 context);
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
129
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
130 if (d4eArtifact == null) {
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8647
diff changeset
131 log.warn("One of the artifacts (1) for diff calculation "
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8647
diff changeset
132 + "could not be loaded");
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
133 return null;
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
134 }
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
135
8552
fa57a2cb1dfa (issue1754) Add km filtering for winfo anf fixanal results in difference calculations
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8547
diff changeset
136 WKms retval = null;
8547
04367906f158 (issue1754) Add distantce handling to WINFO differences state
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8546
diff changeset
137 if (d4eArtifact instanceof StaticWKmsArtifact) {
04367906f158 (issue1754) Add distantce handling to WINFO differences state
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8546
diff changeset
138 StaticWKmsArtifact staticWKms = (StaticWKmsArtifact) d4eArtifact;
04367906f158 (issue1754) Add distantce handling to WINFO differences state
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8546
diff changeset
139 log.debug("WDifferencesState obtain data from StaticWKms");
9425
3f49835a00c3 Extended CrossSectionFacet so it may fetch different data from within the artifact result.
gernotbelger
parents: 8881
diff changeset
140 WKms wkms = staticWKms.getWKms(from, to);
8547
04367906f158 (issue1754) Add distantce handling to WINFO differences state
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8546
diff changeset
141 if (wkms == null) {
04367906f158 (issue1754) Add distantce handling to WINFO differences state
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8546
diff changeset
142 log.error("No WKms from Static artifact for this range.");
8876
23264d1a528f Allow access to staticwqkms data; also allow to acces by km range
gernotbelger
parents: 8860
diff changeset
143 // FIXME: why does in error case we return Q's?
23264d1a528f Allow access to staticwqkms data; also allow to acces by km range
gernotbelger
parents: 8860
diff changeset
144 return new WQKms();
23264d1a528f Allow access to staticwqkms data; also allow to acces by km range
gernotbelger
parents: 8860
diff changeset
145 }
23264d1a528f Allow access to staticwqkms data; also allow to acces by km range
gernotbelger
parents: 8860
diff changeset
146 return wkms; /* No need for additional km filtering */
23264d1a528f Allow access to staticwqkms data; also allow to acces by km range
gernotbelger
parents: 8860
diff changeset
147 } else if (d4eArtifact instanceof StaticWQKmsArtifact) {
23264d1a528f Allow access to staticwqkms data; also allow to acces by km range
gernotbelger
parents: 8860
diff changeset
148 final StaticWQKmsArtifact staticWKms = (StaticWQKmsArtifact) d4eArtifact;
23264d1a528f Allow access to staticwqkms data; also allow to acces by km range
gernotbelger
parents: 8860
diff changeset
149 log.debug("WDifferencesState obtain data from StaticWQKms");
23264d1a528f Allow access to staticwqkms data; also allow to acces by km range
gernotbelger
parents: 8860
diff changeset
150 WQKms wkms = staticWKms.getWQKms(from, to);
23264d1a528f Allow access to staticwqkms data; also allow to acces by km range
gernotbelger
parents: 8860
diff changeset
151 if (wkms == null) {
23264d1a528f Allow access to staticwqkms data; also allow to acces by km range
gernotbelger
parents: 8860
diff changeset
152 log.error("No WKms from Static artifact for this range.");
8547
04367906f158 (issue1754) Add distantce handling to WINFO differences state
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8546
diff changeset
153 return new WQKms();
04367906f158 (issue1754) Add distantce handling to WINFO differences state
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8546
diff changeset
154 }
8552
fa57a2cb1dfa (issue1754) Add km filtering for winfo anf fixanal results in difference calculations
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8547
diff changeset
155 return wkms; /* No need for additional km filtering */
8547
04367906f158 (issue1754) Add distantce handling to WINFO differences state
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8546
diff changeset
156 } else if (d4eArtifact instanceof WINFOArtifact) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8186
diff changeset
157 log.debug("Get WKms from WINFOArtifact");
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
158 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
159
6618
e8e76d50d119 issue1399: Use WKms instead of WQKms object, as W-Difference artifact themselves
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6582
diff changeset
160 WKms[] wkms = (WKms[]) flys.getWaterlevelData(context).
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
161 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
162 if (wkms == null || wkms.length == 0) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8186
diff changeset
163 log.warn("no waterlevels in artifact");
8881
6b93a2498e06 Slightly better abstraction for extraction waterlevels via datacage
gernotbelger
parents: 8876
diff changeset
164 // FIXME: fall through will lead to exception...
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
165 }
6618
e8e76d50d119 issue1399: Use WKms instead of WQKms object, as W-Difference artifact themselves
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6582
diff changeset
166 else if (wkms.length < idx+1) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8186
diff changeset
167 log.warn("Not enough waterlevels in artifact.");
8552
fa57a2cb1dfa (issue1754) Add km filtering for winfo anf fixanal results in difference calculations
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8547
diff changeset
168 retval = new WQKms();
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
169 }
8552
fa57a2cb1dfa (issue1754) Add km filtering for winfo anf fixanal results in difference calculations
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8547
diff changeset
170 retval = wkms[idx];
8547
04367906f158 (issue1754) Add distantce handling to WINFO differences state
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8546
diff changeset
171 } else if (d4eArtifact instanceof MINFOArtifact) {
8546
522f72f43ae6 Warn for not implemented difference handling of minfo artifacts.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8202
diff changeset
172 log.warn("Get WKms from MINFOArtifact not implemented!");
522f72f43ae6 Warn for not implemented difference handling of minfo artifacts.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8202
diff changeset
173 // CalculationResult r = (CalculationResult)
522f72f43ae6 Warn for not implemented difference handling of minfo artifacts.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8202
diff changeset
174 // d4eArtifact.compute(context, ComputeType.ADVANCE, false);
8547
04367906f158 (issue1754) Add distantce handling to WINFO differences state
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8546
diff changeset
175 } else if (d4eArtifact instanceof FixationArtifact) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8186
diff changeset
176 log.debug ("Get WKms from FixationArtifact.");
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
177 CalculationResult r = (CalculationResult)
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
178 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
179 FixRealizingResult frR = (FixRealizingResult) r.getData();
8552
fa57a2cb1dfa (issue1754) Add km filtering for winfo anf fixanal results in difference calculations
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8547
diff changeset
180 retval = frR.getWQKms()[idx];
6582
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
181 }
7216143665d9 issue1394, issue1366: Prepare difference state to handle other artifacts, esp.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6573
diff changeset
182
8552
fa57a2cb1dfa (issue1754) Add km filtering for winfo anf fixanal results in difference calculations
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8547
diff changeset
183
fa57a2cb1dfa (issue1754) Add km filtering for winfo anf fixanal results in difference calculations
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8547
diff changeset
184 if (retval == null) {
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8647
diff changeset
185 log.error(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8647
diff changeset
186 "Do not know how to handle (getWKms) minuend/subtrahend");
8552
fa57a2cb1dfa (issue1754) Add km filtering for winfo anf fixanal results in difference calculations
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8547
diff changeset
187 } else if (!Double.isNaN(from) && !Double.isNaN(to)) {
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8647
diff changeset
188 /* Filter out only relevant data points for calulation results.*/
8552
fa57a2cb1dfa (issue1754) Add km filtering for winfo anf fixanal results in difference calculations
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8547
diff changeset
189 log.debug("Before filter: " + retval.size());
fa57a2cb1dfa (issue1754) Add km filtering for winfo anf fixanal results in difference calculations
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8547
diff changeset
190 retval = retval.filteredKms(from, to);
fa57a2cb1dfa (issue1754) Add km filtering for winfo anf fixanal results in difference calculations
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8547
diff changeset
191 log.debug("After filter: " + retval.size());
fa57a2cb1dfa (issue1754) Add km filtering for winfo anf fixanal results in difference calculations
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8547
diff changeset
192 }
fa57a2cb1dfa (issue1754) Add km filtering for winfo anf fixanal results in difference calculations
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8547
diff changeset
193
fa57a2cb1dfa (issue1754) Add km filtering for winfo anf fixanal results in difference calculations
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8547
diff changeset
194 return retval;
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
195 }
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
196
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
197
1643
ff7bffb7d5f0 Let WDifferences-diagram show more than one difference, if asked to.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1626
diff changeset
198 /**
1652
46a2a5dc98b7 In W-Difference-calculation, respect indices of selected facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1643
diff changeset
199 * 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
200 * 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
201 */
1183
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
202 @Override
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
203 public Object computeAdvance(
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
204 D4EArtifact artifact,
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
205 String hash,
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
206 CallContext context,
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
207 List<Facet> facets,
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
208 Object old
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
209 ) {
2136
3a5ef4ac8e0f 'New Chart' for w-differences curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1886
diff changeset
210 if (artifact instanceof ChartArtifact) {
3a5ef4ac8e0f 'New Chart' for w-differences curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1886
diff changeset
211 ChartArtifact chart = (ChartArtifact)artifact;
3a5ef4ac8e0f 'New Chart' for w-differences curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1886
diff changeset
212 facets.add(new EmptyFacet());
3a5ef4ac8e0f 'New Chart' for w-differences curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1886
diff changeset
213 return null;
3a5ef4ac8e0f 'New Chart' for w-differences curve.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1886
diff changeset
214 }
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
215 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
216 String id = getID();
8547
04367906f158 (issue1754) Add distantce handling to WINFO differences state
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8546
diff changeset
217 RangeAccess rangeAccess = new RangeAccess(artifact);
8647
5f60bd7c4b42 (issue1754) Simplify code to handle a>b cases.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8608
diff changeset
218 double from = rangeAccess.getFrom(true);
5f60bd7c4b42 (issue1754) Simplify code to handle a>b cases.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8608
diff changeset
219 double to = rangeAccess.getTo(true);
1183
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
220 // 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
221 // Expected format is:
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8647
diff changeset
222 //[42537f1e-3522-42ef-8968-635b03d8e9c6;longitudinal_section.w;0]#[...]
1661
a890bf077de5 Use StringUtil.wWrap , fix wrong loop, minor refac and cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1655
diff changeset
223 String diffids = winfo.getDataAsString("diffids");
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8186
diff changeset
224 log.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
225 String datas[] = diffids.split("#");
1183
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
226
8608
0f6f702742b4 (issue1754) Check if start > end and handle this
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8552
diff changeset
227 log.debug("Difference from: " + from + " to: " + to);
0f6f702742b4 (issue1754) Check if start > end and handle this
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8552
diff changeset
228 /* Check if we need to obtain the data in a different order */
1183
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
229 // Validate the Data-Strings.
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
230 for (String s: datas) {
4054
102050c4fc00 fix issue909: strange validation code. be fearles.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3122
diff changeset
231 if (!WaterlevelSelectState.isValueValid(s)) {
1183
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
232 // TODO: escalate.
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
233 }
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
234 }
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
235
1626
b9b47af71564 Preparations for ability to display multiple differences in one plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
236 if (datas.length < 2) {
1183
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
237 // TODO crash with style
9c1cda9e2bc4 Load given artifacts for w-diff calculation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1173
diff changeset
238 }
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
239
1643
ff7bffb7d5f0 Let WDifferences-diagram show more than one difference, if asked to.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1626
diff changeset
240 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
241
1661
a890bf077de5 Use StringUtil.wWrap , fix wrong loop, minor refac and cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1655
diff changeset
242 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
243 // e.g.:
46a2a5dc98b7 In W-Difference-calculation, respect indices of selected facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1643
diff changeset
244 // 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
245 WKms minuendWKms = getWKms(StringUtil.unbracket(datas[i+0]),
8647
5f60bd7c4b42 (issue1754) Simplify code to handle a>b cases.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8608
diff changeset
246 context, from, to);
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
247 WKms subtrahendWKms = getWKms(StringUtil.unbracket(datas[i+1]),
8647
5f60bd7c4b42 (issue1754) Simplify code to handle a>b cases.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8608
diff changeset
248 context, from, to);
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
249
1626
b9b47af71564 Preparations for ability to display multiple differences in one plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
250 String facetName = "diff ()";
7792
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
251 String minName = "min";
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
252 String subName = "sub";
1626
b9b47af71564 Preparations for ability to display multiple differences in one plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
253
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
254 if (minuendWKms != null && subtrahendWKms != null) {
7792
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
255 minName = StringUtil.wWrap(minuendWKms.getName());
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
256 subName = StringUtil.wWrap(subtrahendWKms.getName());
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
257 facetName = minName + " - " + subName;
1732
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
258 WKms wkms = WKmsOperation.SUBTRACTION.operate(minuendWKms,
1a57027286ce Handle StaticWKmsArtifacts in WDifferencesState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1696
diff changeset
259 subtrahendWKms);
1643
ff7bffb7d5f0 Let WDifferences-diagram show more than one difference, if asked to.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1626
diff changeset
260 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
261 wkmss.add(wkms);
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8186
diff changeset
262 log.debug("WKMSSubtraction happened");
1626
b9b47af71564 Preparations for ability to display multiple differences in one plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
263 }
b9b47af71564 Preparations for ability to display multiple differences in one plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
264 if (facets != null) {
7792
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
265 facets.add(new DifferenceCurveFacet(
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
266 i/2,
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
267 W_DIFFERENCES,
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
268 Resources.getMsg(
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
269 context.getMeta(),
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
270 I18N_DIFFERENCES_FACET_NAME_RAW,
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
271 facetName,
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
272 new Object[] { minName, subName }),
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
273 ComputeType.ADVANCE,
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
274 id,
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
275 hash));
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
276 facets.add(new DifferenceCurveFilterFacet(i/2,
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
277 W_DIFFERENCES_FILTERED,
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
278 Resources.getMsg(
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
279 context.getMeta(),
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
280 I18N_DIFFERENCES_FACET_NAME,
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
281 facetName,
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
282 new Object[] { minName, subName }),
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
283 ComputeType.ADVANCE,
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
284 id,
6451970e0562 Add the new difference facet and set facets active/inactive.
Raimund Renkert <rrenkert@intevation.de>
parents: 7697
diff changeset
285 hash));
1626
b9b47af71564 Preparations for ability to display multiple differences in one plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
286 }
2180
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2136
diff changeset
287 }
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2136
diff changeset
288
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2136
diff changeset
289 if (facets != null) {
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2136
diff changeset
290 facets.add(new DataFacet(CSV, "CSV data"));
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2136
diff changeset
291 facets.add(new DataFacet(PDF, "PDF data"));
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8186
diff changeset
292 log.debug("Adding facets in WDifferencesState.");
2180
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2136
diff changeset
293 }
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2136
diff changeset
294 else {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8186
diff changeset
295 log.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
296 }
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
297
1652
46a2a5dc98b7 In W-Difference-calculation, respect indices of selected facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1643
diff changeset
298 // 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
299 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
300 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
301 return result;
1151
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
302 }
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
303 }
08048bd090e6 Added very stubby WDifferences State/OutGenerator for WINFOArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
304 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org