changeset 9390:f575ff573cbb

"Name der Peilung" columname minfo.
author gernotbelger
date Thu, 09 Aug 2018 15:22:31 +0200 (2018-08-09)
parents 63c086139391
children 2da486c7c05f
files artifacts/src/main/java/org/dive4elements/river/artifacts/states/DischargeState.java artifacts/src/main/java/org/dive4elements/river/artifacts/states/SoundingsSelect.java artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/CharDiameter.java gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrix.java gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrixPanel.java gwt-client/src/main/java/org/dive4elements/river/client/client/ui/UIProviderFactory.java gwt-client/src/main/java/org/dive4elements/river/client/server/ArtifactDescriptionFactory.java
diffstat 10 files changed, 517 insertions(+), 727 deletions(-) [+]
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/DischargeState.java	Thu Aug 09 12:03:30 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/DischargeState.java	Thu Aug 09 15:22:31 2018 +0200
@@ -8,85 +8,72 @@
 
 package org.dive4elements.river.artifacts.states;
 
-import java.util.List;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.List;
 
 import org.apache.log4j.Logger;
-
 import org.dive4elements.artifacts.Artifact;
 import org.dive4elements.artifacts.CallContext;
-
 import org.dive4elements.artifacts.common.model.KVP;
-
+import org.dive4elements.river.artifacts.D4EArtifact;
 import org.dive4elements.river.model.DischargeZone;
 import org.dive4elements.river.model.River;
-
-import org.dive4elements.river.artifacts.D4EArtifact;
 import org.dive4elements.river.utils.RiverUtils;
 
-
 public class DischargeState extends MultiIntArrayState {
 
-    public static final String MAIN_CHANNEL  = "main_channel";
+    public static final String MAIN_CHANNEL = "main_channel";
     public static final String TOTAL_CHANNEL = "total_channel";
 
-
     private static final Logger log = Logger.getLogger(DischargeState.class);
 
-
     /** Let client display a matrix. */
     @Override
     public String getUIProvider() {
-        return "parameter-matrix";
+        return "parameter-matrix-flowvelocity";
     }
 
-
     /**
      * This method fetches all DischargeZones for a given river (extracted from
      * <i>artifact</i>) and returns a KVP[] where the key is the ID of the
      * DischargeZone and the value is a string that consists of lower discharge
      * and upper discharge.
      *
-     * @param artifact Needs to be a D4EArtifact that provides river
-     * information.
-     * @param parameterName The name of a parameter.
+     * @param artifact
+     *            Needs to be a D4EArtifact that provides river
+     *            information.
+     * @param parameterName
+     *            The name of a parameter.
      *
      * @return a KVP[].
      */
     @Override
-    protected KVP<Integer, String>[] getOptions(
-        Artifact artifact,
-        String   parameterName
-    )
-    throws IllegalArgumentException
-    {
+    protected KVP<Integer, String>[] getOptions(final Artifact artifact, final String parameterName) throws IllegalArgumentException {
         if (!testParameterName(parameterName)) {
-            throw new IllegalArgumentException(
-                "Invalid parameter for state: '" + parameterName + "'");
+            throw new IllegalArgumentException("Invalid parameter for state: '" + parameterName + "'");
         }
 
-        List<DischargeZone> zones = getDischargeZones(artifact);
+        final List<DischargeZone> zones = getDischargeZones(artifact);
 
-        KVP[] kvp = new KVP[zones.size()];
+        final KVP[] kvp = new KVP[zones.size()];
 
         Collections.sort(zones, new Comparator<DischargeZone>() {
             @Override
-            public int compare(DischargeZone a, DischargeZone b) {
+            public int compare(final DischargeZone a, final DischargeZone b) {
                 return a.getValue().compareTo(b.getValue());
             }
         });
 
         int i = 0;
 
-        for (DischargeZone zone: zones) {
-            String lower = zone.getLowerDischarge();
-            String upper = zone.getUpperDischarge();
+        for (final DischargeZone zone : zones) {
+            final String lower = zone.getLowerDischarge();
+            final String upper = zone.getUpperDischarge();
 
             if (lower.equals(upper)) {
                 kvp[i] = new KVP(zone.getId(), lower);
-            }
-            else {
+            } else {
                 kvp[i] = new KVP(zone.getId(), lower + " - " + upper);
             }
             i++;
@@ -95,81 +82,67 @@
         return kvp;
     }
 
-
     @Override
-    protected String getLabelFor(
-        CallContext cc,
-        String      parameterName,
-        int         value
-    ) throws IllegalArgumentException
-    {
+    protected String getLabelFor(final CallContext cc, final String parameterName, final int value) throws IllegalArgumentException {
         if (!testParameterName(parameterName)) {
-            throw new IllegalArgumentException(
-                "Invalid parameter for state: '" + parameterName + "'");
+            throw new IllegalArgumentException("Invalid parameter for state: '" + parameterName + "'");
         }
 
-        DischargeZone zone = DischargeZone.getDischargeZoneById(value);
+        final DischargeZone zone = DischargeZone.getDischargeZoneById(value);
 
         if (zone == null) {
-            throw new IllegalArgumentException(
-                "Invalid id for DischargeZone: '" + value + "'");
+            throw new IllegalArgumentException("Invalid id for DischargeZone: '" + value + "'");
         }
 
-        String lo = zone.getLowerDischarge();
-        String hi = zone.getUpperDischarge();
+        final String lo = zone.getLowerDischarge();
+        final String hi = zone.getUpperDischarge();
 
-        return hi != null && !lo.equals(hi)
-            ? lo + " - " + hi
-            : lo;
+        return hi != null && !lo.equals(hi) ? lo + " - " + hi : lo;
     }
 
-
     /**
      * This method might be used to test, if a parameter name is handled by this
      * state.
      *
-     * @param parameterName The name of a parameter.
+     * @param parameterName
+     *            The name of a parameter.
      *
      * @return true, if parameterName is one of <i>MAIN_CHANNEL</i> or
-     * <i>TOTAL_CHANNEL</i>. Otherwise false.
+     *         <i>TOTAL_CHANNEL</i>. Otherwise false.
      */
-    protected boolean testParameterName(String parameterName) {
+    protected boolean testParameterName(final String parameterName) {
         if (parameterName == null || parameterName.length() == 0) {
             return false;
-        }
-        else if (parameterName.equals(MAIN_CHANNEL)) {
+        } else if (parameterName.equals(MAIN_CHANNEL)) {
             return true;
-        }
-        else if (parameterName.equals(TOTAL_CHANNEL)) {
+        } else if (parameterName.equals(TOTAL_CHANNEL)) {
             return true;
-        }
-        else {
+        } else {
             return false;
         }
     }
 
-
     /**
      * Returns all discharge zones for a given river. The river information is
      * extracted from <i>artifact</i> using RiverUtils.getRiver().
      *
-     * @param artifact Needs to be a D4EArtifact that stores a rivername.
+     * @param artifact
+     *            Needs to be a D4EArtifact that stores a rivername.
      *
      * @return a list of DischargeZones.
      *
-     * @throws IllegalArgumentException if no river information is provided by
-     * <i>artifact</i>.
+     * @throws IllegalArgumentException
+     *             if no river information is provided by
+     *             <i>artifact</i>.
      */
-    protected List<DischargeZone> getDischargeZones(Artifact artifact)
-    throws IllegalArgumentException
-    {
-        River river = RiverUtils.getRiver((D4EArtifact) artifact);
+    protected List<DischargeZone> getDischargeZones(final Artifact artifact) throws IllegalArgumentException {
+        final River river = RiverUtils.getRiver((D4EArtifact) artifact);
 
         if (river == null) {
             throw new IllegalArgumentException("No river found");
         }
 
-        List<DischargeZone> zones = DischargeZone.getDischargeZones(river);
+        final List<DischargeZone> zones = DischargeZone.getDischargeZones(river);
 
         log.debug("Found " + zones.size() + " DischargeZones.");
 
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/SoundingsSelect.java	Thu Aug 09 12:03:30 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/SoundingsSelect.java	Thu Aug 09 15:22:31 2018 +0200
@@ -18,15 +18,14 @@
 import org.dive4elements.artifacts.common.model.KVP;
 import org.dive4elements.artifacts.common.utils.XMLUtils;
 import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator;
+import org.dive4elements.river.artifacts.D4EArtifact;
+import org.dive4elements.river.artifacts.resources.Resources;
 import org.dive4elements.river.model.BedHeight;
 import org.dive4elements.river.model.River;
-import org.dive4elements.river.artifacts.D4EArtifact;
-import org.dive4elements.river.artifacts.resources.Resources;
 import org.dive4elements.river.utils.Formatter;
 import org.dive4elements.river.utils.RiverUtils;
 import org.w3c.dom.Element;
 
-
 public class SoundingsSelect extends DefaultState {
 
     public static final String SOUNDINGS = "soundings";
@@ -36,20 +35,13 @@
     /** Private log. */
     private static final Logger log = Logger.getLogger(SoundingsSelect.class);
 
-
     @Override
     public String getUIProvider() {
-        return "parameter-matrix";
+        return "parameter-matrix-sounding";
     }
 
     @Override
-    protected void appendItems(
-        Artifact       artifact,
-        ElementCreator creator,
-        String         name,
-        CallContext    context,
-        Element        select
-    ) {
+    protected void appendItems(final Artifact artifact, final ElementCreator creator, final String name, final CallContext context, final Element select) {
         try {
             creator.addAttr(select, "type", "multiattribute", true);
 
@@ -57,99 +49,73 @@
 
             getOptions(artifact, name, context, creator, select);
         }
-        catch (IllegalArgumentException iae) {
+        catch (final IllegalArgumentException iae) {
             log.warn("Illegal argument", iae);
         }
     }
 
-    private static Element order(
-        ElementCreator creator,
-        String name,
-        String order
-    ) {
-        Element element = creator.create(name);
+    private static Element order(final ElementCreator creator, final String name, final String order) {
+        final Element element = creator.create(name);
         creator.addAttr(element, "order", order, false);
         return element;
     }
 
-    private void appendMeta(ElementCreator creator, Element select) {
-
-        Element meta = creator.create("meta");
+    private void appendMeta(final ElementCreator creator, final Element select) {
 
-        meta.appendChild(order(creator, "year",           "0"));
-        meta.appendChild(order(creator, "value",          "1"));
+        final Element meta = creator.create("meta");
+        meta.appendChild(order(creator, "year", "0"));
+        meta.appendChild(order(creator, "value", "1"));
         meta.appendChild(order(creator, "analyzed_range", "2"));
-        meta.appendChild(order(creator, "label",          "3"));
-        meta.appendChild(order(creator, "minfo_type",     "4"));
+        meta.appendChild(order(creator, "label", "3"));
+        meta.appendChild(order(creator, "minfo_type", "4"));
 
         select.appendChild(meta);
 
     }
 
-    protected KVP<String, String>[] getOptions(
-        Artifact artifact,
-        String   parameterName,
-        CallContext context,
-        ElementCreator creator,
-        Element select
-    )
-    throws IllegalArgumentException
-    {
+    protected KVP<String, String>[] getOptions(final Artifact artifact, final String parameterName, final CallContext context, final ElementCreator creator,
+            final Element select) throws IllegalArgumentException {
         log.debug("Get options for parameter: '" + parameterName + "'");
 
         if (!testParameterName(parameterName)) {
-            throw new IllegalArgumentException(
-                "Invalid parameter for state: '" + parameterName + "'");
+            throw new IllegalArgumentException("Invalid parameter for state: '" + parameterName + "'");
         }
 
-        River river = RiverUtils.getRiver((D4EArtifact) artifact);
-        double lo = ((D4EArtifact) artifact).getDataAsDouble("ld_from");
-        double hi = ((D4EArtifact) artifact).getDataAsDouble("ld_to");
+        final River river = RiverUtils.getRiver((D4EArtifact) artifact);
+        final double lo = ((D4EArtifact) artifact).getDataAsDouble("ld_from");
+        final double hi = ((D4EArtifact) artifact).getDataAsDouble("ld_to");
 
-        double kmLo = Math.min(lo, hi);
-        double kmHi = Math.max(lo, hi);
+        final double kmLo = Math.min(lo, hi);
+        final double kmHi = Math.max(lo, hi);
 
         appendSingles(river, kmLo, kmHi, creator, select, context);
 
-        List<KVP<String, String>> kvp =
-            Collections.<KVP<String, String>>emptyList();
+        final List<KVP<String, String>> kvp = Collections.<KVP<String, String>>emptyList();
         return kvp.toArray(new KVP[kvp.size()]);
     }
 
-
-    protected void appendSingles(
-        River river,
-        double kmLo,
-        double kmHi,
-        ElementCreator creator,
-        Element select,
-        CallContext context
-    ) {
-        List<BedHeight> singles =
-            BedHeight.getBedHeights(river, kmLo, kmHi);
+    protected void appendSingles(final River river, final double kmLo, final double kmHi, final ElementCreator creator, final Element select,
+            final CallContext context) {
+        final List<BedHeight> singles = BedHeight.getBedHeights(river, kmLo, kmHi);
 
         if (singles != null) {
-            int size = singles.size();
+            final int size = singles.size();
 
             log.debug("Found " + size + " singles.");
 
-            NumberFormat nf = Formatter.getCalculationKm(context.getMeta());
+            final NumberFormat nf = Formatter.getCalculationKm(context.getMeta());
             for (int i = 0; i < size; i++) {
-                BedHeight s = singles.get(i);
+                final BedHeight s = singles.get(i);
 
-                String id    = PREFIX_SINGLE + s.getId();
-                String value = s.getDescription();
+                final String id = PREFIX_SINGLE + s.getId();
+                final String value = s.getDescription();
 
-                Integer year = s.getYear();
-                Element item = creator.create("item");
+                final Integer year = s.getYear();
+                final Element item = creator.create("item");
                 creator.addAttr(item, "label", value, true);
                 creator.addAttr(item, "value", id, true);
-                creator.addAttr(item, "analyzed_range",
-                    nf.format(s.getRange().getA()) +
-                    " - " +
-                    nf.format(s.getRange().getB()));
-                creator.addAttr(item, "year",
-                    year != null ? s.getYear().toString() : "");
+                creator.addAttr(item, "analyzed_range", nf.format(s.getRange().getA()) + " - " + nf.format(s.getRange().getB()));
+                creator.addAttr(item, "year", year != null ? s.getYear().toString() : "");
                 creator.addAttr(item, "minfo_type", s.getType().getName());
                 select.appendChild(item);
             }
@@ -161,24 +127,17 @@
     }
 
     @Override
-    protected Element createStaticData(
-        D4EArtifact   flys,
-        ElementCreator creator,
-        CallContext    cc,
-        String         name,
-        String         value,
-        String         type
-    ) {
-        Element data = creator.create("data");
-        creator.addAttr(data, "name",  name, true);
-        creator.addAttr(data, "type",  type, true);
-        creator.addAttr(data, "label",
-            Resources.getMsg(cc.getMeta(), name, name), true);
+    protected Element createStaticData(final D4EArtifact flys, final ElementCreator creator, final CallContext cc, final String name, final String value,
+            final String type) {
+        final Element data = creator.create("data");
+        creator.addAttr(data, "name", name, true);
+        creator.addAttr(data, "type", type, true);
+        creator.addAttr(data, "label", Resources.getMsg(cc.getMeta(), name, name), true);
 
-        String[] values = value.split(";");
+        final String[] values = value.split(";");
 
-        for (String val: values) {
-            Element item = creator.create("item");
+        for (final String val : values) {
+            final Element item = creator.create("item");
             creator.addAttr(item, "value", val, true);
             creator.addAttr(item, "label", getLabelFor(cc, name, val), true);
 
@@ -188,15 +147,9 @@
         return data;
     }
 
-    protected String getLabelFor(
-        CallContext cc,
-        String      parameterName,
-        String      value
-    ) throws IllegalArgumentException
-    {
+    protected String getLabelFor(final CallContext cc, final String parameterName, final String value) throws IllegalArgumentException {
         if (!testParameterName(parameterName)) {
-            throw new IllegalArgumentException(
-                "Invalid parameter for state: '" + parameterName + "'");
+            throw new IllegalArgumentException("Invalid parameter for state: '" + parameterName + "'");
         }
 
         if (value.indexOf(PREFIX_SINGLE) >= 0) {
@@ -205,45 +158,40 @@
         return value;
     }
 
-
-    protected String getLabelForSingle(CallContext cc, String value) {
-        String id = value.replace(PREFIX_SINGLE, "");
+    protected String getLabelForSingle(final CallContext cc, final String value) {
+        final String id = value.replace(PREFIX_SINGLE, "");
         try {
-            BedHeight s = BedHeight.getBedHeightById(
-                Integer.parseInt(id));
+            final BedHeight s = BedHeight.getBedHeightById(Integer.parseInt(id));
 
             if (s != null) {
                 return s.getDescription();
-            }
-            else {
+            } else {
                 return "no value for '" + id + "'";
             }
         }
-        catch (NumberFormatException nfe) {
+        catch (final NumberFormatException nfe) {
             log.warn("Could not parse id from string '" + id + "'", nfe);
         }
 
         return "n.A.";
     }
 
-
     /**
      * This method might be used to test, if a parameter name
      * is handled by this state.
      *
-     * @param parameterName The name of a parameter.
+     * @param parameterName
+     *            The name of a parameter.
      *
      * @return true, if parameterName is one of <i>MAIN_CHANNEL</i> or
-     * <i>TOTAL_CHANNEL</i>. Otherwise false.
+     *         <i>TOTAL_CHANNEL</i>. Otherwise false.
      */
-    protected boolean testParameterName(String parameterName) {
+    protected boolean testParameterName(final String parameterName) {
         if (parameterName == null || parameterName.length() == 0) {
             return false;
-        }
-        else if (parameterName.equals(SOUNDINGS)) {
+        } else if (parameterName.equals(SOUNDINGS)) {
             return true;
-        }
-        else {
+        } else {
             return false;
         }
     }
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/CharDiameter.java	Thu Aug 09 12:03:30 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/CharDiameter.java	Thu Aug 09 15:22:31 2018 +0200
@@ -12,7 +12,6 @@
 import java.util.List;
 
 import org.apache.log4j.Logger;
-
 import org.dive4elements.artifacts.Artifact;
 import org.dive4elements.artifacts.CallContext;
 import org.dive4elements.artifacts.CallMeta;
@@ -24,43 +23,28 @@
 
     private static final Logger log = Logger.getLogger(CharDiameter.class);
 
-    public static final String UI_PROVIDER = "parameter-matrix";
+    public static final String UI_PROVIDER = "parameter-matrix-char-diameter";
 
-    private static final String CHAR_DIAMETER_MIN  = "calc.bed.dmin";
-    private static final String CHAR_DIAMETER_MAX  = "calc.bed.dmax";
-    private static final String CHAR_DIAMETER_90  = "calc.bed.d90";
-    private static final String CHAR_DIAMETER_84  = "calc.bed.d84";
-    private static final String CHAR_DIAMETER_80  = "calc.bed.d80";
-    private static final String CHAR_DIAMETER_75  = "calc.bed.d75";
-    private static final String CHAR_DIAMETER_70  = "calc.bed.d70";
-    private static final String CHAR_DIAMETER_60  = "calc.bed.d60";
-    private static final String CHAR_DIAMETER_50  = "calc.bed.d50";
-    private static final String CHAR_DIAMETER_40  = "calc.bed.d40";
-    private static final String CHAR_DIAMETER_30  = "calc.bed.d30";
-    private static final String CHAR_DIAMETER_25  = "calc.bed.d25";
-    private static final String CHAR_DIAMETER_20  = "calc.bed.d20";
-    private static final String CHAR_DIAMETER_16  = "calc.bed.d16";
-    private static final String CHAR_DIAMETER_10  = "calc.bed.d10";
-    private static final String CHAR_DIAMETER_DM  = "calc.bed.dm";
+    private static final String CHAR_DIAMETER_MIN = "calc.bed.dmin";
+    private static final String CHAR_DIAMETER_MAX = "calc.bed.dmax";
+    private static final String CHAR_DIAMETER_90 = "calc.bed.d90";
+    private static final String CHAR_DIAMETER_84 = "calc.bed.d84";
+    private static final String CHAR_DIAMETER_80 = "calc.bed.d80";
+    private static final String CHAR_DIAMETER_75 = "calc.bed.d75";
+    private static final String CHAR_DIAMETER_70 = "calc.bed.d70";
+    private static final String CHAR_DIAMETER_60 = "calc.bed.d60";
+    private static final String CHAR_DIAMETER_50 = "calc.bed.d50";
+    private static final String CHAR_DIAMETER_40 = "calc.bed.d40";
+    private static final String CHAR_DIAMETER_30 = "calc.bed.d30";
+    private static final String CHAR_DIAMETER_25 = "calc.bed.d25";
+    private static final String CHAR_DIAMETER_20 = "calc.bed.d20";
+    private static final String CHAR_DIAMETER_16 = "calc.bed.d16";
+    private static final String CHAR_DIAMETER_10 = "calc.bed.d10";
+    private static final String CHAR_DIAMETER_DM = "calc.bed.dm";
 
-    public static final String[] CHAR_DIAMETER = {
-        CHAR_DIAMETER_DM,
-        CHAR_DIAMETER_10,
-        CHAR_DIAMETER_16,
-        CHAR_DIAMETER_20,
-        CHAR_DIAMETER_25,
-        CHAR_DIAMETER_30,
-        CHAR_DIAMETER_40,
-        CHAR_DIAMETER_50,
-        CHAR_DIAMETER_60,
-        CHAR_DIAMETER_70,
-        CHAR_DIAMETER_75,
-        CHAR_DIAMETER_80,
-        CHAR_DIAMETER_84,
-        CHAR_DIAMETER_90,
-        CHAR_DIAMETER_MAX,
-        CHAR_DIAMETER_MIN
-    };
+    public static final String[] CHAR_DIAMETER = { CHAR_DIAMETER_DM, CHAR_DIAMETER_10, CHAR_DIAMETER_16, CHAR_DIAMETER_20, CHAR_DIAMETER_25, CHAR_DIAMETER_30,
+            CHAR_DIAMETER_40, CHAR_DIAMETER_50, CHAR_DIAMETER_60, CHAR_DIAMETER_70, CHAR_DIAMETER_75, CHAR_DIAMETER_80, CHAR_DIAMETER_84, CHAR_DIAMETER_90,
+            CHAR_DIAMETER_MAX, CHAR_DIAMETER_MIN };
 
     @Override
     public String getUIProvider() {
@@ -68,29 +52,20 @@
     }
 
     @Override
-    protected KVP<String, String>[] getOptions(
-        Artifact artifact,
-        String parameterName,
-        CallContext context
-    )
-    throws IllegalArgumentException
-    {
-        CallMeta meta   = context.getMeta();
+    protected KVP<String, String>[] getOptions(final Artifact artifact, final String parameterName, final CallContext context) throws IllegalArgumentException {
+        final CallMeta meta = context.getMeta();
 
-        List<KVP<String, String>> rows = new ArrayList<KVP<String, String>>();
-        String key = parameterName;
-        for (int i = 0; i < CHAR_DIAMETER.length; ++i) {
-            String calc = CHAR_DIAMETER[i];
-            rows.add(new KVP (calc,
-                              Resources.getMsg(meta, calc, calc)));
+        final List<KVP<String, String>> rows = new ArrayList<>();
+        final String key = parameterName;
+        for (final String calc : CHAR_DIAMETER) {
+            rows.add(new KVP(calc, Resources.getMsg(meta, calc, calc)));
         }
 
         return rows.toArray(new KVP[rows.size()]);
     }
 
     @Override
-    protected String getLabelFor(CallContext cc, String parameterName,
-            String value) throws IllegalArgumentException {
+    protected String getLabelFor(final CallContext cc, final String parameterName, final String value) throws IllegalArgumentException {
 
         return Resources.getMsg(cc.getMeta(), value, value);
     }
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java	Thu Aug 09 12:03:30 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java	Thu Aug 09 15:22:31 2018 +0200
@@ -1608,4 +1608,7 @@
     String uinfo_inundation_duration_set_vegetation_zone();
 
     String bundu_wst_export();
+
+    String name_of_sounding();
+
 }
\ No newline at end of file
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties	Thu Aug 09 12:03:30 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties	Thu Aug 09 15:22:31 2018 +0200
@@ -169,6 +169,7 @@
 
 minfo_type = Type
 analyzed_range = Analyzed Range
+name_of_sounding = Name of Sounding
 
 wqTitle = Input for W/Q Data
 wqadaptedTitle = Input for W/Q Data
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties	Thu Aug 09 12:03:30 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties	Thu Aug 09 15:22:31 2018 +0200
@@ -169,6 +169,7 @@
 
 minfo_type = Aufnahmeart
 analyzed_range = ausgewertete Strecke
+name_of_sounding = Name der Peilung
 
 wqTitle = Eingabe f\u00fcr W/Q Daten
 wqadaptedTitle = Eingabe f\u00fcr W/Q Daten
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrix.java	Thu Aug 09 12:03:30 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrix.java	Thu Aug 09 15:22:31 2018 +0200
@@ -8,19 +8,11 @@
 
 package org.dive4elements.river.client.client.ui;
 
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.user.client.ui.CheckBox;
-import com.google.gwt.user.client.ui.Grid;
-import com.google.gwt.user.client.ui.Widget;
-
-import com.smartgwt.client.types.ListGridFieldType;
-import com.smartgwt.client.widgets.Canvas;
-import com.smartgwt.client.widgets.Label;
-import com.smartgwt.client.widgets.grid.ListGrid;
-import com.smartgwt.client.widgets.grid.ListGridField;
-import com.smartgwt.client.widgets.grid.ListGridRecord;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 import org.dive4elements.river.client.client.FLYSConstants;
 import org.dive4elements.river.client.shared.model.DataItem;
@@ -29,12 +21,18 @@
 import org.dive4elements.river.client.shared.model.MultiDataItem;
 import org.dive4elements.river.client.shared.model.StringOptionsData;
 
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.user.client.ui.CheckBox;
+import com.google.gwt.user.client.ui.Grid;
+import com.google.gwt.user.client.ui.Widget;
+import com.smartgwt.client.types.ListGridFieldType;
+import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.Label;
+import com.smartgwt.client.widgets.grid.ListGrid;
+import com.smartgwt.client.widgets.grid.ListGridField;
+import com.smartgwt.client.widgets.grid.ListGridRecord;
 
 /**
  * Some parameters take the form of on/off options that can also be seen
@@ -52,242 +50,235 @@
 
         private static final long serialVersionUID = -3493426383086860118L;
 
-        protected String              name;
+        protected String name;
         protected Map<String, String> values;
 
         private Column() {
             this.values = new HashMap<String, String>();
         }
 
-        public Column(String name) {
+        public Column(final String name) {
             this();
             this.name = name;
         }
 
-        public void addValue(String label, String value) {
-            values.put(label, value);
+        public void addValue(final String label, final String value) {
+            this.values.put(label, value);
         }
 
-        public String getValue(String label) {
-            return values.get(label);
+        public String getValue(final String label) {
+            return this.values.get(label);
         }
     } // end of class Column
 
-    /** The message class that provides i18n strings.*/
+    /** The message class that provides i18n strings. */
     protected FLYSConstants MESSAGE = GWT.create(FLYSConstants.class);
 
     public static final int CELL_HEIGHT = 25;
 
-    private Map<String, Column> columns;
-    private List<String>        columnNames;
-    private List<String>        valueNames;
-    private Map<String, List<String>> attributes;
+    private final Map<String, Column> columns;
+    private final List<String> columnNames;
+    private final List<String> valueNames;
+    private final Map<String, List<String>> attributes;
 
     /** Maps column names to list of rows' first fields. */
-    private Map<String, List<String>> selected;
+    private final Map<String, List<String>> selected;
+    private final String itemname;
 
-    public ParameterMatrix() {
+    public ParameterMatrix(final String itemnameColTitle) {
         super();
-        this.columns     = new HashMap<String, Column>();
+        this.itemname = itemnameColTitle;
+        this.columns = new HashMap<String, Column>();
         this.columnNames = new ArrayList<String>();
-        this.valueNames  = new ArrayList<String>();
-        this.selected    = new HashMap<String, List<String>>();
-        this.attributes  = new HashMap<String, List<String>>();
+        this.valueNames = new ArrayList<String>();
+        this.selected = new HashMap<String, List<String>>();
+        this.attributes = new HashMap<String, List<String>>();
     }
 
+    public void addColumn(final IntegerOptionsData group) {
+        final String groupTitle = group.getLabel();
 
-    public void addColumn(IntegerOptionsData group) {
-        String groupTitle = group.getLabel();
-
-        Column     col   = new Column(groupTitle);
-        DataItem[] items = group.getItems();
+        final Column col = new Column(groupTitle);
+        final DataItem[] items = group.getItems();
 
         if (items == null) {
             GWT.log("No items found in StringOptionsData '" + groupTitle + "'");
             return;
         }
 
-        for (DataItem item: items) {
-            String title = item.getLabel();
+        for (final DataItem item : items) {
+            final String title = item.getLabel();
 
-            if (valueNames.indexOf(title) < 0) {
-                valueNames.add(title);
+            if (this.valueNames.indexOf(title) < 0) {
+                this.valueNames.add(title);
             }
 
             col.addValue(item.getLabel(), item.getStringValue());
         }
 
-        columnNames.add(groupTitle);
-        columns.put(groupTitle, col);
-    }
-
-
-    public List<String> getColumnNames() {
-        return columnNames;
+        this.columnNames.add(groupTitle);
+        this.columns.put(groupTitle, col);
     }
 
+    public List<String> getColumnNames() {
+        return this.columnNames;
+    }
 
-    public void addColumn(StringOptionsData options) {
-        String groupTitle = options.getLabel();
+    public void addColumn(final StringOptionsData options) {
+        final String groupTitle = options.getLabel();
 
-        Column     col   = new Column(groupTitle);
-        DataItem[] items = options.getItems();
+        final Column col = new Column(groupTitle);
+        final DataItem[] items = options.getItems();
 
         if (items == null) {
-            GWT.log("No items found in StringOptionsData '"
-                + groupTitle + "'");
+            GWT.log("No items found in StringOptionsData '" + groupTitle + "'");
             return;
         }
 
-        for (DataItem item: items) {
-            String title = item.getLabel();
+        for (final DataItem item : items) {
+            final String title = item.getLabel();
 
-            if (valueNames.indexOf(title) < 0) {
-                valueNames.add(title);
+            if (this.valueNames.indexOf(title) < 0) {
+                this.valueNames.add(title);
             }
 
             col.addValue(item.getLabel(), item.getStringValue());
         }
 
-        columnNames.add(groupTitle);
-        columns.put(groupTitle, col);
+        this.columnNames.add(groupTitle);
+        this.columns.put(groupTitle, col);
     }
 
-    public void addColumn(MultiAttributeData options) {
+    public void addColumn(final MultiAttributeData options) {
         GWT.log("Add Columns for MultiAttribute data");
-        String groupTitle = options.getLabel();
+        final String groupTitle = options.getLabel();
 
-        Column     col   = new Column(groupTitle);
-        DataItem[] items = options.getItems();
+        final Column col = new Column(groupTitle);
+        final DataItem[] items = options.getItems();
 
         if (items == null) {
-            GWT.log("No items found in StringOptionsData '"
-                + groupTitle + "'");
+            GWT.log("No items found in StringOptionsData '" + groupTitle + "'");
             return;
         }
 
-        MultiDataItem mItem = (MultiDataItem)items[0];
-        for (Map.Entry<String, String> entry: mItem.getValue().entrySet()) {
-            if (entry.getKey().equals("art:value") ||
-                entry.getKey().equals("art:label")) {
+        final MultiDataItem mItem = (MultiDataItem) items[0];
+        for (final Map.Entry<String, String> entry : mItem.getValue().entrySet()) {
+            if (entry.getKey().equals("art:value") || entry.getKey().equals("art:label")) {
                 continue;
             }
-            attributes.put(entry.getKey(), new ArrayList<String>());
+            this.attributes.put(entry.getKey(), new ArrayList<String>());
         }
-        for (DataItem item: items) {
+        for (final DataItem item : items) {
             GWT.log("multidataitem: " + item.getLabel());
-            String title = item.getLabel();
+            final String title = item.getLabel();
 
-            if (valueNames.indexOf(title) < 0) {
-                valueNames.add(title);
+            if (this.valueNames.indexOf(title) < 0) {
+                this.valueNames.add(title);
             }
-            MultiDataItem mi = (MultiDataItem)item;
-            Map<String, String> vs = mi.getValue();
-            for (Map.Entry<String, String>e: vs.entrySet()) {
-                if (e.getKey().equals("art:value") ||
-                    e.getKey().equals("art:label")) {
+            final MultiDataItem mi = (MultiDataItem) item;
+            final Map<String, String> vs = mi.getValue();
+            for (final Map.Entry<String, String> e : vs.entrySet()) {
+                if (e.getKey().equals("art:value") || e.getKey().equals("art:label")) {
                     continue;
                 }
-                List<String> data = attributes.get(e.getKey());
+                final List<String> data = this.attributes.get(e.getKey());
                 data.add(e.getValue());
             }
             col.addValue(item.getLabel(), mi.getValue().get("art:value"));
         }
 
-        columnNames.add(groupTitle);
-        columns.put(groupTitle, col);
+        this.columnNames.add(groupTitle);
+        this.columns.put(groupTitle, col);
     }
 
     public Widget createParameterGrid() {
-        listGrid = new ListGrid();
-        listGrid.setShowAllRecords(true);
-        listGrid.setWrapCells(true);
-        listGrid.setShowHeaderContextMenu(false);
-        listGrid.setCanReorderFields(false);
-//        listGrid.setCanSort(false);
-        //listGrid.setAutoFitData(Autofit.VERTICAL);
-        listGrid.setFixedRecordHeights(false);
+        this.listGrid = new ListGrid();
+        this.listGrid.setShowAllRecords(true);
+        this.listGrid.setWrapCells(true);
+        this.listGrid.setShowHeaderContextMenu(false);
+        this.listGrid.setCanReorderFields(false);
+        // listGrid.setCanSort(false);
+        // listGrid.setAutoFitData(Autofit.VERTICAL);
+        this.listGrid.setFixedRecordHeights(false);
         // TODO: Then also need "autofit" (when wrapping)
 
-        ListGridField itemNameField = new ListGridField("itemname", " ");
-        ArrayList<ListGridField> fields = new ArrayList<ListGridField>();
+        final ListGridField itemNameField = new ListGridField("itemname", this.itemname);
+        final ArrayList<ListGridField> fields = new ArrayList<ListGridField>();
         fields.add(itemNameField);
 
-        for (Map.Entry<String, List<String>> entry: attributes.entrySet()) {
-            ListGridField attrField = new ListGridField(
-                entry.getKey(), MESSAGE.getString(entry.getKey()));
+        for (final Map.Entry<String, List<String>> entry : this.attributes.entrySet()) {
+            final ListGridField attrField = new ListGridField(entry.getKey(), this.MESSAGE.getString(entry.getKey()));
             fields.add(attrField);
         }
 
-        for (int i = 0, n = columnNames.size(); i < n; i++) {
-            ListGridField field = new ListGridField(
-                columnNames.get(i), MESSAGE.getString(columnNames.get(i)));
+        for (int i = 0, n = this.columnNames.size(); i < n; i++) {
+            final ListGridField field = new ListGridField(this.columnNames.get(i), this.MESSAGE.getString(this.columnNames.get(i)));
             field.setType(ListGridFieldType.BOOLEAN);
             field.setCanEdit(true);
             fields.add(field);
-            selected.put(columnNames.get(i), new ArrayList<String>());
+            this.selected.put(this.columnNames.get(i), new ArrayList<String>());
         }
 
-        ListGridField[] fieldsArray = fields.toArray(
-            new ListGridField[fields.size()]);
-        listGrid.setFields(fieldsArray);
+        final ListGridField[] fieldsArray = fields.toArray(new ListGridField[fields.size()]);
+        this.listGrid.setFields(fieldsArray);
 
-        int nVals = valueNames.size();
+        final int nVals = this.valueNames.size();
 
-        ArrayList<ListGridRecord> records = new ArrayList<ListGridRecord>();
+        final ArrayList<ListGridRecord> records = new ArrayList<ListGridRecord>();
         for (int j = 0; j < nVals; j++) {
-            String valueName  = valueNames.get(j);
-            ListGridRecord record = new ListGridRecord();
+            final String valueName = this.valueNames.get(j);
+            final ListGridRecord record = new ListGridRecord();
             record.setAttribute("itemname", valueName);
-            for (int i = 0, n = columnNames.size(); i < n; i++) {
-                String columnName = columnNames.get(i);
-                Column col        = columns.get(columnName);
-                String value      = col.getValue(valueName);
+            for (int i = 0, n = this.columnNames.size(); i < n; i++) {
+                final String columnName = this.columnNames.get(i);
+                final Column col = this.columns.get(columnName);
+                final String value = col.getValue(valueName);
                 record.setAttribute(columnName, false);
-                record.setAttribute(columnName+"-value", value);
+                record.setAttribute(columnName + "-value", value);
             }
-            for (Map.Entry<String, List<String>> entry: attributes.entrySet()) {
+            for (final Map.Entry<String, List<String>> entry : this.attributes.entrySet()) {
                 record.setAttribute(entry.getKey(), entry.getValue().get(j));
             }
             records.add(record);
         }
 
-        listGrid.setData(records.toArray(new ListGridRecord[records.size()]));
+        this.listGrid.setData(records.toArray(new ListGridRecord[records.size()]));
 
-        return listGrid;
+        return this.listGrid;
 
     }
 
-
     /**
      * Returns a widget with matrix of checkboxes and labels.
-     * @param asListGrid if true, use a ListGrid (for inclusion in SmartGWT
-     *                   containers, avoiding scrollbar-issues.
+     *
+     * @param asListGrid
+     *            if true, use a ListGrid (for inclusion in SmartGWT
+     *            containers, avoiding scrollbar-issues.
      */
-    public Widget create(boolean asListGrid) {
+    public Widget create(final boolean asListGrid) {
         if (asListGrid) {
             return createParameterGrid();
         }
-        Grid grid = new Grid(valueNames.size() + 1, columnNames.size() + 1);
-
-        for (int i = 0, n = columnNames.size(); i < n; i++) {
-            String columnName = columnNames.get(i);
-            Column col        = columns.get(columnName);
+        final Grid grid = new Grid(this.valueNames.size() + 1, this.columnNames.size() + 1);
 
-            selected.put(columnName, new ArrayList<String>());
+        for (int i = 0, n = this.columnNames.size(); i < n; i++) {
+            final String columnName = this.columnNames.get(i);
+            final Column col = this.columns.get(columnName);
 
-            grid.setWidget(0, i+1, createLabel(MESSAGE.getString(columnName)));
+            this.selected.put(columnName, new ArrayList<String>());
 
-            for (int j = 0, o = valueNames.size(); j < o; j++) {
-                String valueName = valueNames.get(j);
-                String value     = col.getValue(valueName);
+            grid.setWidget(0, i + 1, createLabel(this.MESSAGE.getString(columnName)));
+
+            for (int j = 0, o = this.valueNames.size(); j < o; j++) {
+                final String valueName = this.valueNames.get(j);
+                final String value = col.getValue(valueName);
 
                 if (i == 0) {
-                    grid.setWidget(j+1, 0, createLabel(valueName));
+                    grid.setWidget(j + 1, 0, createLabel(valueName));
                 }
 
                 if (value != null && value.length() > 0) {
-                    grid.setWidget(j+1, i+1, createCheckBox(columnName, value));
+                    grid.setWidget(j + 1, i + 1, createCheckBox(columnName, value));
                 }
             }
         }
@@ -295,58 +286,52 @@
         return grid;
     }
 
-
     /** Creates label with given text. */
-    protected Label createLabel(String text) {
-        Label label = new Label(text);
+    protected Label createLabel(final String text) {
+        final Label label = new Label(text);
         label.setHeight(CELL_HEIGHT);
 
         return label;
     }
 
-
     /** Create Checkbox for column/value. */
     protected Canvas createCheckBox(final String colName, final String value) {
-        CheckBox box = new CheckBox();
+        final CheckBox box = new CheckBox();
         box.addClickHandler(new ClickHandler() {
 
             @Override
-            public void onClick(ClickEvent event) {
-                Map<String, List<String>> selection = getSelection();
+            public void onClick(final ClickEvent event) {
+                final Map<String, List<String>> selection = getSelection();
 
-                List<String> values = selection.get(colName);
+                final List<String> values = selection.get(colName);
                 if (values.indexOf(value) >= 0) {
                     values.remove(value);
-                }
-                else {
+                } else {
                     values.add(value);
                 }
             }
         });
 
-        Canvas c = new Canvas();
+        final Canvas c = new Canvas();
         c.addChild(box);
         return c;
     }
 
-
     public Map<String, List<String>> getSelection() {
-        if (listGrid == null) {
-            return selected;
+        if (this.listGrid == null) {
+            return this.selected;
         }
 
-        ListGridRecord[] records = listGrid.getRecords();
-        Map<String, List<String>> result = new HashMap<String, List<String>>();
-        for (ListGridRecord record : records) {
-            for (int i = 0, n = columnNames.size(); i < n; i++) {
-                String columnName = columnNames.get(i);
+        final ListGridRecord[] records = this.listGrid.getRecords();
+        final Map<String, List<String>> result = new HashMap<String, List<String>>();
+        for (final ListGridRecord record : records) {
+            for (int i = 0, n = this.columnNames.size(); i < n; i++) {
+                final String columnName = this.columnNames.get(i);
                 if (Boolean.valueOf(record.getAttribute(columnName)) == true) {
                     if (result.containsKey(columnName)) {
-                        result.get(columnName).add(
-                            record.getAttribute(columnName + "-value"));
-                    }
-                    else {
-                        List<String> items = new ArrayList<String>();
+                        result.get(columnName).add(record.getAttribute(columnName + "-value"));
+                    } else {
+                        final List<String> items = new ArrayList<String>();
                         items.add(record.getAttribute(columnName + "-value"));
                         result.put(columnName, items);
                     }
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrixPanel.java	Thu Aug 09 12:03:30 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrixPanel.java	Thu Aug 09 15:22:31 2018 +0200
@@ -8,13 +8,10 @@
 
 package org.dive4elements.river.client.client.ui;
 
-import com.google.gwt.core.client.GWT;
-
-import com.smartgwt.client.widgets.Canvas;
-import com.smartgwt.client.widgets.Label;
-import com.smartgwt.client.widgets.layout.HLayout;
-import com.smartgwt.client.widgets.layout.VLayout;
-import com.smartgwt.client.widgets.layout.LayoutSpacer;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 import org.dive4elements.river.client.client.FLYSConstants;
 import org.dive4elements.river.client.shared.model.Data;
@@ -26,10 +23,12 @@
 import org.dive4elements.river.client.shared.model.MultiAttributeData;
 import org.dive4elements.river.client.shared.model.StringOptionsData;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import com.google.gwt.core.client.GWT;
+import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.Label;
+import com.smartgwt.client.widgets.layout.HLayout;
+import com.smartgwt.client.widgets.layout.LayoutSpacer;
+import com.smartgwt.client.widgets.layout.VLayout;
 
 /**
  * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
@@ -42,33 +41,34 @@
     protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class);
 
     private ParameterMatrix matrix;
+    private final String itemnameColTitle;
+
+    public ParameterMatrixPanel(final String itemNameColTitle) {
+        this.itemnameColTitle = itemNameColTitle;
+    }
 
     @Override
     protected Data[] getData() {
-        Map<String, List<String>> selection = matrix.getSelection();
-        Set<Map.Entry<String, List<String>>> entries = selection.entrySet();
+        final Map<String, List<String>> selection = this.matrix.getSelection();
+        final Set<Map.Entry<String, List<String>>> entries = selection.entrySet();
 
-        Data[] list = new Data[matrix.getColumnNames().size()];
+        final Data[] list = new Data[this.matrix.getColumnNames().size()];
 
         int i = 0;
 
-        for (Map.Entry<String, List<String>> entry: entries) {
-            String value = buildValueString(entry.getValue());
+        for (final Map.Entry<String, List<String>> entry : entries) {
+            final String value = buildValueString(entry.getValue());
 
-            DataItem item = new DefaultDataItem(
-                entry.getKey(),
-                null,
-                value);
+            final DataItem item = new DefaultDataItem(entry.getKey(), null, value);
 
-            list[i++] = new DefaultData(
-                entry.getKey(), null, null, new DataItem[] { item });
+            list[i++] = new DefaultData(entry.getKey(), null, null, new DataItem[] { item });
         }
 
         // To delete old values already given, construct empty ones
         // for all not-specified options.
-        for (String colName : matrix.getColumnNames()) {
+        for (final String colName : this.matrix.getColumnNames()) {
             boolean found = false;
-            for (Data data : list) {
+            for (final Data data : list) {
                 if (data != null && data.getLabel().equals(colName)) {
                     found = true;
                     break;
@@ -76,21 +76,19 @@
             }
             if (!found) {
                 // Add an empty data for this.
-                list[i++] = new DefaultData(
-                    colName, null, null, new DataItem[] { });
+                list[i++] = new DefaultData(colName, null, null, new DataItem[] {});
             }
         }
 
         return list;
     }
 
-
-    protected String buildValueString(List<String> values) {
-        StringBuilder sb = new StringBuilder();
+    protected String buildValueString(final List<String> values) {
+        final StringBuilder sb = new StringBuilder();
 
         boolean first = true;
 
-        for (String value: values) {
+        for (final String value : values) {
             if (!first) {
                 sb.append(";");
             }
@@ -103,40 +101,37 @@
         return sb.toString();
     }
 
-
     /** Canvas to show in non-edit mode. */
     @Override
-    public Canvas createOld(DataList dataList) {
-        HLayout layout  = new HLayout();
-        VLayout vLayout = new VLayout();
+    public Canvas createOld(final DataList dataList) {
+        final HLayout layout = new HLayout();
+        final VLayout vLayout = new VLayout();
 
         layout.setWidth(300);
         vLayout.setWidth(280);
 
         for (int i = 0, n = dataList.size(); i < n; i++) {
-            HLayout row  = new HLayout();
-            VLayout cols = new VLayout();
+            final HLayout row = new HLayout();
+            final VLayout cols = new VLayout();
 
             row.setWidth(300);
             cols.setWidth(100);
 
-            Data       data  = dataList.get(i);
-            DataItem[] items = data.getItems();
+            final Data data = dataList.get(i);
+            final DataItem[] items = data.getItems();
 
-            Label parameter = new Label(data.getDescription());
+            final Label parameter = new Label(data.getDescription());
             parameter.setWidth(200);
 
-            for (int j = 0, m = items.length; j < m; j++) {
-                DataItem item  = items[j];
-                Label    value = new Label(item.getLabel());
+            for (final DataItem item : items) {
+                final Label value = new Label(item.getLabel());
 
-                value.setValign(
-                    com.smartgwt.client.types.VerticalAlignment.TOP);
+                value.setValign(com.smartgwt.client.types.VerticalAlignment.TOP);
                 value.setWidth(130);
                 value.setHeight(15);
 
                 cols.addMember(value);
-                LayoutSpacer spacer = new LayoutSpacer();
+                final LayoutSpacer spacer = new LayoutSpacer();
                 spacer.setHeight(5);
                 cols.addMember(spacer);
             }
@@ -147,7 +142,7 @@
             vLayout.addMember(row);
         }
 
-        Canvas back = getBackButton(dataList.getState());
+        final Canvas back = getBackButton(dataList.getState());
 
         layout.addMember(vLayout);
         layout.addMember(back);
@@ -155,73 +150,66 @@
         return layout;
     }
 
-
     /** Create the main canvas in the "editing" mode. */
     @Override
-    public Canvas create(DataList dataList) {
-        VLayout v = new VLayout();
+    public Canvas create(final DataList dataList) {
+        final VLayout v = new VLayout();
         v.addMember(createTitle(dataList));
 
-        matrix = new ParameterMatrix();
+        this.matrix = new ParameterMatrix(this.itemnameColTitle);
 
-        for (Data data: dataList.getAll()) {
+        for (final Data data : dataList.getAll()) {
             if (data instanceof IntegerOptionsData) {
-                matrix.addColumn((IntegerOptionsData) data);
-            }
-            else if (data instanceof StringOptionsData) {
-                matrix.addColumn((StringOptionsData) data);
-            }
-            else if (data instanceof MultiAttributeData) {
-                matrix.addColumn((MultiAttributeData)data);
+                this.matrix.addColumn((IntegerOptionsData) data);
+            } else if (data instanceof StringOptionsData) {
+                this.matrix.addColumn((StringOptionsData) data);
+            } else if (data instanceof MultiAttributeData) {
+                this.matrix.addColumn((MultiAttributeData) data);
             }
         }
 
         // If too many items are shown, show it in the helper Panel.
         // TODO its not about the datalist, but about the "rows" in the data.
         if (dataList.getAll().size() > 5) {
-            v.addMember(matrix.create(false));
-        }
-        else {
-            helperContainer.addMember(matrix.create(true));
+            v.addMember(this.matrix.create(false));
+        } else {
+            this.helperContainer.addMember(this.matrix.create(true));
         }
         v.addMember(getNextButton());
 
         return v;
     }
 
-
     /** Reaturns a label with description of first Data. */
-    protected Canvas createTitle(DataList dataList) {
-        Data data = dataList.get(0);
-        Label label = new Label(data.getDescription());
+    protected Canvas createTitle(final DataList dataList) {
+        final Data data = dataList.get(0);
+        final Label label = new Label(data.getDescription());
         label.setHeight(35);
 
         return label;
     }
 
-
     /** Selection shall not be empty. */
     @Override
     public List<String> validate() {
-        GWT.log ("validation. validation. validation. ");
-        List<String> errors = new ArrayList<String>();
+        GWT.log("validation. validation. validation. ");
+        final List<String> errors = new ArrayList<String>();
         // Early stop on one (only) error.
         boolean ok = false;
-        for (Map.Entry<String, List<String>> entry:
-                 matrix.getSelection().entrySet()
-        ) {
-            /* single entries are allowed!!
-                if (entry.getValue() == null || entry.getValue().size() == 0) {
-                    errors.add(MESSAGES.error_values_needed());
-                    return errors;
-                }
-                */
+        for (final Map.Entry<String, List<String>> entry : this.matrix.getSelection().entrySet()) {
+            /*
+             * single entries are allowed!!
+             * if (entry.getValue() == null || entry.getValue().size() == 0) {
+             * errors.add(MESSAGES.error_values_needed());
+             * return errors;
+             * }
+             */
             if (entry.getValue() != null && entry.getValue().size() > 0) {
                 ok = true;
             }
         }
         if (!ok) {
-            errors.add(MESSAGES.error_values_needed());
+            errors.add(this.MESSAGES.error_values_needed());
         }
         return errors;
     }
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/UIProviderFactory.java	Thu Aug 09 12:03:30 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/UIProviderFactory.java	Thu Aug 09 15:22:31 2018 +0200
@@ -162,9 +162,18 @@
             return new DoubleInputPanel();
         } else if (uiProvider.equals("percent_input")) {
             return new DoubleInputPanel("percent");
-        } else if (uiProvider.equals("parameter-matrix")) {
-            return new ParameterMatrixPanel();
-        } else if (uiProvider.equals("minfo.bed.year_epoch")) {// legacy
+        } else if (uiProvider.equals("parameter-matrix-sounding")) {
+            return new ParameterMatrixPanel(getMSG().getString("name_of_sounding"));
+        } else if (uiProvider.equals("parameter-matrix-flowvelocity")) {
+            return new ParameterMatrixPanel(" "); // TODO minfo.fließgeschwindigkeiten auflusszustand und gerinne title erste spalte ausdenken (nur
+                                                  // wenn jemand
+            // danach fragt, ansonsten ist es old stuff)
+        } else if (uiProvider.equals("parameter-matrix-char-diameter")) {
+            return new ParameterMatrixPanel(" "); // TODO minfo.sohlbeschaffenheit ? title erste spalte ausdenken (nur wenn jemand
+            // danach fragt, ansonsten ist es old stuff)
+        }
+
+        else if (uiProvider.equals("minfo.bed.year_epoch")) {// legacy
             return new RadioPanel("ye_select");
         } else if (uiProvider.equals("bundu_calc_choice_radio_panel")) {
             return new BunduWstCalcSelectRadioPanel("calc_choice");
--- a/gwt-client/src/main/java/org/dive4elements/river/client/server/ArtifactDescriptionFactory.java	Thu Aug 09 12:03:30 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/server/ArtifactDescriptionFactory.java	Thu Aug 09 15:22:31 2018 +0200
@@ -13,17 +13,10 @@
 
 import javax.xml.xpath.XPathConstants;
 
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
 import org.apache.log4j.Logger;
-
 import org.dive4elements.artifacts.common.ArtifactNamespaceContext;
 import org.dive4elements.artifacts.common.utils.ClientProtocolUtils;
 import org.dive4elements.artifacts.common.utils.XMLUtils;
-
 import org.dive4elements.river.client.shared.model.ArtifactDescription;
 import org.dive4elements.river.client.shared.model.DataItem;
 import org.dive4elements.river.client.shared.model.DataList;
@@ -34,13 +27,16 @@
 import org.dive4elements.river.client.shared.model.DoubleArrayData;
 import org.dive4elements.river.client.shared.model.DoubleRangeData;
 import org.dive4elements.river.client.shared.model.IntegerArrayData;
+import org.dive4elements.river.client.shared.model.IntegerOptionsData;
 import org.dive4elements.river.client.shared.model.IntegerRangeData;
-import org.dive4elements.river.client.shared.model.IntegerOptionsData;
 import org.dive4elements.river.client.shared.model.LongRangeData;
 import org.dive4elements.river.client.shared.model.OutputMode;
 import org.dive4elements.river.client.shared.model.Recommendation;
 import org.dive4elements.river.client.shared.model.WQDataItem;
-
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 /**
  * This factory class helps creating an {@link ArtifactDescription} based on the
@@ -52,9 +48,7 @@
  */
 public class ArtifactDescriptionFactory {
 
-    private static final Logger log =
-        Logger.getLogger(ArtifactDescriptionFactory.class);
-
+    private static final Logger log = Logger.getLogger(ArtifactDescriptionFactory.class);
 
     public static final String XPATH_STATE_NAME = "@art:name";
 
@@ -70,85 +64,71 @@
 
     public static final String XPATH_STATIC_ITEM_NODE = "art:item";
 
-    public static final String XPATH_RECOMMENDED_ARTIFACTS =
-        "/art:result/art:recommended-artifacts//*[@factory]";
+    public static final String XPATH_RECOMMENDED_ARTIFACTS = "/art:result/art:recommended-artifacts//*[@factory]";
 
     /**
      * This method creates the {@link ArtifactDescription} of the DESCRIBE
      * document <i>doc</i>.
      *
-     * @param doc A DESCRIBE document.
+     * @param doc
+     *            A DESCRIBE document.
      *
      * @return the {@link ArtifactDescription}.
      */
-    public static ArtifactDescription createArtifactDescription(Document doc) {
+    public static ArtifactDescription createArtifactDescription(final Document doc) {
         log.debug("ArtifactDescriptionFactory.createArtifactDescription");
 
-        Node currentState = ClientProtocolUtils.getCurrentState(doc);
-        Node staticNode   = ClientProtocolUtils.getStaticUI(doc);
-        Node dynamicNode  = ClientProtocolUtils.getDynamicUI(doc);
-        Node reachable    = ClientProtocolUtils.getReachableStates(doc);
-        NodeList outputs  = ClientProtocolUtils.getOutputModes(doc);
+        final Node currentState = ClientProtocolUtils.getCurrentState(doc);
+        final Node staticNode = ClientProtocolUtils.getStaticUI(doc);
+        final Node dynamicNode = ClientProtocolUtils.getDynamicUI(doc);
+        final Node reachable = ClientProtocolUtils.getReachableStates(doc);
+        final NodeList outputs = ClientProtocolUtils.getOutputModes(doc);
 
-        String state = (String) XMLUtils.xpath(
-            currentState,
-            XPATH_STATE_NAME,
-            XPathConstants.STRING,
-            ArtifactNamespaceContext.INSTANCE);
+        final String state = (String) XMLUtils.xpath(currentState, XPATH_STATE_NAME, XPathConstants.STRING, ArtifactNamespaceContext.INSTANCE);
 
         log.debug("Current state name: " + state);
 
-        DataList currentData = extractCurrentData(dynamicNode, state);
-        DataList[] old       = extractOldData(staticNode);
-        String[] states      = extractReachableStates(reachable);
-        OutputMode[] outs    = extractOutputModes(outputs);
-        Recommendation[] rec = extractRecommendedArtifacts(doc);
+        final DataList currentData = extractCurrentData(dynamicNode, state);
+        final DataList[] old = extractOldData(staticNode);
+        final String[] states = extractReachableStates(reachable);
+        final OutputMode[] outs = extractOutputModes(outputs);
+        final Recommendation[] rec = extractRecommendedArtifacts(doc);
 
-        return new DefaultArtifactDescription(
-            old,
-            currentData,
-            state,
-            states,
-            outs,
-            rec);
+        return new DefaultArtifactDescription(old, currentData, state, states, outs, rec);
     }
 
-
     /**
      * This method extracts the data that the user is able to enter in the
      * current state of the artifact.
      *
-     * @param dynamicNode The dynamic node of the DESCRIBE document.
-     * @param state The name of the current state.
+     * @param dynamicNode
+     *            The dynamic node of the DESCRIBE document.
+     * @param state
+     *            The name of the current state.
      *
      * @return A {@link Data} object that represents the data which might be
-     * entered by the user in the current state or null, if no data might be
-     * entered.
+     *         entered by the user in the current state or null, if no data might be
+     *         entered.
      */
-    protected static DataList extractCurrentData(
-        Node dynamicNode,
-        String state
-    ) {
+    protected static DataList extractCurrentData(final Node dynamicNode, final String state) {
         log.debug("ArtifactDescriptionFactory.extractCurrentData");
 
-        NodeList data     = ClientProtocolUtils.getSelectNode(dynamicNode);
-        String help       = extractHelpText(dynamicNode);
-        String uiProvider = extractUIProvider(dynamicNode);
+        final NodeList data = ClientProtocolUtils.getSelectNode(dynamicNode);
+        final String help = extractHelpText(dynamicNode);
+        final String uiProvider = extractUIProvider(dynamicNode);
 
         if (data == null || data.getLength() == 0) {
             return null;
         }
 
-        int      dataNum = data.getLength();
-        DataList list    = new DataList(state, dataNum, uiProvider, null, help);
+        final int dataNum = data.getLength();
+        final DataList list = new DataList(state, dataNum, uiProvider, null, help);
 
         for (int i = 0; i < dataNum; i++) {
-            Element   d  = (Element) data.item(i);
-            String label = ClientProtocolUtils.getLabel(d);
-            String name  = XMLUtils.xpathString(
-                d, "@art:name", ArtifactNamespaceContext.INSTANCE);
-            String type  = XMLUtils.xpathString(
-                d, "@art:type", ArtifactNamespaceContext.INSTANCE);
+            final Element d = (Element) data.item(i);
+            final String label = ClientProtocolUtils.getLabel(d);
+            final String name = XMLUtils.xpathString(d, "@art:name", ArtifactNamespaceContext.INSTANCE);
+            final String type = XMLUtils.xpathString(d, "@art:type", ArtifactNamespaceContext.INSTANCE);
 
             log.debug("Create new IntegerRangeData object for: " + name);
             log.debug("New Data is from type: " + type);
@@ -156,98 +136,77 @@
             // TODO replace with DataFactory.
 
             if (type == null || type.length() == 0) {
-                NodeList   choices   = ClientProtocolUtils.getItemNodes(d);
-                DataItem[] dataItems = extractCurrentDataItems(choices);
-                DataItem   def       = extractDefaultDataItem(d);
+                final NodeList choices = ClientProtocolUtils.getItemNodes(d);
+                final DataItem[] dataItems = extractCurrentDataItems(choices);
+                final DataItem def = extractDefaultDataItem(d);
 
                 list.add(new DefaultData(name, label, null, dataItems, def));
-            }
-            else if (type.equals("intrange")) {
-                String min = ClientProtocolUtils.getMinNode(d);
-                String max = ClientProtocolUtils.getMaxNode(d);
+            } else if (type.equals("intrange")) {
+                final String min = ClientProtocolUtils.getMinNode(d);
+                final String max = ClientProtocolUtils.getMaxNode(d);
 
-                String defMin = ClientProtocolUtils.getDefMin(d);
-                String defMax = ClientProtocolUtils.getDefMax(d);
+                final String defMin = ClientProtocolUtils.getDefMin(d);
+                final String defMax = ClientProtocolUtils.getDefMax(d);
 
                 try {
-                    int lower = Integer.parseInt(min);
-                    int upper = Integer.parseInt(max);
-
-                    if (defMin != null && defMax != null) {
-                        list.add(new IntegerRangeData(
-                                name, label,
-                                lower, upper,
-                                Integer.parseInt(defMin),
-                                Integer.parseInt(defMax)));
-                    }
-                    else {
-                        list.add(
-                            new IntegerRangeData(name, label, lower, upper));
-                    }
-                }
-                catch (NumberFormatException nfe) {
-                    log.warn("NumberFormatException: ", nfe);
-                }
-            }
-            else if (type.equals("longrange")) {
-                String min = ClientProtocolUtils.getMinNode(d);
-                String max = ClientProtocolUtils.getMaxNode(d);
-
-                String defMin = ClientProtocolUtils.getDefMin(d);
-                String defMax = ClientProtocolUtils.getDefMax(d);
-
-                try {
-                    long lower = Long.valueOf(min);
-                    long upper = Long.valueOf(max);
+                    final int lower = Integer.parseInt(min);
+                    final int upper = Integer.parseInt(max);
 
                     if (defMin != null && defMax != null) {
-                        list.add(new LongRangeData(
-                                name, label,
-                                lower, upper,
-                                Long.valueOf(defMin),
-                                Long.valueOf(defMax)));
+                        list.add(new IntegerRangeData(name, label, lower, upper, Integer.parseInt(defMin), Integer.parseInt(defMax)));
+                    } else {
+                        list.add(new IntegerRangeData(name, label, lower, upper));
                     }
                 }
-                catch (NumberFormatException nfe) {
+                catch (final NumberFormatException nfe) {
                     log.warn("NumberFormatException: ", nfe);
                 }
-            }
-            else if (type.equals("intarray")) {
+            } else if (type.equals("longrange")) {
+                final String min = ClientProtocolUtils.getMinNode(d);
+                final String max = ClientProtocolUtils.getMaxNode(d);
+
+                final String defMin = ClientProtocolUtils.getDefMin(d);
+                final String defMax = ClientProtocolUtils.getDefMax(d);
+
+                try {
+                    final long lower = Long.valueOf(min);
+                    final long upper = Long.valueOf(max);
+
+                    if (defMin != null && defMax != null) {
+                        list.add(new LongRangeData(name, label, lower, upper, Long.valueOf(defMin), Long.valueOf(defMax)));
+                    }
+                }
+                catch (final NumberFormatException nfe) {
+                    log.warn("NumberFormatException: ", nfe);
+                }
+            } else if (type.equals("intarray")) {
                 list.add(new IntegerArrayData(name, label, null));
-            }
-            else if (type.equals("intoptions")
-                && uiProvider.equals("parameter-matrix")
+            } else if (type.equals("intoptions") && uiProvider.startsWith("parameter-matrix")// uiProvider.equals("parameter-matrix") // what the...? used to be
+                                                                                             // "equals", but column-name for "itemname" refactoring created new
+                                                                                             // UIProviderFactory-Names starting with "parameter-matrix"
             ) {
                 list.add(DataFactory.createIntegerOptionsData(d, name, label));
-            }
-            else if (type.equals("options")) {
+            } else if (type.equals("options")) {
                 list.add(DataFactory.createStringOptionsData(d, name, label));
-            }
-            else if (type.equals("intoptions")) {
-                NodeList   choices = ClientProtocolUtils.getItemNodes(d);
-                DataItem[] opts    = extractCurrentDataItems(choices);
+            } else if (type.equals("intoptions")) {
+                final NodeList choices = ClientProtocolUtils.getItemNodes(d);
+                final DataItem[] opts = extractCurrentDataItems(choices);
 
                 list.add(new IntegerOptionsData(name, label, opts));
-            }
-            else if (type.equals("doublearray")) {
+            } else if (type.equals("doublearray")) {
                 list.add(new DoubleArrayData(name, label, null));
-            }
-            else if (type.equals("multiattribute")) {
+            } else if (type.equals("multiattribute")) {
                 list.add(DataFactory.createMultiAttributeData(d, name, label));
-            }
-            else {
+            } else {
                 log.warn("Unrecognized Dynamic data type.");
-                NodeList   choices   = ClientProtocolUtils.getItemNodes(d);
-                DataItem[] dataItems = extractCurrentDataItems(choices);
-                DataItem   def       = extractDefaultDataItem(d);
+                final NodeList choices = ClientProtocolUtils.getItemNodes(d);
+                final DataItem[] dataItems = extractCurrentDataItems(choices);
+                final DataItem def = extractDefaultDataItem(d);
 
-                String min = ClientProtocolUtils.getMinNode(d);
-                String max = ClientProtocolUtils.getMaxNode(d);
+                final String min = ClientProtocolUtils.getMinNode(d);
+                final String max = ClientProtocolUtils.getMaxNode(d);
                 if (min != null && max != null) {
-                    list.add(new DoubleRangeData(
-                        name, label,
-                        Double.valueOf(min), Double.valueOf(max),
-                        Double.valueOf(min), Double.valueOf(max)));
+                    list.add(new DoubleRangeData(name, label, Double.valueOf(min), Double.valueOf(max), Double.valueOf(min), Double.valueOf(max)));
                 }
 
                 list.add(new DefaultData(name, label, null, dataItems, def));
@@ -258,22 +217,20 @@
         return list;
     }
 
-
     /**
      * This method extracts the default value of a Data object.
      *
-     * @param data The data object node.
+     * @param data
+     *            The data object node.
      *
      * @return the default DataItem.
      */
-    protected static DataItem extractDefaultDataItem(Node data) {
+    protected static DataItem extractDefaultDataItem(final Node data) {
         log.debug("ArtifactDescriptionFactory.extractDefaultDataItem");
 
-        String value = XMLUtils.xpathString(
-            data, "@art:defaultValue", ArtifactNamespaceContext.INSTANCE);
+        final String value = XMLUtils.xpathString(data, "@art:defaultValue", ArtifactNamespaceContext.INSTANCE);
 
-        String label = XMLUtils.xpathString(
-            data, "@art:defaultLabel", ArtifactNamespaceContext.INSTANCE);
+        final String label = XMLUtils.xpathString(data, "@art:defaultLabel", ArtifactNamespaceContext.INSTANCE);
 
         if (value != null && label != null) {
             return new DefaultDataItem(label, null, value);
@@ -282,15 +239,15 @@
         return null;
     }
 
-
     /**
      * This method extract the {@link DataItem}s of the DESCRIBE document.
      *
-     * @param items The items in the DESCRIBE document.
+     * @param items
+     *            The items in the DESCRIBE document.
      *
      * @return the {@link DataItem}s.
      */
-    protected static DataItem[] extractCurrentDataItems(NodeList items) {
+    protected static DataItem[] extractCurrentDataItems(final NodeList items) {
         log.debug("ArtifactDescriptionFactory.extractCurrentDataItems");
 
         if (items == null || items.getLength() == 0) {
@@ -298,22 +255,21 @@
             return null;
         }
 
-        int count = items.getLength();
+        final int count = items.getLength();
 
-        List<DataItem> dataItems = new ArrayList<DataItem>(count);
+        final List<DataItem> dataItems = new ArrayList<DataItem>(count);
 
         for (int i = 0; i < count; i++) {
-            Node item    = items.item(i);
-            String label = ClientProtocolUtils.getLabel(item);
-            String value = ClientProtocolUtils.getValue(item);
+            final Node item = items.item(i);
+            final String label = ClientProtocolUtils.getLabel(item);
+            final String value = ClientProtocolUtils.getValue(item);
 
-            double[] mmQ = extractMinMaxQValues(item);
-            double[] mmW = extractMinMaxWValues(item);
+            final double[] mmQ = extractMinMaxQValues(item);
+            final double[] mmW = extractMinMaxWValues(item);
 
             if (mmQ != null || mmW != null) {
                 dataItems.add(new WQDataItem(label, null, value, mmQ, mmW));
-            }
-            else {
+            } else {
                 dataItems.add(new DefaultDataItem(label, null, value));
             }
         }
@@ -321,8 +277,7 @@
         return dataItems.toArray(new DataItem[count]);
     }
 
-
-    protected static double[] extractMinMaxQValues(Node item) {
+    protected static double[] extractMinMaxQValues(final Node item) {
         log.debug("ArtifactDescriptionFactory.extractMinMaxQValues");
 
         if (item == null) {
@@ -330,11 +285,7 @@
             return null;
         }
 
-        Node node = (Node) XMLUtils.xpath(
-            item,
-            "art:range[@art:type='Q']",
-            XPathConstants.NODE,
-            ArtifactNamespaceContext.INSTANCE);
+        final Node node = (Node) XMLUtils.xpath(item, "art:range[@art:type='Q']", XPathConstants.NODE, ArtifactNamespaceContext.INSTANCE);
 
         if (node == null) {
             log.debug("No min/max Q values found.");
@@ -344,8 +295,7 @@
         return extractMinMaxValues(node);
     }
 
-
-    protected static double[] extractMinMaxWValues(Node item) {
+    protected static double[] extractMinMaxWValues(final Node item) {
         log.debug("ArtifactDescriptionFactory.extractMinMaxWValues");
 
         if (item == null) {
@@ -353,11 +303,7 @@
             return null;
         }
 
-        Node node = (Node) XMLUtils.xpath(
-            item,
-            "art:range[@art:type='W']",
-            XPathConstants.NODE,
-            ArtifactNamespaceContext.INSTANCE);
+        final Node node = (Node) XMLUtils.xpath(item, "art:range[@art:type='W']", XPathConstants.NODE, ArtifactNamespaceContext.INSTANCE);
 
         if (node == null) {
             log.debug("No min/max W values found.");
@@ -367,15 +313,12 @@
         return extractMinMaxValues(node);
     }
 
-
-    protected static double[] extractMinMaxValues(Node node) {
+    protected static double[] extractMinMaxValues(final Node node) {
         log.debug("ArtifactDescriptionFactory.extractMinMaxValues");
 
-        String minStr = XMLUtils.xpathString(
-            node, "art:min/text()", ArtifactNamespaceContext.INSTANCE);
+        final String minStr = XMLUtils.xpathString(node, "art:min/text()", ArtifactNamespaceContext.INSTANCE);
 
-        String maxStr = XMLUtils.xpathString(
-            node, "art:max/text()", ArtifactNamespaceContext.INSTANCE);
+        final String maxStr = XMLUtils.xpathString(node, "art:max/text()", ArtifactNamespaceContext.INSTANCE);
 
         if (maxStr == null || minStr == null) {
             log.debug("No min/max values found.");
@@ -383,71 +326,59 @@
         }
 
         try {
-            double min = Double.valueOf(minStr);
-            double max = Double.valueOf(maxStr);
+            final double min = Double.valueOf(minStr);
+            final double max = Double.valueOf(maxStr);
 
             return new double[] { min, max };
         }
-        catch (NumberFormatException nfe) {
+        catch (final NumberFormatException nfe) {
             log.debug("Error while parsing min/max values.");
         }
 
         return null;
     }
 
-
     /**
      * This method extracts the data objects from the data node of the static ui
      * part of the DESCRIBE document.
      *
-     * @param staticNode The static ui node of the DESCRIBE.
+     * @param staticNode
+     *            The static ui node of the DESCRIBE.
      *
      * @return the DataList objects.
      */
-    protected static DataList[] extractOldData(Node staticNode) {
+    protected static DataList[] extractOldData(final Node staticNode) {
         log.debug("ArtifactDescriptionFactory.extractOldData()");
 
-        NodeList stateNodes = (NodeList) XMLUtils.xpath(
-            staticNode,
-            XPATH_STATIC_STATE_NODE,
-            XPathConstants.NODESET,
-            ArtifactNamespaceContext.INSTANCE);
+        final NodeList stateNodes = (NodeList) XMLUtils.xpath(staticNode, XPATH_STATIC_STATE_NODE, XPathConstants.NODESET, ArtifactNamespaceContext.INSTANCE);
 
         if (stateNodes == null || stateNodes.getLength() == 0) {
             log.debug("No old items found.");
             return null;
         }
 
-        int count       = stateNodes.getLength();
-        DataList[] data = new DataList[count];
+        final int count = stateNodes.getLength();
+        final DataList[] data = new DataList[count];
 
         for (int i = 0; i < count; i++) {
-            Node tmp = stateNodes.item(i);
+            final Node tmp = stateNodes.item(i);
 
-            String name = XMLUtils.xpathString(
-                tmp, "@art:name", ArtifactNamespaceContext.INSTANCE);
-            String uiprovider = XMLUtils.xpathString(
-                tmp, "@art:uiprovider", ArtifactNamespaceContext.INSTANCE);
-            String label = XMLUtils.xpathString(
-                tmp, "@art:label", ArtifactNamespaceContext.INSTANCE);
-            String help = XMLUtils.xpathString(
-                tmp, "@art:helpText", ArtifactNamespaceContext.INSTANCE);
+            final String name = XMLUtils.xpathString(tmp, "@art:name", ArtifactNamespaceContext.INSTANCE);
+            final String uiprovider = XMLUtils.xpathString(tmp, "@art:uiprovider", ArtifactNamespaceContext.INSTANCE);
+            final String label = XMLUtils.xpathString(tmp, "@art:label", ArtifactNamespaceContext.INSTANCE);
+            final String help = XMLUtils.xpathString(tmp, "@art:helpText", ArtifactNamespaceContext.INSTANCE);
 
-            NodeList dataNodes = (NodeList) XMLUtils.xpath(
-                tmp,
-                XPATH_STATIC_DATA_NODE,
-                XPathConstants.NODESET,
-                ArtifactNamespaceContext.INSTANCE);
+            final NodeList dataNodes = (NodeList) XMLUtils.xpath(tmp, XPATH_STATIC_DATA_NODE, XPathConstants.NODESET, ArtifactNamespaceContext.INSTANCE);
 
             if (dataNodes == null || dataNodes.getLength() == 0) {
                 continue;
             }
 
-            int size      = dataNodes.getLength();
-            DataList list = new DataList(name, size, uiprovider, label, help);
+            final int size = dataNodes.getLength();
+            final DataList list = new DataList(name, size, uiprovider, label, help);
 
             for (int j = 0; j < size; j++) {
-                Node dataNode = dataNodes.item(j);
+                final Node dataNode = dataNodes.item(j);
 
                 list.add(DataFactory.createDataFromElement((Element) dataNode));
 
@@ -458,68 +389,55 @@
         return data;
     }
 
-
     /**
      * This method extracts the UIProvider specified by the data node.
      *
-     * @param data The data node.
+     * @param data
+     *            The data node.
      *
      * @return the UIProvider that is specified in the data node.
      */
-    protected static String extractUIProvider(Node ui) {
-        return (String) XMLUtils.xpath(
-            ui,
-            XPATH_UIPROVIDER,
-            XPathConstants.STRING,
-            ArtifactNamespaceContext.INSTANCE);
+    protected static String extractUIProvider(final Node ui) {
+        return (String) XMLUtils.xpath(ui, XPATH_UIPROVIDER, XPathConstants.STRING, ArtifactNamespaceContext.INSTANCE);
     }
 
-
     /**
      * This method extracts the help text specified by the data node.
      *
-     * @param ui The data node.
+     * @param ui
+     *            The data node.
      *
      * @return the help text.
      */
-    protected static String extractHelpText(Node ui) {
-        return (String) XMLUtils.xpath(
-            ui,
-            XPATH_HELP_TEXT,
-            XPathConstants.STRING,
-            ArtifactNamespaceContext.INSTANCE);
+    protected static String extractHelpText(final Node ui) {
+        return (String) XMLUtils.xpath(ui, XPATH_HELP_TEXT, XPathConstants.STRING, ArtifactNamespaceContext.INSTANCE);
     }
 
-
     /**
      * This method extracts the reachable states of the current artifact.
      *
-     * @param reachable The reachable states node.
+     * @param reachable
+     *            The reachable states node.
      *
      * @return an array with identifiers of reachable states.
      */
-    protected static String[] extractReachableStates(Node reachable) {
+    protected static String[] extractReachableStates(final Node reachable) {
         log.debug("ArtifactDescriptionFactory.extractReachableStates()");
 
-        NodeList list = (NodeList) XMLUtils.xpath(
-            reachable,
-            XPATH_REACHABLE_STATE,
-            XPathConstants.NODESET,
-            ArtifactNamespaceContext.INSTANCE);
+        final NodeList list = (NodeList) XMLUtils.xpath(reachable, XPATH_REACHABLE_STATE, XPathConstants.NODESET, ArtifactNamespaceContext.INSTANCE);
 
         if (list == null || list.getLength() == 0) {
             return null;
         }
 
-        int count = list.getLength();
+        final int count = list.getLength();
 
-        String[] states = new String[count];
+        final String[] states = new String[count];
 
         for (int i = 0; i < count; i++) {
-            Node state = list.item(i);
+            final Node state = list.item(i);
 
-            String name = XMLUtils.xpathString(
-                state, "@art:name", ArtifactNamespaceContext.INSTANCE);
+            final String name = XMLUtils.xpathString(state, "@art:name", ArtifactNamespaceContext.INSTANCE);
 
             states[i] = name;
         }
@@ -527,72 +445,61 @@
         return states;
     }
 
-
     /**
      * This method extract available output modes of the the current artifact.
      *
-     * @param outputs A list of nodes that contain information about output
-     * modes.
+     * @param outputs
+     *            A list of nodes that contain information about output
+     *            modes.
      *
      * @return an array of Output modes.
      */
-    protected static OutputMode[] extractOutputModes(NodeList outputs) {
+    protected static OutputMode[] extractOutputModes(final NodeList outputs) {
         log.debug("ArtifactDescriptionFactory.extractOutputModes");
 
         if (outputs == null || outputs.getLength() == 0) {
             return null;
         }
 
-        int size = outputs.getLength();
+        final int size = outputs.getLength();
 
-        List<OutputMode> outs = new ArrayList<OutputMode>(size);
+        final List<OutputMode> outs = new ArrayList<OutputMode>(size);
 
         for (int i = 0; i < size; i++) {
-            Node out = outputs.item(i);
+            final Node out = outputs.item(i);
 
-            String name = XMLUtils.xpathString(
-                out, "@art:name", ArtifactNamespaceContext.INSTANCE);
-            String desc = XMLUtils.xpathString(
-                out, "@art:description", ArtifactNamespaceContext.INSTANCE);
-            String mimeType = XMLUtils.xpathString(
-                out, "@art:mime-type", ArtifactNamespaceContext.INSTANCE);
+            final String name = XMLUtils.xpathString(out, "@art:name", ArtifactNamespaceContext.INSTANCE);
+            final String desc = XMLUtils.xpathString(out, "@art:description", ArtifactNamespaceContext.INSTANCE);
+            final String mimeType = XMLUtils.xpathString(out, "@art:mime-type", ArtifactNamespaceContext.INSTANCE);
 
             if (name != null) {
                 outs.add(new DefaultOutputMode(name, desc, mimeType));
-            }
-            else {
+            } else {
                 log.debug("Found an invalid output mode.");
             }
         }
 
-        return (OutputMode[]) outs.toArray(new OutputMode[size]);
+        return outs.toArray(new OutputMode[size]);
     }
 
-
-    protected static Recommendation[] extractRecommendedArtifacts(Document doc){
+    protected static Recommendation[] extractRecommendedArtifacts(final Document doc) {
         log.debug("ArtifactDescriptionFactory.extractRecommendedArtifacts.");
 
-        NodeList list = (NodeList) XMLUtils.xpath(
-            doc,
-            XPATH_RECOMMENDED_ARTIFACTS,
-            XPathConstants.NODESET,
-            ArtifactNamespaceContext.INSTANCE);
+        final NodeList list = (NodeList) XMLUtils.xpath(doc, XPATH_RECOMMENDED_ARTIFACTS, XPathConstants.NODESET, ArtifactNamespaceContext.INSTANCE);
 
-        int num = list != null ? list.getLength() : 0;
+        final int num = list != null ? list.getLength() : 0;
 
-        Recommendation[] rec = new Recommendation[num];
+        final Recommendation[] rec = new Recommendation[num];
 
         for (int i = 0; i < num; i++) {
-            Element e           = (Element) list.item(i);
-            String  factory     = e.getAttribute("factory");
-            String  index       = e.getAttribute("ids");
-            String  targetOut   = e.getAttribute("target_out");
+            final Element e = (Element) list.item(i);
+            final String factory = e.getAttribute("factory");
+            final String index = e.getAttribute("ids");
+            final String targetOut = e.getAttribute("target_out");
 
             if (factory != null && factory.length() > 0) {
-                log.debug("Adding Recommendation. Factory: " + factory +
-                        " IDs: " + index + " target out " + targetOut);
-                rec[i] = new Recommendation(
-                    factory, index, null, null, targetOut);
+                log.debug("Adding Recommendation. Factory: " + factory + " IDs: " + index + " target out " + targetOut);
+                rec[i] = new Recommendation(factory, index, null, null, targetOut);
             }
         }
 

http://dive4elements.wald.intevation.org