teichmann@5863: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5863: * Software engineering by Intevation GmbH teichmann@5863: * teichmann@5863: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5863: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5863: * documentation coming with Dive4Elements River for details. teichmann@5863: */ teichmann@5863: teichmann@5831: package org.dive4elements.river.exports.fixings; raimund@3088: teichmann@5831: import org.dive4elements.artifacts.ArtifactNamespaceContext; teichmann@5831: import org.dive4elements.artifacts.CallContext; teichmann@5831: import org.dive4elements.artifacts.common.utils.XMLUtils; teichmann@5831: import org.dive4elements.river.exports.XYChartGenerator; raimund@3088: raimund@3088: import java.io.OutputStream; raimund@3088: christian@3406: import org.apache.log4j.Logger; christian@3406: import org.w3c.dom.Document; raimund@3088: ingo@3650: /** ingo@3650: * Base class for FixChartGenerator. ingo@3650: */ raimund@3088: public abstract class FixChartGenerator raimund@3088: extends XYChartGenerator raimund@3088: { ingo@3650: /** Private logger. */ raimund@3088: private static Logger logger = Logger.getLogger(FixChartGenerator.class); raimund@3088: sascha@3727: public static final Double INVALID_KM = Double.valueOf(-1d); christian@3406: public static final String CURRENT_KM = "currentKm"; raimund@3088: public static final String XPATH_CHART_CURRENTKM = sascha@3221: "/art:action/art:attributes/art:currentKm/@art:km"; raimund@3088: raimund@3088: @Override raimund@3088: public void init(Document request, OutputStream out, CallContext context) { raimund@3088: super.init(request, out, context); raimund@3088: sascha@3727: Double currentKm = getCurrentKmFromRequest(request); sascha@3221: sascha@3221: if (logger.isDebugEnabled()) { sascha@3221: logger.debug("currentKm = " + currentKm); sascha@3221: } sascha@3221: bjoern@4437: if (currentKm != INVALID_KM) { bjoern@4437: context.putContextValue(CURRENT_KM, currentKm); bjoern@4437: } raimund@3088: } raimund@3088: sascha@3727: public static final Double getCurrentKmFromRequest(Document request) { sascha@3221: sascha@3221: String km = XMLUtils.xpathString( raimund@3088: request, raimund@3088: XPATH_CHART_CURRENTKM, raimund@3088: ArtifactNamespaceContext.INSTANCE); raimund@3088: raimund@3088: if (km == null) { sascha@3221: return INVALID_KM; raimund@3088: } raimund@3088: raimund@3088: try { sascha@3221: return Double.valueOf(km); raimund@3088: } sascha@3221: catch (NumberFormatException nfe) { sascha@3221: return INVALID_KM; raimund@3088: } raimund@3088: } raimund@3088: } sascha@3221: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :