ingo@4242: package de.intevation.flys.exports; ingo@4242: ingo@4242: import org.apache.log4j.Logger; ingo@4242: import org.jfree.data.xy.XYSeries; ingo@4242: import org.w3c.dom.Document; ingo@4242: ingo@4242: import de.intevation.artifactdatabase.state.ArtifactAndFacet; ingo@4242: import de.intevation.flys.artifacts.FLYSArtifact; ingo@4242: import de.intevation.flys.artifacts.access.HistoricalDischargeAccess; ingo@4242: import de.intevation.flys.artifacts.model.FacetTypes; ingo@4242: import de.intevation.flys.artifacts.model.Timerange; ingo@4242: import de.intevation.flys.artifacts.model.WQKms; ingo@4242: import de.intevation.flys.jfree.StyledXYSeries; ingo@4242: import de.intevation.flys.utils.FLYSUtils; ingo@4242: ingo@4242: ingo@4242: /** ingo@4242: * @author Ingo Weinzierl ingo@4242: */ ingo@4242: public class HistoricalDischargeWQCurveGenerator extends XYChartGenerator ingo@4242: implements FacetTypes { ingo@4242: ingo@4242: private static Logger logger = Logger ingo@4242: .getLogger(HistoricalDischargeWQCurveGenerator.class); ingo@4242: ingo@4242: public static final String I18N_CHART_TITLE = "chart.historical.discharge.wq.title"; ingo@4242: ingo@4242: public static final String I18N_CHART_SUBTITLE = "chart.historical.discharge.wq.subtitle"; ingo@4242: ingo@4242: public static final String I18N_XAXIS_LABEL = "chart.historical.discharge.wq.xaxis.label"; ingo@4242: ingo@4242: public static final String I18N_YAXIS_LABEL = "chart.historical.discharge.wq.yaxis.label"; ingo@4242: ingo@4242: public static final String I18N_YAXIS_SECOND_LABEL = "chart.historical.discharge.wq.yaxis.second.label"; ingo@4242: ingo@4242: public static enum YAXIS { ingo@4242: W(0); ingo@4242: ingo@4242: protected int idx; ingo@4242: ingo@4242: private YAXIS(int c) { ingo@4242: idx = c; ingo@4242: } ingo@4242: } ingo@4242: ingo@4242: @Override ingo@4242: protected YAxisWalker getYAxisWalker() { ingo@4242: return new YAxisWalker() { ingo@4242: ingo@4242: @Override ingo@4242: public int length() { ingo@4242: return YAXIS.values().length; ingo@4242: } ingo@4242: ingo@4242: @Override ingo@4242: public String getId(int idx) { ingo@4242: YAXIS[] yaxes = YAXIS.values(); ingo@4242: return yaxes[idx].toString(); ingo@4242: } ingo@4242: }; ingo@4242: } ingo@4242: ingo@4242: @Override ingo@4242: protected String getDefaultChartTitle() { ingo@4242: return msg(I18N_CHART_TITLE, I18N_CHART_TITLE); ingo@4242: } ingo@4242: ingo@4242: @Override ingo@4242: protected String getDefaultChartSubtitle() { ingo@4242: FLYSArtifact flys = (FLYSArtifact) master; ingo@4242: Timerange evalTime = new HistoricalDischargeAccess(flys) ingo@4242: .getEvaluationTimerange(); ingo@4242: ingo@4242: Object[] args = new Object[] { FLYSUtils.getReferenceGaugeName(flys), ingo@4242: evalTime.getStart(), evalTime.getEnd() }; ingo@4242: ingo@4242: return msg(I18N_CHART_SUBTITLE, "", args); ingo@4242: } ingo@4242: ingo@4242: @Override ingo@4242: protected String getDefaultXAxisLabel() { ingo@4242: return msg(I18N_XAXIS_LABEL, I18N_XAXIS_LABEL); ingo@4242: } ingo@4242: ingo@4242: @Override ingo@4242: protected String getDefaultYAxisLabel(int pos) { ingo@4242: if (pos == 0) { ingo@4242: return msg(I18N_YAXIS_LABEL, I18N_YAXIS_LABEL); ingo@4242: } ingo@4242: else if (pos == 1) { ingo@4242: return msg(I18N_YAXIS_SECOND_LABEL, I18N_YAXIS_SECOND_LABEL); ingo@4242: } ingo@4242: else { ingo@4242: return "NO TITLE FOR Y AXIS: " + pos; ingo@4242: } ingo@4242: } ingo@4242: ingo@4242: @Override ingo@4242: public void doOut(ArtifactAndFacet artifactFacet, Document theme, ingo@4242: boolean visible) { ingo@4242: String name = artifactFacet.getFacetName(); ingo@4242: logger.debug("HistoricalDischargeWQCurveGenerator.doOut: " + name); ingo@4242: logger.debug("Theme description is: " ingo@4242: + artifactFacet.getFacetDescription()); ingo@4242: ingo@4242: if (name.equals(HISTORICAL_DISCHARGE_WQ_Q)) { ingo@4242: doHistoricalDischargeOutQ( ingo@4242: (FLYSArtifact) artifactFacet.getArtifact(), ingo@4242: artifactFacet.getData(context), ingo@4242: artifactFacet.getFacetDescription(), theme, visible); ingo@4242: } ingo@4242: else if (name.equals(HISTORICAL_DISCHARGE_WQ_W)) { ingo@4242: doHistoricalDischargeOutW( ingo@4242: (FLYSArtifact) artifactFacet.getArtifact(), ingo@4242: artifactFacet.getData(context), ingo@4242: artifactFacet.getFacetDescription(), theme, visible); ingo@4242: } ingo@4242: else if (name.equals(HISTORICAL_DISCHARGE_WQ_CURVE)) { ingo@4242: doHistoricalDischargeCurveOut( ingo@4242: (FLYSArtifact) artifactFacet.getArtifact(), ingo@4242: artifactFacet.getData(context), ingo@4242: artifactFacet.getFacetDescription(), theme, visible); ingo@4242: } ingo@4242: else if (FacetTypes.IS.MANUALPOINTS(name)) { ingo@4242: doPoints(artifactFacet.getData(context), artifactFacet, theme, ingo@4242: visible, YAXIS.W.idx); ingo@4242: } ingo@4242: else { ingo@4242: logger.warn("doOut(): unknown facet name: " + name); ingo@4242: return; ingo@4242: } ingo@4242: } ingo@4242: ingo@4242: protected void doHistoricalDischargeOutQ(FLYSArtifact artifact, ingo@4242: Object data, String desc, Document theme, boolean visible) { ingo@4242: logger.debug("doHistoricalDischargeOutQ(): description = " + desc); ingo@4242: ingo@4242: // addAxisDataset(series, YAXIS.Q.idx, visible); ingo@4242: } ingo@4242: ingo@4242: protected void doHistoricalDischargeOutW(FLYSArtifact artifact, ingo@4242: Object data, String desc, Document theme, boolean visible) { ingo@4242: logger.debug("doHistoricalDischargeOutW(): description = " + desc); ingo@4242: ingo@4242: // addAxisDataset(series, YAXIS.W.idx, visible); ingo@4242: } ingo@4242: ingo@4242: protected void doHistoricalDischargeCurveOut(FLYSArtifact artifact, Object data, ingo@4242: String desc, Document theme, boolean visible) { ingo@4242: XYSeries series = new StyledXYSeries(desc, theme); ingo@4242: StyledSeriesBuilder.addPointsQW(series, (WQKms) data); ingo@4242: ingo@4242: addAxisSeries(series, YAXIS.W.idx, visible); ingo@4242: } ingo@4242: } ingo@4242: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :