diff 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
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/SedimentLoadDataCalculate.java	Mon Aug 25 12:18:35 2014 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/SedimentLoadDataCalculate.java	Mon Aug 25 15:56:09 2014 +0200
@@ -28,7 +28,9 @@
 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadLSData;
 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadFacet;
 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadFactory;
-import org.dive4elements.river.artifacts.model.minfo.SedimentLoadResult;
+import org.dive4elements.river.artifacts.model.minfo.SedimentLoadDataResult;
+import org.dive4elements.river.artifacts.model.minfo.SedimentLoadDataResult.Fraction;
+import org.dive4elements.river.artifacts.model.minfo.SedimentLoadDataFacet;
 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadUnknownFacet;
 import org.dive4elements.river.artifacts.resources.Resources;
 import org.dive4elements.river.artifacts.states.DefaultState;
@@ -42,7 +44,7 @@
     private static final long serialVersionUID = 1L;
 
     private static final Logger logger = Logger
-        .getLogger(SedimentLoadCalculate.class);
+        .getLogger(SedimentLoadDataCalculate.class);
 
     public static final String I18N_FACET_SEDIMENTLOAD_COARSE = "facet.sedimentload.coarse";
     public static final String I18N_FACET_SEDIMENTLOAD_SAND = "facet.sedimentload.sand";
@@ -143,10 +145,45 @@
             ? (CalculationResult) old
             : new SedimentLoadDataCalculation().calculate(access);
 
-        if (facets == null || res == null) {
+        SedimentLoadDataResult sdRes;
+
+        if (res == null) {
+            logger.error ("No calculation result.");
+        }
+
+        Object raw = res.getData();
+        if (raw == null) {
+            logger.warn("No result data.");
             return res;
         }
 
+        if (raw instanceof SedimentLoadDataResult) {
+            sdRes = (SedimentLoadDataResult) raw;
+        } else if (raw instanceof SedimentLoadDataCalculation) {
+            SedimentLoadDataCalculation calc = (SedimentLoadDataCalculation) raw;
+            logger.warn ("Problems : " + calc.problemsToString());
+            return calc;
+        } else {
+            logger.error ("Unknown result");
+            return null;
+        }
+
+        int i = 0;
+        for (Fraction fract: sdRes.getFractions()) {
+            logger.debug("Adding facet for fraction: " + fract.getName());
+            newFacets.add(new SedimentLoadDataFacet(i++, fract.getName(),
+                          fract.getUnit(), ComputeType.ADVANCE, id, hash, context));
+        }
+
+        newFacets.add(
+            new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id));
+
+        if (facets != null) {
+            facets.addAll(newFacets);
+        } else {
+            facets = newFacets;
+        }
+
         /* XXX: THIS IS ALL BROKEN
 
         SedimentLoadResult[] results = (SedimentLoadResult[]) res.getData();
@@ -189,10 +226,6 @@
                 hash));
         }
 
-        newFacets.add(
-            new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id));
-
-        facets.addAll(newFacets);
 
         */
 

http://dive4elements.wald.intevation.org