raimund@3088: package de.intevation.flys.exports.fixings; raimund@3088: raimund@3088: import org.w3c.dom.Element; raimund@3088: import org.w3c.dom.Document; raimund@3088: raimund@3088: import org.apache.log4j.Logger; raimund@3088: raimund@3088: import java.io.OutputStream; raimund@3088: raimund@3088: import javax.xml.xpath.XPathConstants; raimund@3088: raimund@3088: import de.intevation.artifacts.ArtifactNamespaceContext; raimund@3088: import de.intevation.artifacts.common.utils.XMLUtils; raimund@3088: import de.intevation.artifacts.CallContext; raimund@3088: raimund@3088: import de.intevation.flys.exports.XYChartGenerator; raimund@3088: raimund@3088: public abstract class FixChartGenerator raimund@3088: extends XYChartGenerator raimund@3088: { raimund@3088: private static Logger logger = Logger.getLogger(FixChartGenerator.class); raimund@3088: raimund@3088: public static final String XPATH_CHART_CURRENTKM = raimund@3088: "/art:action/art:attributes/art:currentKm"; raimund@3088: 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: raimund@3088: logger.debug("currentKm = " + new Double(getCurrentKmFromRequest())); raimund@3088: context.putContextValue("currentKm", new Double(getCurrentKmFromRequest())); raimund@3088: } raimund@3088: raimund@3088: public double getCurrentKmFromRequest() { raimund@3088: Element km = (Element)XMLUtils.xpath( raimund@3088: request, raimund@3088: XPATH_CHART_CURRENTKM, raimund@3088: XPathConstants.NODE, raimund@3088: ArtifactNamespaceContext.INSTANCE); raimund@3088: raimund@3088: if (km == null) { raimund@3088: return -1d; raimund@3088: } raimund@3088: raimund@3088: String uri = ArtifactNamespaceContext.NAMESPACE_URI; raimund@3088: raimund@3088: String currentKm = km.getAttributeNS(uri, "km"); raimund@3088: try { raimund@3088: double d = Double.valueOf(currentKm).doubleValue(); raimund@3088: return d; raimund@3088: } raimund@3088: catch(NumberFormatException nfe) { raimund@3088: return -1d; raimund@3088: } raimund@3088: } raimund@3088: } raimund@3088: