# HG changeset patch # User mschaefer # Date 1534248241 -7200 # Node ID e511eb935ccd45c6fc91393893cc4e5343226726 # Parent 361de818f76e354136bb7afaf990a4e4b741d81f Changed hard coded standard vegetation zone table to fetching it from the database, i18n for the standard zone names diff -r 361de818f76e -r e511eb935ccd artifacts/src/main/java/org/dive4elements/river/artifacts/datacage/templating/DataFromArtifactXPathFunction.java --- 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 */ diff -r 361de818f76e -r e511eb935ccd artifacts/src/main/java/org/dive4elements/river/artifacts/datacage/templating/DefaultVegetationZoneXPathFunction.java --- 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 diff -r 361de818f76e -r e511eb935ccd artifacts/src/main/java/org/dive4elements/river/artifacts/datacage/templating/FunctionResolver.java --- 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())); } diff -r 361de818f76e -r e511eb935ccd artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZone.java --- 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 getStandardList() { + public static final List getStandardList(final River river, final CallContext context) { final List 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; } diff -r 361de818f76e -r e511eb935ccd artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZonesTableEditState.java --- 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); diff -r 361de818f76e -r e511eb935ccd artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZonesTableState.java --- 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); diff -r 361de818f76e -r e511eb935ccd artifacts/src/main/resources/messages.properties --- 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 diff -r 361de818f76e -r e511eb935ccd artifacts/src/main/resources/messages_de.properties --- 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