changeset 8879:64ca63f79f6f

Further work on SINFO-FlowDepth
author gernotbelger
date Fri, 09 Feb 2018 13:27:10 +0100
parents ddd6523e0868
children 6b93a2498e06
files artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/BedHeightInfo.java artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthCalculation.java artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthExporter.java artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthState.java artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/WstInfo.java artifacts/src/main/resources/messages.properties artifacts/src/main/resources/messages_de.properties artifacts/src/main/resources/messages_de_DE.properties artifacts/src/main/resources/messages_en.properties
diffstat 9 files changed, 94 insertions(+), 85 deletions(-) [+]
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/BedHeightInfo.java	Fri Feb 09 13:20:16 2018 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/BedHeightInfo.java	Fri Feb 09 13:27:10 2018 +0100
@@ -26,9 +26,9 @@
 
     private final String locationSystem;
 
-    private final String curElevationModelName;
+    private final String curElevationModelUnit;
 
-    private final String oldElevationModelName;
+    private final String oldElevationModelUnit;
 
     public static BedHeightInfo from(final BedHeight bedHeight) {
         return new BedHeightInfo(bedHeight);
@@ -45,8 +45,8 @@
 
         this.locationSystem = bedHeight.getLocationSystem().getName();
 
-        this.curElevationModelName = bedHeight.getCurElevationModel().getName();
-        this.oldElevationModelName = bedHeight.getCurElevationModel().getName();
+        this.curElevationModelUnit = bedHeight.getCurElevationModel().getUnit().getName();
+        this.oldElevationModelUnit = bedHeight.getCurElevationModel().getUnit().getName();
     }
 
     public Integer getYear() {
@@ -65,11 +65,11 @@
         return this.locationSystem;
     }
 
-    public String getCurElevationModelName() {
-        return this.curElevationModelName;
+    public String getCurElevationModelUnit() {
+        return this.curElevationModelUnit;
     }
 
-    public String getOldElevationModelName() {
-        return this.oldElevationModelName;
+    public String getOldElevationModelUnit() {
+        return this.oldElevationModelUnit;
     }
 }
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthCalculation.java	Fri Feb 09 13:20:16 2018 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthCalculation.java	Fri Feb 09 13:27:10 2018 +0100
@@ -12,6 +12,7 @@
 import java.util.Collection;
 import java.util.List;
 
+import org.dive4elements.artifacts.ArtifactDatabase;
 import org.dive4elements.artifacts.CallContext;
 import org.dive4elements.river.artifacts.BedHeightsArtifact;
 import org.dive4elements.river.artifacts.model.Calculation;
@@ -41,8 +42,12 @@
 
     public CalculationResult calculate(final SINFOArtifact sinfo) {
 
-        // FIXME: find user of this artifact; probably only possible by selecting the collection that contains this artifact...
-        final String user = "unbekannt";
+        /*
+         * find the user of this artifact, sadly this is not part of the calling context, so instead we determine the
+         * owner oft the artifact
+         */
+        final ArtifactDatabase database = this.context.getDatabase();
+        final String user = database.findArtifactUser(sinfo.identifier());
 
         /* access input data */
         final FlowDepthAccess access = new FlowDepthAccess(sinfo);
@@ -98,13 +103,18 @@
 
         // FIXME: woher bekommen?
         final int wspYear = 0;
+        // FIXME: angeblich metadatum bestimmter wsps?
+        // Könnte 'source' an 'wst_columns' sein
+        final String wspSource = "FIXME";
+        // FIXME: Umsetzung IDENTISCH zu allen möglichen Arten wie ein WSPL berechnet wird....
+        final String wspGauge = "FIXME";
 
         final String wspLabel = wstKms.getName();
         final String soundingLabel = bedHeight.getDescription();
         final String label = String.format("%s - %s", wspLabel, soundingLabel);
 
         final BedHeightInfo sounding = BedHeightInfo.from(bedHeight);
-        final WstInfo wstInfo = new WstInfo(wspLabel, wspYear);
+        final WstInfo wstInfo = new WstInfo(wspLabel, wspYear, wspSource, wspGauge);
 
         final FlowDepthCalculationResult resultData = new FlowDepthCalculationResult(label, wstInfo, sounding);
 
@@ -150,7 +160,6 @@
             final double tkh = 0;
             final double flowDepthTkh = flowDepth - tkh;
 
-
             // REMARK: access the location once only during calculation
             final String location = LocationProvider.getLocation(river.getName(), km);
 
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthExporter.java	Fri Feb 09 13:20:16 2018 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthExporter.java	Fri Feb 09 13:27:10 2018 +0100
@@ -97,8 +97,6 @@
 
     private static final String CSV_META_HEADER_WATERLEVEL_NAME = "sinfo.export.flow_depth.csv.meta.header.waterlevel.name";
 
-    private static final String CSV_META_HEADER_WATERLEVEL_ELEVATION_MODEL = "sinfo.export.flow_depth.csv.meta.header.waterlevel.elevationmodel";
-
     private static final String CSV_META_HEADER_WATERLEVEL_EVALUATOR = "sinfo.export.flow_depth.csv.meta.header.waterlevel.evaluator";
 
     private static final String CSV_META_HEADER_WATERLEVEL_GAUGE = "sinfo.export.flow_depth.csv.meta.header.waterlevel.gauge";
@@ -180,27 +178,20 @@
         // "# Lagesystem: "
         writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_PRJ, sounding.getLocationSystem());
         // "# Höhensystem: "
-        // TODO: klären einheit oder name des höhensystems?
-        writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL, sounding.getCurElevationModelName());
+        writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL, sounding.getCurElevationModelUnit());
         // "# ursprüngliches Höhensystem: "
         writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL_ORIGINAL,
-                sounding.getOldElevationModelName());
+                sounding.getOldElevationModelUnit());
 
         // "##METADATEN WASSERSPIEGELLAGE"
         writeCSVMetaEntry(writer, CSV_META_HEADER_WATERLEVEL);
         // "# Bezeichnung der Wasserspiegellage: "
         writeCSVMetaEntry(writer, CSV_META_HEADER_WATERLEVEL_NAME, wst.getLabel());
-        // "# Höhensystem der Wasserspiegellage: "
-        // FIXME: discussion!
-        writeCSVMetaEntry(writer, CSV_META_HEADER_WATERLEVEL_ELEVATION_MODEL, "FIXME");
-        // "# Auswerter: ": discussion!
-        // FIXME: discussion!
-        writeCSVMetaEntry(writer, CSV_META_HEADER_WATERLEVEL_EVALUATOR, "FIXME");
-        // "# Bezugspegel: " discussion
-        // FIXME: Umsetzung IDENTISCH zu allen möglichen Arten wie ein WSPL berechnet wird....
-        writeCSVMetaEntry(writer, CSV_META_HEADER_WATERLEVEL_GAUGE, "FIXME");
+        // "# Auswerter: "
+        writeCSVMetaEntry(writer, CSV_META_HEADER_WATERLEVEL_EVALUATOR, wst.getSource());
+        // "# Bezugspegel: "
+        writeCSVMetaEntry(writer, CSV_META_HEADER_WATERLEVEL_GAUGE, wst.getGauge());
         // "# Jahr/Zeitraum der Wasserspiegellage: "
-        // FIXME: discussion!
         writeCSVMetaEntry(writer, CSV_META_HEADER_WATERLEVEL_YEAR, Integer.toString(wst.getYear()));
 
         /* nwo the value rows */
@@ -233,7 +224,6 @@
         writeCSVMetaEntry(writer, CSV_META_RIVER, msg(CSV_META_RIVER_LABEL), river.getName());
 
         // "# Höhensystem des Flusses: "
-        // FIXME: klären, was ist gemeint?
         final Unit wstUnit = river.getWstUnit();
         writeCSVMetaEntry(writer, CSV_META_HEIGHT_UNIT_RIVER, wstUnit.getName());
 
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthState.java	Fri Feb 09 13:20:16 2018 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthState.java	Fri Feb 09 13:27:10 2018 +0100
@@ -45,13 +45,29 @@
 
     @Override
     public Object computeFeed(
-        final D4EArtifact artifact,
-        final String       hash,
-        final CallContext  context,
-        final List<Facet>  facets,
-        final Object       old
-    ) {
-    	// FIXME: why is this necessary?
+            final D4EArtifact artifact,
+            final String       hash,
+            final CallContext  context,
+            final List<Facet>  facets,
+            final Object       old
+            ) {
+        // FIXME: why is this necessary?
+        if (artifact instanceof ChartArtifact) {
+            facets.add(new EmptyFacet());
+            return null;
+        }
+
+        return compute((SINFOArtifact) artifact, context, hash, facets, old);
+    }
+
+    @Override
+    public Object computeAdvance(
+            final D4EArtifact artifact,
+            final String       hash,
+            final CallContext  context,
+            final List<Facet>  facets,
+            final Object       old
+            ) {
         if (artifact instanceof ChartArtifact) {
             facets.add(new EmptyFacet());
             return null;
@@ -59,37 +75,23 @@
         return compute((SINFOArtifact) artifact, context, hash, facets, old);
     }
 
-    @Override
-    public Object computeAdvance(
-    	final D4EArtifact artifact,
-    	final String       hash,
-    	final CallContext  context,
-    	final List<Facet>  facets,
-    	final Object       old
-    ) {
-        if (artifact instanceof ChartArtifact) {
-            facets.add(new EmptyFacet());
-            return null;
-        }
-        return compute((SINFOArtifact) artifact, context, hash, facets, old);
-    }
-    
     /**
      * Compute result or returned object from cache, create facets.
      * @param old Object that was cached.
      */
     private Object compute(
-    	final SINFOArtifact sinfo,
-        final CallContext   context,
-        final String        hash,
-        final List<Facet>   facets,
-        final Object        old
-    ) {
+            final SINFOArtifact sinfo,
+            final CallContext   context,
+            final String        hash,
+            final List<Facet>   facets,
+            final Object        old
+            ) {
+
         final CalculationResult res;
-		if (old instanceof CalculationResult)
-			res = (CalculationResult) old;
-		else
-			res = new FlowDepthCalculation(context).calculate(sinfo);
+        if (old instanceof CalculationResult)
+            res = (CalculationResult) old;
+        else
+            res = new FlowDepthCalculation(context).calculate(sinfo);
 
         if (facets == null) {
             return res;
@@ -101,27 +103,27 @@
         final List<FlowDepthCalculationResult> resultList = results.getResults();
         for (int index = 0; index < resultList.size(); index++) {
 
-			final FlowDepthCalculationResult result = resultList.get(index);
-			
-			/* filtered (zoom dependent mean) flow depth */
-			final String facetFlowDepthFilteredDescription = Resources.getMsg( context.getMeta(), I18N_FACET_FLOW_DEPTH_FILTERED_DESCRIPTION, I18N_FACET_FLOW_DEPTH_FILTERED_DESCRIPTION, result.getLabel() );
-			facets.add(new FlowDepthFilterFacet(
-			        index,
-			        FlowDepthProcessor.FACET_FLOW_DEPTH_FILTERED,
-			        facetFlowDepthFilteredDescription,
-			        ComputeType.ADVANCE,
-			        id,
-			        hash
-			    ));
-			
-			// FIXME: add other themes
-		}
+            final FlowDepthCalculationResult result = resultList.get(index);
+
+            /* filtered (zoom dependent mean) flow depth */
+            final String facetFlowDepthFilteredDescription = Resources.getMsg( context.getMeta(), I18N_FACET_FLOW_DEPTH_FILTERED_DESCRIPTION, I18N_FACET_FLOW_DEPTH_FILTERED_DESCRIPTION, result.getLabel() );
+            facets.add(new FlowDepthFilterFacet(
+                    index,
+                    FlowDepthProcessor.FACET_FLOW_DEPTH_FILTERED,
+                    facetFlowDepthFilteredDescription,
+                    ComputeType.ADVANCE,
+                    this.id,
+                    hash
+                    ));
+
+            // FIXME: add other themes
+        }
 
         if (!resultList.isEmpty() ) {
-            Facet csv = new DataFacet(
-                FacetTypes.CSV, "CSV data", ComputeType.ADVANCE, hash, id);
-            Facet pdf = new DataFacet(
-            		FacetTypes.PDF, "PDF data", ComputeType.ADVANCE, hash, id);
+            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);
 
             facets.add(csv);
             facets.add(pdf);
@@ -130,7 +132,7 @@
         final Calculation report = res.getReport();
 
         if (report.hasProblems()) {
-            facets.add(new ReportFacet(ComputeType.ADVANCE, hash, id));
+            facets.add(new ReportFacet(ComputeType.ADVANCE, hash, this.id));
         }
 
         return res;
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/WstInfo.java	Fri Feb 09 13:20:16 2018 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/WstInfo.java	Fri Feb 09 13:27:10 2018 +0100
@@ -16,10 +16,14 @@
 
     private final String label;
     private final int year;
+    private final String source;
+    private final String gauge;
 
-    public WstInfo(final String label, final int year) {
+    public WstInfo(final String label, final int year, final String source, final String gauge) {
         this.label = label;
         this.year = year;
+        this.source = source;
+        this.gauge = gauge;
     }
 
     public String getLabel() {
@@ -29,4 +33,12 @@
     public int getYear() {
         return this.year;
     }
+
+    public String getSource() {
+        return this.source;
+    }
+
+    public String getGauge() {
+        return this.gauge;
+    }
 }
\ No newline at end of file
--- a/artifacts/src/main/resources/messages.properties	Fri Feb 09 13:20:16 2018 +0100
+++ b/artifacts/src/main/resources/messages.properties	Fri Feb 09 13:27:10 2018 +0100
@@ -811,7 +811,6 @@
 sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel.original = # urspr\u00fcngliches H\u00f6hensystem: {0} 
 sinfo.export.flow_depth.csv.meta.header.waterlevel = ##METADATEN WASSERSPIEGELLAGE
 sinfo.export.flow_depth.csv.meta.header.waterlevel.name = # Bezeichnung der Wasserspiegellage: {0} 
-sinfo.export.flow_depth.csv.meta.header.waterlevel.elevationmodel = # H\u00f6hensystem der Wasserspiegellage: {0}
 sinfo.export.flow_depth.csv.meta.header.waterlevel.evaluator = # Auswerter: {0}
 sinfo.export.flow_depth.csv.meta.header.waterlevel.gauge = # Bezugspegel: {0}
 sinfo.export.flow_depth.csv.meta.header.waterlevel.year = # Jahr/Zeitraum der Wasserspiegellage: {0}
--- a/artifacts/src/main/resources/messages_de.properties	Fri Feb 09 13:20:16 2018 +0100
+++ b/artifacts/src/main/resources/messages_de.properties	Fri Feb 09 13:27:10 2018 +0100
@@ -817,7 +817,6 @@
 sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel.original = # urspr\u00fcngliches H\u00f6hensystem: {0}
 sinfo.export.flow_depth.csv.meta.header.waterlevel = ##METADATEN WASSERSPIEGELLAGE
 sinfo.export.flow_depth.csv.meta.header.waterlevel.name = # Bezeichnung der Wasserspiegellage: {0} 
-sinfo.export.flow_depth.csv.meta.header.waterlevel.elevationmodel = # H\u00f6hensystem der Wasserspiegellage: {0}
 sinfo.export.flow_depth.csv.meta.header.waterlevel.evaluator = # Auswerter: {0}
 sinfo.export.flow_depth.csv.meta.header.waterlevel.gauge = # Bezugspegel: {0}
 sinfo.export.flow_depth.csv.meta.header.waterlevel.year = # Jahr/Zeitraum der Wasserspiegellage: {0}
--- a/artifacts/src/main/resources/messages_de_DE.properties	Fri Feb 09 13:20:16 2018 +0100
+++ b/artifacts/src/main/resources/messages_de_DE.properties	Fri Feb 09 13:27:10 2018 +0100
@@ -813,7 +813,6 @@
 sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel.original = # urspr\u00fcngliches H\u00f6hensystem: {0}
 sinfo.export.flow_depth.csv.meta.header.waterlevel = ##METADATEN WASSERSPIEGELLAGE
 sinfo.export.flow_depth.csv.meta.header.waterlevel.name = # Bezeichnung der Wasserspiegellage: {0} 
-sinfo.export.flow_depth.csv.meta.header.waterlevel.elevationmodel = # H\u00f6hensystem der Wasserspiegellage: {0}
 sinfo.export.flow_depth.csv.meta.header.waterlevel.evaluator = # Auswerter: {0}
 sinfo.export.flow_depth.csv.meta.header.waterlevel.gauge = # Bezugspegel: {0}
 sinfo.export.flow_depth.csv.meta.header.waterlevel.year = # Jahr/Zeitraum der Wasserspiegellage: {0}
--- a/artifacts/src/main/resources/messages_en.properties	Fri Feb 09 13:20:16 2018 +0100
+++ b/artifacts/src/main/resources/messages_en.properties	Fri Feb 09 13:27:10 2018 +0100
@@ -812,7 +812,6 @@
 sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel.original = # urspr\u00fcngliches H\u00f6hensystem: {0}
 sinfo.export.flow_depth.csv.meta.header.waterlevel = ##METADATEN WASSERSPIEGELLAGE
 sinfo.export.flow_depth.csv.meta.header.waterlevel.name = # Bezeichnung der Wasserspiegellage: {0} 
-sinfo.export.flow_depth.csv.meta.header.waterlevel.elevationmodel = # H\u00f6hensystem der Wasserspiegellage: {0}
 sinfo.export.flow_depth.csv.meta.header.waterlevel.evaluator = # Auswerter: {0}
 sinfo.export.flow_depth.csv.meta.header.waterlevel.gauge = # Bezugspegel: {0}
 sinfo.export.flow_depth.csv.meta.header.waterlevel.year = # Jahr/Zeitraum der Wasserspiegellage: {0}

http://dive4elements.wald.intevation.org