gernotbelger@9299: /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@9299: * Software engineering by gernotbelger@9299: * Björnsen Beratende Ingenieure GmbH gernotbelger@9299: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@9299: * gernotbelger@9299: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9299: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9299: * documentation coming with Dive4Elements River for details. gernotbelger@9299: */ gernotbelger@9299: package org.dive4elements.river.artifacts.datacage.templating; gernotbelger@9299: gernotbelger@9299: import java.util.List; gernotbelger@9299: import java.util.UUID; gernotbelger@9299: gernotbelger@9299: import javax.xml.xpath.XPathFunction; gernotbelger@9299: import javax.xml.xpath.XPathFunctionException; gernotbelger@9299: gernotbelger@9299: import org.dive4elements.artifactdatabase.data.StateData; gernotbelger@9299: import org.dive4elements.artifacts.CallContext; gernotbelger@9299: import org.dive4elements.river.artifacts.D4EArtifact; gernotbelger@9299: import org.dive4elements.river.utils.RiverUtils; gernotbelger@9299: gernotbelger@9299: /** gernotbelger@9299: * Very specialized function the resolves the 'year' (als middle of all used events) from a fix-analysis-vollmer gernotbelger@9299: * artifact). gernotbelger@9299: * gernotbelger@9299: * @author Gernot Belger gernotbelger@9299: */ gernotbelger@9299: public class DataFromArtifactXPathFunction implements XPathFunction { gernotbelger@9299: gernotbelger@9299: public static final String ID = "data_from_artifact"; gernotbelger@9299: gernotbelger@9299: public static final int ARITY = 2; gernotbelger@9299: gernotbelger@9299: private final CallContext context; gernotbelger@9299: gernotbelger@9299: public DataFromArtifactXPathFunction(final CallContext context) { gernotbelger@9299: this.context = context; gernotbelger@9299: } gernotbelger@9299: gernotbelger@9299: @Override gernotbelger@9299: public Object evaluate(final List args) throws XPathFunctionException { gernotbelger@9299: gernotbelger@9299: final UUID uuid = (UUID) args.get(0); gernotbelger@9299: if (uuid == null) gernotbelger@9299: return null; gernotbelger@9299: gernotbelger@9299: final D4EArtifact artifact = RiverUtils.getArtifact(uuid.toString(), this.context); gernotbelger@9299: if (!(args.get(1) instanceof String)) gernotbelger@9299: return null; gernotbelger@9299: gernotbelger@9299: final StateData data = artifact.getData(args.get(1).toString()); gernotbelger@9299: return data.getValue(); gernotbelger@9299: gernotbelger@9299: } gernotbelger@9299: }