ingo@392: package de.intevation.flys.exports; ingo@392: ingo@392: import org.apache.log4j.Logger; ingo@392: ingo@392: import org.w3c.dom.Document; ingo@392: ingo@414: import org.jfree.chart.JFreeChart; ingo@414: import org.jfree.chart.title.TextTitle; ingo@414: ingo@392: import de.intevation.artifacts.Artifact; ingo@392: ingo@695: import de.intevation.artifactdatabase.state.Facet; ingo@695: ingo@393: import de.intevation.flys.artifacts.WINFOArtifact; ingo@393: import de.intevation.flys.artifacts.model.WQKms; ingo@393: ingo@392: ingo@392: /** ingo@392: * An OutGenerator that generates discharge curves. ingo@392: * ingo@392: * @author Ingo Weinzierl ingo@392: */ ingo@392: public class ComputedDischargeCurveGenerator extends DischargeCurveGenerator { ingo@392: ingo@392: /** The logger used in this generator.*/ ingo@392: private static Logger logger = ingo@392: Logger.getLogger(ComputedDischargeCurveGenerator.class); ingo@392: ingo@392: ingo@408: public static final String I18N_CHART_TITLE = ingo@408: "chart.computed.discharge.curve.title"; ingo@408: ingo@414: public static final String I18N_CHART_SUBTITLE = ingo@414: "chart.computed.discharge.curve.subtitle"; ingo@414: ingo@408: public static final String I18N_YAXIS_LABEL = ingo@408: "chart.computed.discharge.curve.yaxis.label"; ingo@408: ingo@408: public static final String I18N_CHART_TITLE_DEFAULT = "Abflusskurve"; ingo@408: public static final String I18N_YAXIS_LABEL_DEFAULT = "W [NN + m]"; ingo@408: ingo@408: ingo@392: @Override ingo@400: protected String getChartTitle() { ingo@408: return msg(I18N_CHART_TITLE, I18N_CHART_TITLE_DEFAULT); ingo@400: } ingo@400: ingo@400: ingo@400: @Override ingo@414: protected void addSubtitles(JFreeChart chart) { ingo@414: double[] dist = getRange(); ingo@414: ingo@414: Object[] args = new Object[] { ingo@414: getRiverName(), ingo@414: dist[0] ingo@414: }; ingo@414: ingo@414: String subtitle = msg(I18N_CHART_SUBTITLE, "", args); ingo@414: chart.addSubtitle(new TextTitle(subtitle)); ingo@414: } ingo@414: ingo@414: ingo@414: @Override ingo@400: protected String getYAxisLabel() { ingo@408: return msg(I18N_YAXIS_LABEL, I18N_YAXIS_LABEL_DEFAULT); ingo@400: } ingo@400: ingo@400: ingo@400: @Override ingo@695: public void doOut(Artifact artifact, Facet facet, Document attr) { ingo@392: logger.debug("ComputedDischargeCurveGenerator.doOut"); ingo@393: ingo@393: WQKms wqkms = getData(artifact); ingo@393: ingo@393: int size = wqkms.size(); ingo@393: ingo@393: double[][] data = new double[2][size]; ingo@393: double[] res = new double[3]; ingo@393: ingo@393: for (int i = 0; i < size; i++) { ingo@393: res = wqkms.get(i, res); ingo@393: ingo@393: data[0][i] = res[1]; ingo@393: data[1][i] = res[0]; ingo@393: } ingo@393: ingo@456: dataset.addSeries(getSeriesName(wqkms), data); ingo@393: } ingo@393: ingo@393: ingo@393: protected WQKms getData(Artifact artifact) { ingo@393: logger.debug("ComputedDischargeCurveGenerator.getData"); ingo@393: ingo@393: WINFOArtifact winfoArtifact = (WINFOArtifact) artifact; ingo@393: ingo@393: return winfoArtifact.getComputedDischargeCurveData(); ingo@392: } ingo@456: ingo@456: ingo@456: protected String getSeriesName(WQKms wqkms) { ingo@456: Object[] args = new Object[] { ingo@456: getRiverName(), ingo@456: wqkms.getName() ingo@456: }; ingo@456: ingo@456: return msg( ingo@456: "chart.computed.discharge.curve.curve.label", ingo@456: "", ingo@456: args); ingo@456: } ingo@392: } ingo@392: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :