changeset 9402:e511eb935ccd

Changed hard coded standard vegetation zone table to fetching it from the database, i18n for the standard zone names
author mschaefer
date Tue, 14 Aug 2018 14:04:01 +0200
parents 361de818f76e
children e2da9c8a7c57
files artifacts/src/main/java/org/dive4elements/river/artifacts/datacage/templating/DataFromArtifactXPathFunction.java artifacts/src/main/java/org/dive4elements/river/artifacts/datacage/templating/DefaultVegetationZoneXPathFunction.java artifacts/src/main/java/org/dive4elements/river/artifacts/datacage/templating/FunctionResolver.java artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZone.java artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZonesTableEditState.java artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZonesTableState.java artifacts/src/main/resources/messages.properties artifacts/src/main/resources/messages_de.properties
diffstat 8 files changed, 61 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/datacage/templating/DataFromArtifactXPathFunction.java	Tue Aug 14 14:02:26 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/datacage/templating/DataFromArtifactXPathFunction.java	Tue Aug 14 14:04:01 2018 +0200
@@ -21,8 +21,7 @@
 import org.dive4elements.river.utils.RiverUtils;
 
 /**
- * Very specialized function the resolves the 'year' (als middle of all used events) from a fix-analysis-vollmer
- * artifact).
+ * Very specialized function that gets state data from an artifact
  *
  * @author Gernot Belger
  */
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/datacage/templating/DefaultVegetationZoneXPathFunction.java	Tue Aug 14 14:02:26 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/datacage/templating/DefaultVegetationZoneXPathFunction.java	Tue Aug 14 14:04:01 2018 +0200
@@ -10,15 +10,19 @@
 package org.dive4elements.river.artifacts.datacage.templating;
 
 import java.util.List;
+import java.util.UUID;
 
 import javax.xml.xpath.XPathFunction;
 import javax.xml.xpath.XPathFunctionException;
 
+import org.dive4elements.artifacts.CallContext;
+import org.dive4elements.river.artifacts.D4EArtifact;
+import org.dive4elements.river.artifacts.access.RiverAccess;
 import org.dive4elements.river.artifacts.uinfo.vegetationzones.VegetationZone;
+import org.dive4elements.river.utils.RiverUtils;
 
 /**
- * Very specialized function the resolves the 'year' (als middle of all used events) from a fix-analysis-vollmer
- * artifact).
+ * Very specialized function that fetches the default vegetation zones for the river specified by an artifact
  *
  * @author Gernot Belger
  */
@@ -26,10 +30,25 @@
 
     public static final String ID = "defaultvegetationzone";
 
-    public static final int ARITY = 0;
+    public static final int ARITY = 1;
+
+    private final CallContext context;
+
+    public DefaultVegetationZoneXPathFunction(final CallContext context) {
+        this.context = context;
+    }
 
     @Override
     public Object evaluate(final List args) throws XPathFunctionException {
-        return VegetationZone.parseListToDataString(VegetationZone.getStandardList());
+
+        final UUID uuid = (UUID) args.get(0);
+        if (uuid == null)
+            return null;
+
+        final D4EArtifact artifact = RiverUtils.getArtifact(uuid.toString(), this.context);
+
+        final RiverAccess access = new RiverAccess(artifact);
+
+        return VegetationZone.parseListToDataString(VegetationZone.getStandardList(access.getRiver(), this.context));
     }
 }
\ No newline at end of file
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/datacage/templating/FunctionResolver.java	Tue Aug 14 14:02:26 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/datacage/templating/FunctionResolver.java	Tue Aug 14 14:04:01 2018 +0200
@@ -226,7 +226,8 @@
 
         addFunction(FixAnalysisYearXPathFunction.ID, FixAnalysisYearXPathFunction.ARITY, new FixAnalysisYearXPathFunction(buildHelper.getContext()));
 
-        addFunction(DefaultVegetationZoneXPathFunction.ID, DefaultVegetationZoneXPathFunction.ARITY, new DefaultVegetationZoneXPathFunction());
+        addFunction(DefaultVegetationZoneXPathFunction.ID, DefaultVegetationZoneXPathFunction.ARITY,
+                new DefaultVegetationZoneXPathFunction(buildHelper.getContext()));
 
         addFunction(DataFromArtifactXPathFunction.ID, DataFromArtifactXPathFunction.ARITY, new DataFromArtifactXPathFunction(buildHelper.getContext()));
     }
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZone.java	Tue Aug 14 14:02:26 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZone.java	Tue Aug 14 14:04:01 2018 +0200
@@ -13,6 +13,10 @@
 import java.util.List;
 import java.util.TreeSet;
 
+import org.dive4elements.artifacts.CallContext;
+import org.dive4elements.river.artifacts.resources.Resources;
+import org.dive4elements.river.model.River;
+
 /**
  * @author Domenico Nardi Tironi
  *
@@ -87,19 +91,13 @@
         return this.min_day_overflow;
     }
 
-    public static final List<VegetationZone> getStandardList() {
+    public static final List<VegetationZone> getStandardList(final River river, final CallContext context) {
 
         final List<VegetationZone> list = new ArrayList<>();
-        list.add(new VegetationZone("Zonaler Wald", 0, 5, "#336600"));
-        list.add(new VegetationZone("Hartholzaue, trocken", 6, 40, "#00cc00"));
-        list.add(new VegetationZone("Hartholzaue, feucht", 41, 80, "#66ff33"));
-        list.add(new VegetationZone("Silberweidenwald", 81, 140, "#008080"));
-        list.add(new VegetationZone("Weidengebüsch", 141, 200, "#33cccc"));
-        list.add(new VegetationZone("Uferröhricht", 201, 260, "#ffa8ff"));
-        list.add(new VegetationZone("Uferpioniere", 261, 320, "#ff0000"));
-        list.add(new VegetationZone("Vegetationslos", 321, 364, "#b2b2b2"));
-        list.add(new VegetationZone("Wasserfläche", 365, 365, "#0066ff"));
-
+        for (final org.dive4elements.river.model.uinfo.VegetationZone vz : org.dive4elements.river.model.uinfo.VegetationZone.getValues(river)) {
+            final String zn = Resources.getMsg(context.getMeta(), "uinfo_vegetation_type_" + vz.getVegetationType().getId().toString());
+            list.add(new VegetationZone(zn, vz.getMin_overflow_days(), vz.getMax_overflow_days(), vz.getColor()));
+        }
         return list;
     }
 
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZonesTableEditState.java	Tue Aug 14 14:02:26 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZonesTableEditState.java	Tue Aug 14 14:04:01 2018 +0200
@@ -14,7 +14,9 @@
 import org.dive4elements.artifacts.CallContext;
 import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator;
 import org.dive4elements.river.artifacts.D4EArtifact;
+import org.dive4elements.river.artifacts.access.RiverAccess;
 import org.dive4elements.river.artifacts.states.DefaultState;
+import org.dive4elements.river.model.River;
 import org.w3c.dom.Element;
 
 /**
@@ -37,7 +39,8 @@
             final Element label = ProtocolUtils.createArtNode(cr, "label", null, null);
             final Element value = ProtocolUtils.createArtNode(cr, "value", null, null);
             final D4EArtifact flys = (D4EArtifact) artifact;
-            final String s = flys.getDataAsString(datakey) == null ? VegetationZone.parseListToDataString(VegetationZone.getStandardList())
+            final River river = new RiverAccess(flys).getRiver();
+            final String s = flys.getDataAsString(datakey) == null ? VegetationZone.parseListToDataString(VegetationZone.getStandardList(river, context))
                     : flys.getDataAsString(datakey);
 
             value.setTextContent(s);
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZonesTableState.java	Tue Aug 14 14:02:26 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZonesTableState.java	Tue Aug 14 14:04:01 2018 +0200
@@ -14,7 +14,9 @@
 import org.dive4elements.artifacts.CallContext;
 import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator;
 import org.dive4elements.river.artifacts.D4EArtifact;
+import org.dive4elements.river.artifacts.access.RiverAccess;
 import org.dive4elements.river.artifacts.states.DefaultState;
+import org.dive4elements.river.model.River;
 import org.w3c.dom.Element;
 
 /**
@@ -38,7 +40,8 @@
             final Element label = ProtocolUtils.createArtNode(cr, "label", null, null);
             final Element value = ProtocolUtils.createArtNode(cr, "value", null, null);
             final D4EArtifact flys = (D4EArtifact) artifact;
-            final String s = flys.getDataAsString(datakey) == null ? VegetationZone.parseListToDataString(VegetationZone.getStandardList())
+            final River river = new RiverAccess(flys).getRiver();
+            final String s = flys.getDataAsString(datakey) == null ? VegetationZone.parseListToDataString(VegetationZone.getStandardList(river, context))
                     : flys.getDataAsString(datakey);
 
             value.setTextContent(s);
--- a/artifacts/src/main/resources/messages.properties	Tue Aug 14 14:02:26 2018 +0200
+++ b/artifacts/src/main/resources/messages.properties	Tue Aug 14 14:04:01 2018 +0200
@@ -1125,6 +1125,15 @@
 uinfo_salix_line = Iota (Fluss/Aue-Konnektivit\u00e4t)
 uinfo_inundation_duration = \u00dcberflutungsdauern Aue
 uinfo_vegetation_zones = Vegetationszonen
+uinfo_vegetation_type_1 = zonal forest
+uinfo_vegetation_type_2 = dry hartwood forest floodplain
+uinfo_vegetation_type_3 = wet hartwood forest floodplain
+uinfo_vegetation_type_4 = salix alba forest
+uinfo_vegetation_type_5 = salix shrubs
+uinfo_vegetation_type_6 = reed bed
+uinfo_vegetation_type_7 = bank pioneers
+uinfo_vegetation_type_8 = no vegetation
+uinfo_vegetation_type_9 = water
 
 state.uinfo.river = Gew\u00e4sser
 state.uinfo.calculation_mode=Berechnungsart
--- a/artifacts/src/main/resources/messages_de.properties	Tue Aug 14 14:02:26 2018 +0200
+++ b/artifacts/src/main/resources/messages_de.properties	Tue Aug 14 14:04:01 2018 +0200
@@ -1125,6 +1125,15 @@
 uinfo_salix_line = Iota (Fluss/Aue-Konnektivit\u00e4t)
 uinfo_inundation_duration = \u00dcberflutungsdauern Aue
 uinfo_vegetation_zones = Vegetationszonen
+uinfo_vegetation_type_1 = Zonaler Wald
+uinfo_vegetation_type_2 = Hartholzaue, trocken
+uinfo_vegetation_type_3 = Hartholzaue, feucht
+uinfo_vegetation_type_4 = Silberweidenwald
+uinfo_vegetation_type_5 = Weidengeb\u00fcsch
+uinfo_vegetation_type_6 = Uferr\u00f6hricht
+uinfo_vegetation_type_7 = Uferpioniere
+uinfo_vegetation_type_8 = Vegetationslos
+uinfo_vegetation_type_9 = Wasserfl\u00e4che
 
 state.uinfo.river = Gew\u00e4sser
 state.uinfo.calculation_mode=Berechnungsart

http://dive4elements.wald.intevation.org