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; mschaefer@9402: import java.util.UUID; gernotbelger@9299: gernotbelger@9299: import javax.xml.xpath.XPathFunction; gernotbelger@9299: import javax.xml.xpath.XPathFunctionException; gernotbelger@9299: mschaefer@9402: import org.dive4elements.artifacts.CallContext; mschaefer@9402: import org.dive4elements.river.artifacts.D4EArtifact; mschaefer@9402: import org.dive4elements.river.artifacts.access.RiverAccess; gernotbelger@9403: import org.dive4elements.river.artifacts.uinfo.vegetationzones.VegetationZoneServerClientXChange; mschaefer@9402: import org.dive4elements.river.utils.RiverUtils; gernotbelger@9299: gernotbelger@9299: /** mschaefer@9402: * Very specialized function that fetches the default vegetation zones for the river specified by an artifact gernotbelger@9299: * gernotbelger@9299: * @author Gernot Belger gernotbelger@9299: */ gernotbelger@9299: public class DefaultVegetationZoneXPathFunction implements XPathFunction { gernotbelger@9299: gernotbelger@9299: public static final String ID = "defaultvegetationzone"; gernotbelger@9299: mschaefer@9402: public static final int ARITY = 1; mschaefer@9402: mschaefer@9402: private final CallContext context; mschaefer@9402: mschaefer@9402: public DefaultVegetationZoneXPathFunction(final CallContext context) { mschaefer@9402: this.context = context; mschaefer@9402: } gernotbelger@9299: gernotbelger@9299: @Override gernotbelger@9299: public Object evaluate(final List args) throws XPathFunctionException { mschaefer@9402: mschaefer@9402: final UUID uuid = (UUID) args.get(0); mschaefer@9402: if (uuid == null) mschaefer@9402: return null; mschaefer@9402: mschaefer@9402: final D4EArtifact artifact = RiverUtils.getArtifact(uuid.toString(), this.context); mschaefer@9402: mschaefer@9402: final RiverAccess access = new RiverAccess(artifact); mschaefer@9402: gernotbelger@9403: return VegetationZoneServerClientXChange.parseListToDataString(VegetationZoneServerClientXChange.getStandardList(access.getRiver(), this.context)); gernotbelger@9299: } gernotbelger@9299: }