diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/MiddleBedHeight.java @ 2713:b60751cfdd6c

Start MINFO middle bed height calculation in the relevant state and creates facets for chart and csv. flys-artifacts/trunk@4437 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 18 May 2012 09:18:39 +0000
parents cd6bcca17de6
children 250a370c377d
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/MiddleBedHeight.java	Fri May 18 07:03:38 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/MiddleBedHeight.java	Fri May 18 09:18:39 2012 +0000
@@ -1,5 +1,6 @@
 package de.intevation.flys.artifacts.states;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.log4j.Logger;
@@ -9,9 +10,16 @@
 import de.intevation.artifactdatabase.state.Facet;
 
 import de.intevation.flys.artifacts.FLYSArtifact;
+import de.intevation.flys.artifacts.MINFOArtifact;
+import de.intevation.flys.artifacts.model.CalculationResult;
+import de.intevation.flys.artifacts.model.DataFacet;
+import de.intevation.flys.artifacts.model.FacetTypes;
+import de.intevation.flys.artifacts.model.MiddleBedHeightData;
+import de.intevation.flys.artifacts.model.MiddleBedHeightFacet;
+import de.intevation.flys.artifacts.model.MiddleBedHeightCalculation;
 
 
-public class MiddleBedHeight extends DefaultState {
+public class MiddleBedHeight extends DefaultState implements FacetTypes {
 
     private static final Logger logger = Logger.getLogger(MiddleBedHeight.class);
 
@@ -26,9 +34,58 @@
     ) {
         logger.debug("MiddleBedHeight.computeAdvance");
 
-        logger.warn("TODO: Implement MiddleBedHeight.computeAdvance");
+        List<Facet> newFacets = new ArrayList<Facet>();
 
-        return null;
+        CalculationResult res = old instanceof CalculationResult
+            ? (CalculationResult) old
+            : new MiddleBedHeightCalculation().calculate((MINFOArtifact) artifact);
+
+        if (facets == null || res == null) {
+            return res;
+        }
+
+        MiddleBedHeightData[] data = (MiddleBedHeightData[]) res.getData();
+
+        logger.debug("Calculated " + data.length + " MiddleBedHeightData objects");
+
+        String id  = getID();
+        int    idx = 0;
+
+        for (MiddleBedHeightData d: data) {
+            newFacets.add(new MiddleBedHeightFacet(
+                idx,
+                MIDDLE_BED_HEIGHT,
+                buildMiddleBedHeightName(artifact, context, d),
+                ComputeType.ADVANCE,
+                id,
+                hash
+            ));
+
+            idx++;
+        }
+
+        Facet csv = new DataFacet(
+            CSV, "CSV data", ComputeType.ADVANCE, hash, id);
+
+        // TODO ADD PDF FACET
+
+        newFacets.add(csv);
+
+        logger.debug("Created " + newFacets.size() + " new Facets.");
+
+        facets.addAll(newFacets);
+
+        return res;
+    }
+
+
+    protected String buildMiddleBedHeightName(
+        FLYSArtifact        artifact,
+        CallContext         cc,
+        MiddleBedHeightData data
+    ) {
+        logger.error("TODO: Implement buildMiddleBedHeightName");
+        return "TODO: Implement buildMiddleBedHeightName";
     }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org