diff artifacts/src/main/java/org/dive4elements/river/exports/injector/KmFromGaugeNameInjector.java @ 8349:7341bebc79d0

Let injectors be strictly distinct from each other and give more meaningful names (they know what they do, not where they will be used. The latter is configuration).
author Tom Gottfried <tom@intevation.de>
date Wed, 01 Oct 2014 12:23:39 +0200
parents artifacts/src/main/java/org/dive4elements/river/exports/injector/DischargeInjector.java@31272d799dad
children 16dc2da05aef
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/injector/KmFromGaugeNameInjector.java	Wed Oct 01 12:23:39 2014 +0200
@@ -0,0 +1,43 @@
+package org.dive4elements.river.exports.injector;
+
+import org.apache.log4j.Logger;
+import org.dive4elements.artifacts.Artifact;
+import org.dive4elements.artifacts.CallContext;
+import org.dive4elements.artifacts.ContextInjector;
+import org.dive4elements.river.artifacts.D4EArtifact;
+import org.dive4elements.river.artifacts.access.RangeAccess;
+import org.dive4elements.river.model.Gauge;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import static org.dive4elements.river.exports.injector.InjectorConstants.CURRENT_KM;
+
+
+public class KmFromGaugeNameInjector
+implements ContextInjector
+{
+
+    private static Logger log = Logger.getLogger(KmFromGaugeNameInjector.class);
+
+    @Override
+    public void setup(Element cfg) {
+    }
+
+    @Override
+    public void injectContext(CallContext ctx, Artifact artifact, Document doc) {
+        D4EArtifact d4e = (D4EArtifact)artifact;
+        RangeAccess access = new RangeAccess(d4e);
+        String name = d4e.getDataAsString("gauge_name");
+        if (name == null || name.equals("")) {
+            return;
+        }
+        Gauge gauge = access.getRiver().determineGaugeByName(name);
+        if (gauge == null) {
+            log.error("No Gauge could be found for name " + name + "!");
+            return;
+        }
+        ctx.putContextValue(CURRENT_KM, gauge.getStation());
+        return;
+    }
+
+}

http://dive4elements.wald.intevation.org