diff artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationState.java @ 9190:0633f963c5be

uinfo.inundationduration workflow
author gernotbelger
date Thu, 28 Jun 2018 15:10:04 +0200
parents 2f5052835b76
children 787fc085459b
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationState.java	Thu Jun 28 14:11:12 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationState.java	Thu Jun 28 15:10:04 2018 +0200
@@ -16,14 +16,14 @@
 import org.dive4elements.river.artifacts.ChartArtifact;
 import org.dive4elements.river.artifacts.D4EArtifact;
 import org.dive4elements.river.artifacts.MapArtifact.MapState;
-import org.dive4elements.river.artifacts.common.AbstractCalculationExportableResult;
 import org.dive4elements.river.artifacts.model.Calculation;
 import org.dive4elements.river.artifacts.model.CalculationResult;
 import org.dive4elements.river.artifacts.model.DataFacet;
 import org.dive4elements.river.artifacts.model.EmptyFacet;
-import org.dive4elements.river.artifacts.model.FacetTypes;
 import org.dive4elements.river.artifacts.model.ReportFacet;
+import org.dive4elements.river.artifacts.model.map.WMSLayerFacet;
 import org.dive4elements.river.artifacts.uinfo.UINFOArtifact;
+import org.dive4elements.river.artifacts.uinfo.inundationduration.InundationDurationCalculationResult.WmsLayer;
 
 /**
  * @author Domenico Nardi Tironi
@@ -35,6 +35,8 @@
 
     private static final long serialVersionUID = 1L;
 
+    private static final String LABEL_URL_SEPARATOR = ";";// always sync with client (ExportPanel)
+
     /**
      * From this state can only be continued trivially.
      */
@@ -51,7 +53,7 @@
             return null;
         }
 
-        return compute((UINFOArtifact) artifact, context, hash, facets, old);
+        return compute((UINFOArtifact) artifact, context, ComputeType.FEED, hash, facets, old);
     }
 
     @Override
@@ -64,7 +66,8 @@
         if (facets != null)
             super.computeAdvance(artifact, hash, context, facets, old);
 
-        return compute((UINFOArtifact) artifact, context, hash, facets, old);
+        return compute((UINFOArtifact) artifact, context, ComputeType.ADVANCE, hash, facets, old);
+
     }
 
     /**
@@ -73,27 +76,43 @@
      * @param old
      *            Object that was cached.
      */
-    private Object compute(final UINFOArtifact sinfo, final CallContext context, final String hash, final List<Facet> facets, final Object old) {
+    private Object compute(final UINFOArtifact sinfo, final CallContext context, final ComputeType type, final String hash, final List<Facet> facets,
+            final Object old) {
 
         final CalculationResult res = doCompute(sinfo, context, old);
 
         if (facets == null)
             return res;
 
-        final InundationDurationCalculationResults results = (InundationDurationCalculationResults) res.getData();
-
-        final List<AbstractCalculationExportableResult<InundationDurationCalculationResults>> resultList = results.getResults();
+        final InundationDurationCalculationResult result = (InundationDurationCalculationResult) res.getData();
+        final List<WmsLayer> layers = result.getLayers();
 
-        if (!resultList.isEmpty()) {
-            final Facet csv = new DataFacet(FacetTypes.CSV, "CSV data", ComputeType.ADVANCE, hash, this.id);
-            final Facet pdf = new DataFacet(FacetTypes.PDF, "PDF data", ComputeType.ADVANCE, hash, this.id);
+        int index = 1; // 1 because super.computeAdvance adds the river theme with index 0
+        for (final WmsLayer layer : layers) {
 
-            facets.add(csv);
-            facets.add(pdf);
+            final String label = layer.getLabel();
+            final String url = layer.getUrl();
+
+            final WMSLayerFacet wmsFacet = new WMSLayerFacet(index, FLOODMAP_EXTERNAL_WMS_INUNDATIONDUR + index, label, type, getID(), hash, url);
+            facets.add(wmsFacet);
+
+            wmsFacet.addLayer("OSM-WMS-Dienst");
+
+            // wmsFacet.setExtent(getExtent(false));
+            // wmsFacet.setOriginalExtent(getExtent(true));
+            wmsFacet.setSrid(getSrid());
+
+            if (layer.isShowLayerLink())
+                facets.add(new DataFacet("wms_url", label + LABEL_URL_SEPARATOR + url, ComputeType.ADVANCE, hash, this.id));
+
+            index++; // because super.computeAdvance adds the river theme with index 0
         }
 
+        // tODO: create layer links: filter by "showLayerLink"
+
+        // tODO: create layer links: filter by "showLayerLink"
+
         final Calculation report = res.getReport();
-
         if (report.hasProblems())
             facets.add(new ReportFacet(ComputeType.ADVANCE, hash, this.id));
 

http://dive4elements.wald.intevation.org