Mercurial > dive4elements > river
view artifacts/src/main/java/org/dive4elements/river/exports/fixings/FixChartGenerator.java @ 9268:ae9dee74e43e
Fixed: current station of duration chart was not changed
author | gernotbelger |
---|---|
date | Wed, 18 Jul 2018 18:53:15 +0200 |
parents | 5e38e2924c07 |
children |
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde * Software engineering by Intevation GmbH * * This file is Free Software under the GNU AGPL (>=v3) * and comes with ABSOLUTELY NO WARRANTY! Check out the * documentation coming with Dive4Elements River for details. */ package org.dive4elements.river.exports.fixings; import org.dive4elements.artifacts.ArtifactNamespaceContext; import org.dive4elements.artifacts.CallContext; import org.dive4elements.artifacts.common.utils.XMLUtils; import org.dive4elements.river.exports.XYChartGenerator; import java.io.OutputStream; import org.apache.log4j.Logger; import org.w3c.dom.Document; /** * Base class for FixChartGenerator. */ public abstract class FixChartGenerator extends XYChartGenerator { /** Private log. */ private static Logger log = Logger.getLogger(FixChartGenerator.class); public static final Double INVALID_KM = Double.valueOf(-1d); public static final String CURRENT_KM = "currentKm"; public static final String XPATH_CHART_CURRENTKM = "/art:action/art:attributes/art:currentKm/@art:km"; @Override public void init( String outName, Document request, OutputStream out, CallContext context ) { super.init(outName, request, out, context); initCurrentKm(request, context); } public static final Double getCurrentKmFromRequest(Document request) { String km = XMLUtils.xpathString( request, XPATH_CHART_CURRENTKM, ArtifactNamespaceContext.INSTANCE); if (km == null) { return INVALID_KM; } try { return Double.valueOf(km); } catch (NumberFormatException nfe) { return INVALID_KM; } } /** * Returns the current km from the context. * If the context is null or doesn't contain a currentKm * then a double value of -1 will be returned. * * @param context * The CallContext instance * @return the current km as double */ // FIXME: copied from org.dive4elements.river.artifacts.model.fixings.FixingsFacet public static final double getCurrentKm(final CallContext context) { if (context == null) return Double.NaN; final Double dkm = (Double) context.getContextValue(CURRENT_KM); if (dkm == null) return Double.NaN; return dkm.doubleValue(); } public static void initCurrentKm(Document request, CallContext context) { Double currentKm = getCurrentKmFromRequest(request); if (log.isDebugEnabled()) { log.debug("currentKm = " + currentKm); } if (currentKm != INVALID_KM) { context.putContextValue(CURRENT_KM, currentKm); } } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :