Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/org/dive4elements/river/artifacts/states/ReferenceGaugeState.java @ 5831:bd047b71ab37
Repaired internal references
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 12:06:39 +0200 |
parents | flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/ReferenceGaugeState.java@5b8919ef601d |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/org/dive4elements/river/artifacts/states/ReferenceGaugeState.java Thu Apr 25 12:06:39 2013 +0200 @@ -0,0 +1,81 @@ +package org.dive4elements.river.artifacts.states; + +import java.util.Collections; +import java.util.List; + +import org.w3c.dom.Element; + +import org.dive4elements.artifacts.Artifact; +import org.dive4elements.artifacts.CallContext; + +import org.dive4elements.artifacts.common.utils.XMLUtils; + +import org.dive4elements.river.model.Gauge; +import org.dive4elements.river.model.River; + +import org.dive4elements.river.artifacts.FLYSArtifact; +import org.dive4elements.river.utils.FLYSUtils; + + +/** + * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> + */ +public class ReferenceGaugeState extends DefaultState { + + public static final String DATA_NAME = "reference_gauge"; + + + @Override + protected Element[] createItems( + XMLUtils.ElementCreator cr, + Artifact artifact, + String name, + CallContext context) + { + River river = FLYSUtils.getRiver((FLYSArtifact) artifact); + List<Gauge> gauges = river.getGauges(); + Collections.sort(gauges); + + int num = gauges != null ? gauges.size() : 0; + + Element[] opts = new Element[num]; + + for (int i = 0; i < num; i++ ) { + Gauge g = gauges.get(i); + + String gaugeName = g.getName(); + long officialNumber = g.getOfficialNumber(); + + opts[i] = createItem( + cr, new String[] { gaugeName, String.valueOf(officialNumber) }); + } + + return opts; + } + + + @Override + protected String getLabelFor( + CallContext cc, + String name, + String value, + String type + ) { + if (name.equals(DATA_NAME)) { + try { + long number = Long.valueOf(value); + Gauge gauge = Gauge.getGaugeByOfficialNumber(number); + + if (gauge != null) { + return gauge.getName(); + } + } + catch (NumberFormatException nfe) { + // do nothing + } + } + + return super.getLabelFor(cc, name, value, type); + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :