ingo@403: package de.intevation.flys.exports; ingo@403: ingo@420: import java.awt.Color; ingo@420: ingo@403: import org.apache.log4j.Logger; ingo@403: ingo@420: import org.jfree.chart.plot.XYPlot; ingo@420: import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; ingo@403: import org.jfree.data.xy.XYSeries; ingo@403: ingo@403: import org.w3c.dom.Document; ingo@403: ingo@403: import de.intevation.artifacts.Artifact; ingo@403: ingo@695: import de.intevation.artifactdatabase.state.Facet; ingo@695: ingo@696: import de.intevation.flys.artifacts.FLYSArtifact; ingo@403: import de.intevation.flys.artifacts.model.WQCKms; ingo@403: import de.intevation.flys.artifacts.model.WQKms; ingo@403: ingo@403: ingo@403: /** ingo@403: * An OutGenerator that generates discharge longitudinal section curves. ingo@403: * ingo@403: * @author Ingo Weinzierl ingo@403: */ ingo@403: public class DischargeLongitudinalSectionGenerator ingo@403: extends LongitudinalSectionGenerator ingo@403: { ingo@403: private static Logger logger = ingo@403: Logger.getLogger(DischargeLongitudinalSectionGenerator.class); ingo@403: ingo@403: ingo@420: ingo@420: public DischargeLongitudinalSectionGenerator() { ingo@420: super(); ingo@420: } ingo@420: ingo@420: sascha@719: @Override ingo@420: protected void adjustPlot(XYPlot plot) { ingo@420: super.adjustPlot(plot); ingo@420: ingo@923: //// TODO REMOVE THIS CODE, IF WE HAVE INTRODUCED THEMES! ingo@923: //XYLineAndShapeRenderer rw = (XYLineAndShapeRenderer) ingo@923: // plot.getRendererForDataset(w); ingo@420: ingo@923: //XYLineAndShapeRenderer rcw = null; ingo@923: //try { ingo@923: // rcw = (XYLineAndShapeRenderer) rw.clone(); ingo@923: //} ingo@923: //catch (Exception e) { ingo@923: // logger.error(e, e); ingo@923: //} ingo@420: ingo@923: //int cwNum = cw.getSeriesCount(); ingo@420: ingo@923: //for (int i = 0; i < cwNum; i++) { ingo@923: // rcw.setSeriesPaint(i, Color.RED); ingo@923: //} ingo@672: ingo@923: //plot.setRenderer(2, rcw); ingo@672: } ingo@672: ingo@672: ingo@403: @Override ingo@695: public void doOut(Artifact artifact, Facet facet, Document attr) { ingo@403: logger.debug("DischargeLongitudinalSectionGenerator.doOut"); ingo@403: sascha@719: if (facet == null) { sascha@719: return; sascha@719: } sascha@719: sascha@719: String name = facet.getName(); sascha@719: sascha@719: if (name == null) { sascha@719: return; sascha@719: } ingo@696: ingo@696: FLYSArtifact flys = (FLYSArtifact) artifact; ingo@696: Facet f = flys.getNativeFacet(facet); ingo@696: sascha@719: if (name.equals(DISCHARGE_LONGITUDINAL_W)) { ingo@696: doWOut((WQKms) f.getData(artifact, context)); ingo@403: } sascha@719: else if (name.equals(DISCHARGE_LONGITUDINAL_Q)) { ingo@696: doQOut((WQKms) f.getData(artifact, context)); ingo@696: } sascha@719: else if (name.equals(DISCHARGE_LONGITUDINAL_C)) { ingo@696: doCorrectedWOut((WQCKms) f.getData(artifact, context)); ingo@403: } ingo@403: else { ingo@696: logger.warn("Unknown facet name: " + name); ingo@403: } ingo@403: } ingo@403: ingo@403: ingo@403: /** ingo@403: * Adds a new series for the corrected W curve. ingo@403: * ingo@403: * @param wqckms The object that contains the corrected W values. ingo@403: */ ingo@403: protected void doCorrectedWOut(WQCKms wqckms) { ingo@403: logger.debug("DischargeLongitudinalSectionGenerator.doCorrectedWOut"); ingo@403: sascha@719: int size = wqckms.size(); ingo@403: sascha@719: if (size > 0) { sascha@719: XYSeries series = new XYSeries(getSeriesNameForCorrected(wqckms, "W")); sascha@719: for (int i = 0; i < size; i++) { sascha@719: series.add(wqckms.getKms(i), wqckms.getC(i)); sascha@719: } ingo@923: ingo@923: addFirstAxisSeries(series); ingo@403: } sascha@745: sascha@745: if (wqckms.guessWaterIncreasing()) { sascha@745: setInverted(true); sascha@745: } ingo@403: } ingo@450: ingo@450: ingo@450: protected String getSeriesNameForCorrected(WQKms wqkms, String mode) { ingo@450: String name = wqkms.getName(); ingo@450: ingo@450: name = name.replace( sascha@719: "benutzerdefiniert", sascha@719: "benutzerdefiniert [korrigiert]"); ingo@450: sascha@719: String prefix = name.indexOf(mode) >= 0 ? null : mode; ingo@450: ingo@450: return prefix != null && prefix.length() > 0 sascha@719: ? prefix + "(" + name + ")" ingo@450: : name; ingo@450: } ingo@403: } ingo@403: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :