diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java @ 4812:65bfb6faa538

Bring Access pattern to "W fuer ungleichwertige Abflusslaengsschnitte".
author Sascha L. Teichmann <teichmann@intevation.de>
date Fri, 18 Jan 2013 19:33:26 +0100
parents cf5ac1097d6a
children 298d540f7b70
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java	Fri Jan 18 10:30:09 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java	Fri Jan 18 19:33:26 2013 +0100
@@ -10,6 +10,8 @@
 
 import de.intevation.artifacts.common.utils.StringUtils;
 
+import de.intevation.flys.artifacts.access.Calculation4Access;
+
 import de.intevation.flys.artifacts.geom.Lines;
 
 import de.intevation.flys.artifacts.model.Calculation1;
@@ -22,15 +24,16 @@
 import de.intevation.flys.artifacts.model.CalculationResult;
 import de.intevation.flys.artifacts.model.DischargeTables;
 import de.intevation.flys.artifacts.model.FacetTypes;
-import de.intevation.flys.artifacts.model.Segment;
 import de.intevation.flys.artifacts.model.WQCKms;
 import de.intevation.flys.artifacts.model.WQKms;
 import de.intevation.flys.artifacts.model.WW;
 import de.intevation.flys.artifacts.model.WstValueTable;
 import de.intevation.flys.artifacts.model.WstValueTableFactory;
+
 import de.intevation.flys.artifacts.model.extreme.ExtremeResult;
 
 import de.intevation.flys.artifacts.states.DefaultState.ComputeType;
+
 import de.intevation.flys.artifacts.states.LocationDistanceSelect;
 
 import de.intevation.flys.model.DischargeTable;
@@ -47,7 +50,6 @@
 
 import java.util.Arrays;
 import java.util.Calendar;
-import java.util.Collections;
 import java.util.GregorianCalendar;
 import java.util.List;
 import java.util.Map;
@@ -169,6 +171,12 @@
         return this.getWaterlevelData(null);
     }
 
+    // THIS IS FREAKY BULLSHIT! Felix, why do you call the calculation directly????
+    protected CalculationResult getDischargeLongitudinalSectionData() {
+        // XXX: THIS AN _EXPENSIVE_ CALCULATION! CACHE IT!
+        return new Calculation4(new Calculation4Access(this)).calculate();
+    }
+
     /**
      * Returns the data that is computed by a waterlevel computation.
      *
@@ -405,48 +413,6 @@
 
 
     /**
-     * Returns the data computed by the discharge longitudinal section
-     * computation.
-     *
-     * @return an array of WQKms object - one object for each given Q value.
-     */
-    public CalculationResult getDischargeLongitudinalSectionData() {
-
-        logger.debug("WINFOArtifact.getDischargeLongitudinalSectionData");
-
-        River river = FLYSUtils.getRiver(this);
-        if (river == null) {
-            logger.debug("No river selected.");
-            return error(new WQKms[0], "no.river.selected");
-        }
-
-        WstValueTable table = WstValueTableFactory.getTable(river);
-        if (table == null) {
-            logger.debug("No wst found for selected river.");
-            return error(new WQKms[0], "no.wst.for.river");
-        }
-
-        List<Segment> segments = getSegments();
-
-        if (segments == null) {
-            logger.debug("Cannot create segments.");
-            return error(new WQKms[0], "cannot.create.segments");
-        }
-
-        double [] range = getFromToStep();
-
-        if (range == null) {
-            logger.debug("Cannot figure out range.");
-            return error(new WQKms[0], "no.range.found");
-        }
-
-        Calculation4 calc4 = new Calculation4(segments, river, isQ());
-
-        return calc4.calculate(table, range[0], range[1], range[2]);
-    }
-
-
-    /**
      * Returns the data that is computed by a reference curve computation.
      *
      * @return the data computed by a reference curve computation.
@@ -574,21 +540,6 @@
     }
 
 
-    public List<Segment> getSegments() {
-        StateData wqValues = getData("wq_values");
-        if (wqValues == null) {
-            logger.warn("no wq_values given");
-            return Collections.<Segment>emptyList();
-        }
-        String input = (String) wqValues.getValue();
-        if (input == null || (input = input.trim()).length() == 0) {
-            logger.warn("wq_values are empty");
-            return Collections.<Segment>emptyList();
-        }
-        return Segment.parseSegments(input);
-    }
-
-
     /**
      * Get corrected waterline against surface/profile.
      */

http://dive4elements.wald.intevation.org