rrenkert@8251: package org.dive4elements.river.exports.injector; rrenkert@8251: rrenkert@8251: import org.apache.log4j.Logger; rrenkert@8251: import org.dive4elements.artifacts.Artifact; rrenkert@8251: import org.dive4elements.artifacts.CallContext; rrenkert@8251: import org.dive4elements.artifacts.ContextInjector; rrenkert@8251: import org.dive4elements.river.artifacts.D4EArtifact; rrenkert@8251: import org.dive4elements.river.artifacts.access.RangeAccess; rrenkert@8251: import org.dive4elements.river.model.Gauge; rrenkert@8251: import org.w3c.dom.Document; rrenkert@8251: import org.w3c.dom.Element; rrenkert@8251: rrenkert@8251: import static org.dive4elements.river.exports.injector.InjectorConstants.CURRENT_KM; rrenkert@8251: rrenkert@8251: tom@8349: public class KmFromGaugeNameInjector rrenkert@8251: implements ContextInjector rrenkert@8251: { rrenkert@8251: tom@8349: private static Logger log = Logger.getLogger(KmFromGaugeNameInjector.class); rrenkert@8251: rrenkert@8251: @Override rrenkert@8251: public void setup(Element cfg) { rrenkert@8251: } rrenkert@8251: rrenkert@8251: @Override rrenkert@8251: public void injectContext(CallContext ctx, Artifact artifact, Document doc) { tom@8367: if (ctx.getContextValue(CURRENT_KM) instanceof Number) { tom@8367: return; tom@8367: } tom@8367: rrenkert@8326: D4EArtifact d4e = (D4EArtifact)artifact; tom@8349: RangeAccess access = new RangeAccess(d4e); rrenkert@8326: String name = d4e.getDataAsString("gauge_name"); rrenkert@8326: if (name == null || name.equals("")) { rrenkert@8251: return; rrenkert@8251: } rrenkert@8326: Gauge gauge = access.getRiver().determineGaugeByName(name); rrenkert@8326: if (gauge == null) { rrenkert@8326: log.error("No Gauge could be found for name " + name + "!"); rrenkert@8326: return; rrenkert@8326: } rrenkert@8326: ctx.putContextValue(CURRENT_KM, gauge.getStation()); rrenkert@8326: return; rrenkert@8251: } rrenkert@8251: rrenkert@8251: }