Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/WDifferencesState.java @ 1643:ff7bffb7d5f0
Let WDifferences-diagram show more than one difference, if asked to.
flys-artifacts/trunk@2830 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Tue, 27 Sep 2011 09:35:18 +0000 |
parents | b9b47af71564 |
children | 46a2a5dc98b7 |
comparison
equal
deleted
inserted
replaced
1642:6c0b79efd2c9 | 1643:ff7bffb7d5f0 |
---|---|
1 package de.intevation.flys.artifacts.states; | 1 package de.intevation.flys.artifacts.states; |
2 | 2 |
3 import java.util.ArrayList; | |
3 import java.util.List; | 4 import java.util.List; |
4 | 5 |
5 import org.apache.log4j.Logger; | 6 import org.apache.log4j.Logger; |
6 | 7 |
8 import de.intevation.artifactdatabase.state.Facet; | |
9 import de.intevation.artifactdatabase.data.StateData; | |
10 | |
7 import de.intevation.artifacts.CallContext; | 11 import de.intevation.artifacts.CallContext; |
8 | |
9 import de.intevation.artifactdatabase.state.Facet; | |
10 | |
11 import de.intevation.artifacts.Artifact; | 12 import de.intevation.artifacts.Artifact; |
12 import de.intevation.flys.artifacts.FLYSArtifact; | 13 import de.intevation.flys.artifacts.FLYSArtifact; |
13 import de.intevation.flys.artifacts.WINFOArtifact; | 14 import de.intevation.flys.artifacts.WINFOArtifact; |
14 | 15 |
15 import de.intevation.flys.artifacts.math.WKmsOperation; | 16 import de.intevation.flys.artifacts.math.WKmsOperation; |
16 | 17 |
18 import de.intevation.flys.artifacts.model.CalculationResult; | |
19 import de.intevation.flys.artifacts.model.DataFacet; | |
20 import de.intevation.flys.artifacts.model.DifferenceCurveFacet; | |
17 import de.intevation.flys.artifacts.model.FacetTypes; | 21 import de.intevation.flys.artifacts.model.FacetTypes; |
22 import de.intevation.flys.artifacts.model.WaterlevelFacet; | |
18 import de.intevation.flys.artifacts.model.WKms; | 23 import de.intevation.flys.artifacts.model.WKms; |
19 import de.intevation.flys.artifacts.model.WQKms; | 24 import de.intevation.flys.artifacts.model.WQKms; |
20 | |
21 import de.intevation.flys.artifacts.model.DataFacet; | |
22 import de.intevation.artifactdatabase.data.StateData; | |
23 | 25 |
24 import de.intevation.flys.utils.FLYSUtils; | 26 import de.intevation.flys.utils.FLYSUtils; |
25 | 27 |
26 | 28 |
27 public class WDifferencesState | 29 public class WDifferencesState |
59 | 61 |
60 return true; | 62 return true; |
61 } | 63 } |
62 | 64 |
63 | 65 |
64 | 66 /** |
67 * Return List of WKms that are difference of pairs. | |
68 */ | |
65 @Override | 69 @Override |
66 public Object computeAdvance( | 70 public Object computeAdvance( |
67 FLYSArtifact artifact, | 71 FLYSArtifact artifact, |
68 String hash, | 72 String hash, |
69 CallContext context, | 73 CallContext context, |
88 if (datas.length < 2) { | 92 if (datas.length < 2) { |
89 // TODO crash with style | 93 // TODO crash with style |
90 ; | 94 ; |
91 } | 95 } |
92 | 96 |
93 WKms wkms = null; | 97 List<WKms> wkmss = new ArrayList<WKms>(); |
94 | 98 |
95 for(int i = 0; i < datas.length /2; i++) { | 99 for(int i = 0; i < datas.length /2; i++) { |
96 String uuid1 = WaterlevelSelectState.strip(datas[i+0]).split(";")[0]; | 100 String uuid1 = WaterlevelSelectState.strip(datas[i+0]).split(";")[0]; |
97 String uuid2 = WaterlevelSelectState.strip(datas[i+1]).split(";")[0]; | 101 String uuid2 = WaterlevelSelectState.strip(datas[i+1]).split(";")[0]; |
98 | 102 |
108 } | 112 } |
109 if (flys2 == null) { | 113 if (flys2 == null) { |
110 logger.warn("One of the artifacts (2) for diff calculation could not be loaded"); | 114 logger.warn("One of the artifacts (2) for diff calculation could not be loaded"); |
111 } | 115 } |
112 // TODO: Issue of multiple results in calculation | 116 // TODO: Issue of multiple results in calculation |
113 //WKms wkms = null; | |
114 String facetName = "diff ()"; | 117 String facetName = "diff ()"; |
115 | 118 |
116 if (flys1 != null && flys2 != null) { | 119 if (flys1 != null && flys2 != null) { |
117 // TODO Also check size. | 120 // TODO Also check size. |
118 // TODO Also need index of wqkms. | 121 // TODO Also need index of wqkms. |
119 WQKms[] minuend = (WQKms[]) flys1.getWaterlevelData().getData(); | 122 WQKms[] minuend = (WQKms[]) flys1.getWaterlevelData(). |
120 WQKms[] subtrahend = (WQKms[]) flys2.getWaterlevelData().getData(); | 123 getData(); |
124 WQKms[] subtrahend = (WQKms[]) flys2.getWaterlevelData(). | |
125 getData(); | |
121 | 126 |
122 if (datas.length > 2) { | 127 if (datas.length > 2) { |
123 logger.error("Cannot keep more than one calculation."); | 128 logger.error("Cannot keep more than one calculation."); |
124 } | 129 } |
125 wkms = WKmsOperation.SUBTRACTION.operate(minuend[0], subtrahend[0]); | 130 facetName = "W (" + minuend[0].getName() + ") - W (" + subtrahend[0].getName() + ")"; |
126 facetName = "W ("+minuend[0].getName() + ") - W (" + subtrahend[0].getName()+")"; | 131 WKms wkms = WKmsOperation.SUBTRACTION.operate(minuend[0], subtrahend[0]); |
132 wkms.setName(facetName); | |
133 wkmss.add(wkms); | |
127 logger.debug("WKMSSubtraction happened"); | 134 logger.debug("WKMSSubtraction happened"); |
128 } | 135 } |
129 | 136 |
130 if (facets != null) { | 137 if (facets != null) { |
131 // TODO: pass computetype and state id. | 138 // TODO: pass computetype and state id. |
132 //, ComputeType.ADVANCE, getID(), hash)); | 139 //, ComputeType.ADVANCE, getID(), hash)); |
133 facets.add(new DataFacet(W_DIFFERENCES, facetName)); | 140 //facets.add(new DataFacet(W_DIFFERENCES, facetName)); |
141 facets.add(new DifferenceCurveFacet(i, W_DIFFERENCES, facetName, | |
142 ComputeType.ADVANCE, id, hash)); | |
143 //facets.add(new WaterlevelFacet | |
134 facets.add(new DataFacet(CSV, "CSV data")); | 144 facets.add(new DataFacet(CSV, "CSV data")); |
135 } | 145 } |
136 else { | 146 else { |
137 logger.debug("Not adding facets in WDifferencesState."); | 147 logger.debug("Not adding facets in WDifferencesState."); |
138 } | 148 } |
139 } | 149 } |
140 | 150 |
141 return wkms; | 151 CalculationResult result = new CalculationResult(); |
152 WKms[] diffs = wkmss.toArray(new WKms[wkmss.size()]); | |
153 result.setData(diffs); | |
154 return result; | |
142 } | 155 } |
143 } | 156 } |
144 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : | 157 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |