changeset 2712:ed612b85fb6d

Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor(). flys-artifacts/trunk@4435 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 18 May 2012 07:03:38 +0000 (2012-05-18)
parents fa8ae7dbcb72
children b60751cfdd6c
files flys-artifacts/ChangeLog flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/SoundingsSelect.java
diffstat 2 files changed, 107 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/flys-artifacts/ChangeLog	Wed May 16 20:23:29 2012 +0000
+++ b/flys-artifacts/ChangeLog	Fri May 18 07:03:38 2012 +0000
@@ -1,3 +1,8 @@
+2012-05-18  Ingo Weinzierl <ingo@intevation.de>
+
+	* src/main/java/de/intevation/flys/artifacts/states/SoundingsSelect.java:
+	  Implemented getOptions() and getLabelFor().
+
 2012-05-16  Felix Wolfsteller <felix.wolfsteller@intevation.de>
 
 	* src/main/java/de/intevation/flys/exports/XYChartGenerator.java:
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/SoundingsSelect.java	Wed May 16 20:23:29 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/SoundingsSelect.java	Fri May 18 07:03:38 2012 +0000
@@ -1,5 +1,8 @@
 package de.intevation.flys.artifacts.states;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.log4j.Logger;
 
 import de.intevation.artifacts.Artifact;
@@ -7,11 +10,22 @@
 
 import de.intevation.artifacts.common.model.KVP;
 
+import de.intevation.flys.model.BedHeightEpoch;
+import de.intevation.flys.model.BedHeightSingle;
+import de.intevation.flys.model.River;
+
+import de.intevation.flys.artifacts.FLYSArtifact;
+import de.intevation.flys.utils.FLYSUtils;
+
 
 public class SoundingsSelect extends MultiStringArrayState {
 
     public static final String SOUNDINGS  = "soundings";
 
+    public static final String PREFIX_SINGLE = "single-";
+
+    public static final String PREFIX_EPOCH  = "epoch-";
+
 
     private static final Logger logger = Logger.getLogger(SoundingsSelect.class);
 
@@ -36,16 +50,48 @@
                 "Invalid parameter for state: '" + parameterName + "'");
         }
 
-        KVP[] kvp = new KVP[10];
+        River river = FLYSUtils.getRiver((FLYSArtifact) artifact);
 
-        for (int i = 0; i < 10; i++) {
-            String id    = String.valueOf(i);
-            String value = "#" + id;
+        List<KVP<String, String>> kvp = new ArrayList<KVP<String, String>>();
 
-            kvp[i] = new KVP(id, value);
+        appendSingles(river, kvp);
+        appendEpochs(river, kvp);
+
+        return (KVP<String,String>[]) kvp.toArray(new KVP[kvp.size()]);
+    }
+
+
+    protected void appendSingles(River river, List<KVP<String, String>> kvp) {
+        List<BedHeightSingle> singles =
+            BedHeightSingle.getBedHeightSingles(river);
+
+        if (singles != null) {
+            for (int i = 0; i < singles.size(); i++) {
+                BedHeightSingle s = singles.get(i);
+
+                String id    = PREFIX_SINGLE + s.getId();
+                String value = s.getDescription();
+
+                kvp.add(new KVP(id, value));
+            }
         }
+    }
 
-        return kvp;
+
+    protected void appendEpochs(River river, List<KVP<String, String>> kvp) {
+        List<BedHeightEpoch> epochs =
+            BedHeightEpoch.getBedHeightEpochs(river);
+
+        if (epochs != null) {
+            for (int i = 0; i < epochs.size(); i++) {
+                BedHeightEpoch e = epochs.get(i);
+
+                String id    = PREFIX_EPOCH + e.getId();
+                String value = e.getDescription();
+
+                kvp.add(new KVP(id, value));
+            }
+        }
     }
 
 
@@ -61,7 +107,56 @@
                 "Invalid parameter for state: '" + parameterName + "'");
         }
 
-        return "#" + value;
+        if (value.indexOf(PREFIX_SINGLE) >= 0) {
+            return getLabelForSingle(cc, value);
+        }
+        else if (value.indexOf(PREFIX_EPOCH) >= 0) {
+            return getLabelForEpoch(cc, value);
+        }
+
+        return value;
+    }
+
+
+    protected String getLabelForSingle(CallContext cc, String value) {
+        String id = value.replace(PREFIX_SINGLE, "");
+        try {
+            BedHeightSingle s = BedHeightSingle.getBedHeightSingleById(
+                Integer.parseInt(id));
+
+            if (s != null) {
+                return s.getDescription();
+            }
+            else {
+                return "no value for '" + id + "'";
+            }
+        }
+        catch (NumberFormatException nfe) {
+            logger.warn("Could not parse id from string '" + id + "'", nfe);
+        }
+
+        return "n.A.";
+    }
+
+
+    protected String getLabelForEpoch(CallContext cc, String value) {
+        String id = value.replace(PREFIX_EPOCH, "");
+        try {
+            BedHeightEpoch e = BedHeightEpoch.getBedHeightEpochById(
+                Integer.parseInt(id));
+
+            if (e != null) {
+                return e.getDescription();
+            }
+            else {
+                return "no value for '" + id + "'";
+            }
+        }
+        catch (NumberFormatException nfe) {
+            logger.warn("Could not parse id from string '" + id + "'", nfe);
+        }
+
+        return "n.A.";
     }
 
 
@@ -86,4 +181,3 @@
         }
     }
 }
-// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org