# HG changeset patch # User Ingo Weinzierl # Date 1337324618 0 # Node ID ed612b85fb6d0ca3d9eac7e68bb43f3f131479eb # Parent fa8ae7dbcb72239f67283179e8b6193cf00a4c50 Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor(). flys-artifacts/trunk@4435 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r fa8ae7dbcb72 -r ed612b85fb6d flys-artifacts/ChangeLog --- 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 + + * src/main/java/de/intevation/flys/artifacts/states/SoundingsSelect.java: + Implemented getOptions() and getLabelFor(). + 2012-05-16 Felix Wolfsteller * src/main/java/de/intevation/flys/exports/XYChartGenerator.java: diff -r fa8ae7dbcb72 -r ed612b85fb6d flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/SoundingsSelect.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 = new ArrayList>(); - kvp[i] = new KVP(id, value); + appendSingles(river, kvp); + appendEpochs(river, kvp); + + return (KVP[]) kvp.toArray(new KVP[kvp.size()]); + } + + + protected void appendSingles(River river, List> kvp) { + List 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) { + List 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 :