Mercurial > dive4elements > river
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; + } + +}