comparison artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/SedimentLoadDataCalculate.java @ 8125:f01c65261963

(issue1448) Add WIP SedimentLoadDataFacet and use it in calculation. The unit handling is currently just a stub
author Andre Heinecke <andre.heinecke@intevation.de>
date Mon, 25 Aug 2014 15:56:09 +0200
parents 75e62ea0e307
children 353f93d5d9f7
comparison
equal deleted inserted replaced
8124:2c21fd1ade39 8125:f01c65261963
26 import org.dive4elements.river.artifacts.model.ReportFacet; 26 import org.dive4elements.river.artifacts.model.ReportFacet;
27 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadDataCalculation; 27 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadDataCalculation;
28 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadLSData; 28 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadLSData;
29 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadFacet; 29 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadFacet;
30 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadFactory; 30 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadFactory;
31 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadResult; 31 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadDataResult;
32 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadDataResult.Fraction;
33 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadDataFacet;
32 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadUnknownFacet; 34 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadUnknownFacet;
33 import org.dive4elements.river.artifacts.resources.Resources; 35 import org.dive4elements.river.artifacts.resources.Resources;
34 import org.dive4elements.river.artifacts.states.DefaultState; 36 import org.dive4elements.river.artifacts.states.DefaultState;
35 37
36 /** State in which Sediment Load(s) are calculated/retrieved. */ 38 /** State in which Sediment Load(s) are calculated/retrieved. */
40 { 42 {
41 43
42 private static final long serialVersionUID = 1L; 44 private static final long serialVersionUID = 1L;
43 45
44 private static final Logger logger = Logger 46 private static final Logger logger = Logger
45 .getLogger(SedimentLoadCalculate.class); 47 .getLogger(SedimentLoadDataCalculate.class);
46 48
47 public static final String I18N_FACET_SEDIMENTLOAD_COARSE = "facet.sedimentload.coarse"; 49 public static final String I18N_FACET_SEDIMENTLOAD_COARSE = "facet.sedimentload.coarse";
48 public static final String I18N_FACET_SEDIMENTLOAD_SAND = "facet.sedimentload.sand"; 50 public static final String I18N_FACET_SEDIMENTLOAD_SAND = "facet.sedimentload.sand";
49 public static final String I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE = "facet.sedimentload.fine_middle"; 51 public static final String I18N_FACET_SEDIMENTLOAD_FINE_MIDDLE = "facet.sedimentload.fine_middle";
50 public static final String I18N_FACET_SEDIMENTLOAD_SUSPSAND = "facet.sedimentload.susp_sand"; 52 public static final String I18N_FACET_SEDIMENTLOAD_SUSPSAND = "facet.sedimentload.susp_sand";
141 143
142 CalculationResult res = old instanceof CalculationResult 144 CalculationResult res = old instanceof CalculationResult
143 ? (CalculationResult) old 145 ? (CalculationResult) old
144 : new SedimentLoadDataCalculation().calculate(access); 146 : new SedimentLoadDataCalculation().calculate(access);
145 147
146 if (facets == null || res == null) { 148 SedimentLoadDataResult sdRes;
149
150 if (res == null) {
151 logger.error ("No calculation result.");
152 }
153
154 Object raw = res.getData();
155 if (raw == null) {
156 logger.warn("No result data.");
147 return res; 157 return res;
158 }
159
160 if (raw instanceof SedimentLoadDataResult) {
161 sdRes = (SedimentLoadDataResult) raw;
162 } else if (raw instanceof SedimentLoadDataCalculation) {
163 SedimentLoadDataCalculation calc = (SedimentLoadDataCalculation) raw;
164 logger.warn ("Problems : " + calc.problemsToString());
165 return calc;
166 } else {
167 logger.error ("Unknown result");
168 return null;
169 }
170
171 int i = 0;
172 for (Fraction fract: sdRes.getFractions()) {
173 logger.debug("Adding facet for fraction: " + fract.getName());
174 newFacets.add(new SedimentLoadDataFacet(i++, fract.getName(),
175 fract.getUnit(), ComputeType.ADVANCE, id, hash, context));
176 }
177
178 newFacets.add(
179 new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id));
180
181 if (facets != null) {
182 facets.addAll(newFacets);
183 } else {
184 facets = newFacets;
148 } 185 }
149 186
150 /* XXX: THIS IS ALL BROKEN 187 /* XXX: THIS IS ALL BROKEN
151 188
152 SedimentLoadResult[] results = (SedimentLoadResult[]) res.getData(); 189 SedimentLoadResult[] results = (SedimentLoadResult[]) res.getData();
187 ComputeType.ADVANCE, 224 ComputeType.ADVANCE,
188 getID(), 225 getID(),
189 hash)); 226 hash));
190 } 227 }
191 228
192 newFacets.add(
193 new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id));
194
195 facets.addAll(newFacets);
196 229
197 */ 230 */
198 231
199 return res; 232 return res;
200 } 233 }

http://dive4elements.wald.intevation.org