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 :

http://dive4elements.wald.intevation.org