view artifacts/src/main/java/org/dive4elements/river/exports/injector/KmFromGaugeNumberInjector.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/HistoricalDischargeInjector.java@5ffbf97766f7
children 16dc2da05aef
line wrap: on
line source
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.HistoricalDischargeAccess;
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 KmFromGaugeNumberInjector
implements ContextInjector
{
    private static Logger log =
        Logger.getLogger(KmFromGaugeNumberInjector.class);

    @Override
    public void setup(Element cfg) {

    }

    @Override
    public void injectContext(
        CallContext ctx,
        Artifact artifact,
        Document request
    ) {
        HistoricalDischargeAccess access =
            new HistoricalDischargeAccess((D4EArtifact)artifact);
        Long gaugeNumber = access.getOfficialGaugeNumber();
        if (gaugeNumber == null) {
            return;
        }
        Gauge gauge = Gauge.getGaugeByOfficialNumber(gaugeNumber);
        if (gauge == null) {
            return;
        }
        double km = gauge.getStation().doubleValue();
        ctx.putContextValue(CURRENT_KM, km);
    }
}

http://dive4elements.wald.intevation.org