diff artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculation.java @ 9537:bf6b63208f34

Work on uinfo inundation duration calculation. Using proxy-wms to induce additional style information (work in progress).
author gernotbelger
date Wed, 17 Oct 2018 11:23:17 +0200
parents 787fc085459b
children 709a73badd48
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculation.java	Tue Oct 16 16:42:22 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculation.java	Wed Oct 17 11:23:17 2018 +0200
@@ -9,12 +9,15 @@
  */
 package org.dive4elements.river.artifacts.uinfo.inundationduration;
 
+import java.io.IOException;
 import java.util.List;
 
 import org.dive4elements.artifacts.CallContext;
 import org.dive4elements.river.artifacts.model.Calculation;
 import org.dive4elements.river.artifacts.model.CalculationResult;
+import org.dive4elements.river.artifacts.sinfo.tkhstate.TsvHelper.TsvReaderException;
 import org.dive4elements.river.artifacts.uinfo.UINFOArtifact;
+import org.dive4elements.river.artifacts.uinfo.inundationduration.InundationDurationAccess.WmsClassification;
 import org.dive4elements.river.artifacts.uinfo.inundationduration.InundationDurationCalculationResult.WmsLayer;
 import org.dive4elements.river.artifacts.uinfo.vegetationzones.VegetationZoneServerClientXChange;
 
@@ -33,35 +36,46 @@
     public CalculationResult calculate(final UINFOArtifact uinfo) {
         final Calculation problems = new Calculation();
 
-        final InundationDurationAccess indurax = new InundationDurationAccess(uinfo);
-
-        final String zonesRaw = indurax.getVegZones();
-        final List<VegetationZoneServerClientXChange> zones = VegetationZoneServerClientXChange.parse(zonesRaw);
-
-        final boolean isUseScenario = indurax.getIsUseScenario();
-
-        final InundationDurationCalculationResult result = new InundationDurationCalculationResult();
-
-        final WmsLayer inundationDurationLayer = indurax.createWMSLayer(this.context.getMeta(), "uinfo.export.url.inundationduration.inundationduration");
-        result.addLayer(inundationDurationLayer);
+        try {
+            final InundationDurationAccess indurax = new InundationDurationAccess(uinfo);
 
-        // TODO: add vegetationzone-values as parameter to url and use this url as veg'zone'url
-        final WmsLayer vegetationLayer = indurax.createWMSLayer(this.context.getMeta(), "uinfo.export.url.inundationduration.vegetation");
-        result.addLayer(vegetationLayer);
+            final String zonesRaw = indurax.getVegZones();
+            final List<VegetationZoneServerClientXChange> zones = VegetationZoneServerClientXChange.parse(zonesRaw);
+            // FIXME: instead find out a-uuid of referenced vegetations
+            // FIXME:
+            final String vegZoneId = "unknown";
 
-        if (isUseScenario) {
-            // TODO: wieder einkommentieren, sobald die URL-Definition für Szenarien geklärt ist (und hoffentlich analog zu "mittel"
-            // und "jahre" funktioniert)
-            // final WmsLayer scenarioInundationDurationLayer = indurax.createScenarioWMSLayer(this.context.getMeta(),
-            // "uinfo.export.url.inundationduration.scenario");
-            // result.addLayer(scenarioInundationDurationLayer);
-            //
-            // // TODO: add vegetationzone-values as styles to layer
-            // final WmsLayer scenarioVegetationLayer = indurax.createScenarioWMSLayer(this.context.getMeta(),
-            // "uinfo.export.url.inundationduration.vegetation_scenario");
-            // result.addLayer(scenarioVegetationLayer);
+            final boolean isUseScenario = indurax.getIsUseScenario();
+
+            final InundationDurationCalculationResult result = new InundationDurationCalculationResult();
+
+            final WmsLayer inundationDurationLayer = indurax.createWMSLayer(this.context, "uinfo.export.url.inundationduration.inundationduration",
+                    WmsClassification.asIs, vegZoneId);
+            result.addLayer(inundationDurationLayer);
+
+            final WmsLayer vegetationLayer = indurax.createWMSLayer(this.context, "uinfo.export.url.inundationduration.vegetation",
+                    WmsClassification.vegetationZone, vegZoneId);
+            result.addLayer(vegetationLayer);
+
+            if (isUseScenario) {
+                // TODO: wieder einkommentieren, sobald die URL-Definition für Szenarien geklärt ist (und hoffentlich analog zu "mittel"
+                // und "jahre" funktioniert)
+                // final WmsLayer scenarioInundationDurationLayer = indurax.createScenarioWMSLayer(this.context.getMeta(),
+                // "uinfo.export.url.inundationduration.scenario");
+                // result.addLayer(scenarioInundationDurationLayer);
+                //
+                // // TODO: add vegetationzone-values as styles to layer
+                // final WmsLayer scenarioVegetationLayer = indurax.createScenarioWMSLayer(this.context.getMeta(),
+                // "uinfo.export.url.inundationduration.vegetation_scenario");
+                // result.addLayer(scenarioVegetationLayer);
+            }
+
+            return new CalculationResult(result, problems);
         }
-
-        return new CalculationResult(result, problems);
+        catch (IOException | TsvReaderException e) {
+            e.printStackTrace();
+            problems.addProblem("Invalid server configuration: " + e.getLocalizedMessage());
+            return new CalculationResult(null, problems);
+        }
     }
 }
\ No newline at end of file

http://dive4elements.wald.intevation.org