christian@3055: package de.intevation.flys.exports.fixings; christian@3055: christian@3055: import de.intevation.artifactdatabase.state.ArtifactAndFacet; christian@3055: import de.intevation.flys.artifacts.model.FacetTypes; christian@3055: import de.intevation.flys.artifacts.model.WQDay; christian@3056: import de.intevation.flys.artifacts.model.fixings.FixFunction; christian@3055: import de.intevation.flys.artifacts.model.fixings.QW; christian@3055: import de.intevation.flys.exports.ChartGenerator; christian@3055: import de.intevation.flys.exports.XYChartGenerator; christian@3055: import de.intevation.flys.jfree.StyledXYSeries; christian@3055: christian@3055: import java.util.Date; christian@3055: christian@3055: import org.apache.log4j.Logger; christian@3055: christian@3055: import org.jfree.data.xy.XYSeries; christian@3055: christian@3055: import org.w3c.dom.Document; christian@3055: christian@3055: public class FixWQCurveGenerator christian@3055: extends XYChartGenerator christian@3055: implements FacetTypes christian@3055: { christian@3055: private static Logger logger = sascha@3057: Logger.getLogger(FixWQCurveGenerator.class); christian@3055: christian@3055: public static final String I18N_CHART_TITLE = christian@3055: "chart.fixings.wq.title"; christian@3055: christian@3055: public static final String I18N_CHART_SUBTITLE = christian@3055: "chart.fixings.wq.subtitle"; christian@3055: christian@3055: public static final String I18N_XAXIS_LABEL = christian@3055: "chart.fixings.wq.xaxis.label"; christian@3055: christian@3055: public static final String I18N_YAXIS_LABEL = christian@3055: "chart.fixings.wq.yaxis.label"; christian@3055: christian@3055: public static final String I18N_CHART_TITLE_DEFAULT = christian@3055: "Fixierungsanalyse"; christian@3055: christian@3055: public static final String I18N_XAXIS_LABEL_DEFAULT = christian@3055: "Q [m\u00B3/s]"; christian@3055: christian@3055: public static final String I18N_YAXIS_LABEL_DEFAULT = christian@3055: "W [NN + m]"; christian@3055: christian@3055: public static enum YAXIS { christian@3055: W(0), christian@3055: Q(1); christian@3055: public int idx; christian@3055: private YAXIS(int c) { christian@3055: idx = c; christian@3055: } christian@3055: } christian@3055: christian@3055: @Override christian@3056: public void doOut(ArtifactAndFacet aaf, Document doc, boolean visible) { christian@3056: String name = aaf.getFacetName(); christian@3055: logger.debug("doOut: " + name); christian@3056: christian@3055: if(FIX_SECTOR_AVERAGE_WQ.equals(name)) { christian@3056: doSectorAverageOut(aaf, doc, visible); christian@3055: } else if(FIX_ANALYSIS_EVENTS_WQ.equals(name)) { christian@3056: doAnalysisEventsOut(aaf, doc, visible); christian@3055: } else if(FIX_ANALYSIS_PERIODS_WQ.equals(name)) { christian@3056: doAnalysisPeriodsOut(aaf, doc, visible); christian@3055: } else if(FIX_REFERENCE_EVENTS_WQ.equals(name)) { christian@3056: doReferenceEventsOut(aaf, doc, visible); christian@3055: } else if(FIX_WQ_CURVE.equals(name)) { christian@3056: doWQCurveOut(aaf, doc, visible); christian@3055: } else if(FIX_OUTLIER.equals(name)) { christian@3056: doOutlierOut(aaf, doc, visible); christian@3055: } else { christian@3055: logger.warn("Unknown facet name " + name); christian@3055: return; christian@3055: } christian@3055: } christian@3055: christian@3055: protected void doSectorAverageOut(ArtifactAndFacet aaf, Document doc, boolean visible) { christian@3055: logger.debug("doSectorAverageOut"); christian@3055: christian@3055: XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), doc); christian@3055: java.util.Random rand = new java.util.Random(7000); christian@3055: for(int n = 0; n < 10; n++) { christian@3055: series.add(rand.nextDouble(), rand.nextDouble()); christian@3055: } christian@3055: christian@3055: addAxisSeries(series, 0, visible); christian@3055: } christian@3055: christian@3055: protected void doAnalysisEventsOut(ArtifactAndFacet aaf, Document doc, boolean visible) { christian@3055: logger.debug("doAnalysisEventsOut"); christian@3055: christian@3055: XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), doc); christian@3055: java.util.Random rand = new java.util.Random(4000); christian@3055: for(int n = 0; n < 10; n++) { christian@3055: series.add(rand.nextDouble(), rand.nextDouble()); christian@3055: } christian@3055: christian@3055: addAxisSeries(series, 0, visible); christian@3055: } christian@3055: christian@3055: protected void doAnalysisPeriodsOut(ArtifactAndFacet aaf, Document doc, boolean visible) { christian@3055: logger.debug("doAnalysisPeriodsOut"); christian@3055: christian@3055: XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), doc); christian@3055: java.util.Random rand = new java.util.Random(5000); christian@3055: for(int n = 0; n < 10; n++) { christian@3055: series.add(rand.nextDouble(), rand.nextDouble()); christian@3055: } christian@3055: christian@3055: addAxisSeries(series, 0, visible); christian@3055: } christian@3055: christian@3055: protected void doReferenceEventsOut(ArtifactAndFacet aaf, Document doc, boolean visible) { christian@3055: logger.debug("doReferenceEventsOut"); christian@3055: christian@3055: XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), doc); christian@3055: java.util.Random rand = new java.util.Random(3000); christian@3055: for(int n = 0; n < 10; n++) { christian@3055: series.add(rand.nextDouble(), rand.nextDouble()); christian@3055: } christian@3055: christian@3055: addAxisSeries(series, 0, visible); christian@3055: } christian@3055: christian@3056: protected void doWQCurveOut(ArtifactAndFacet aaf, Document doc, boolean visible) { christian@3056: logger.debug("doWQCurveOut"); christian@3055: christian@3056: FixFunction func = (FixFunction)aaf.getData(context); christian@3055: christian@3056: XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), doc); christian@3056: for (int q = 0; q <= func.getMaxQ(); q += 1.0) { christian@3056: series.add(q, func.getFunction().value(q)); christian@3055: } christian@3055: christian@3055: addAxisSeries(series, 0, visible); christian@3055: } christian@3055: christian@3055: protected void doOutlierOut(ArtifactAndFacet aaf, Document doc, boolean visible) { christian@3055: logger.debug("doOutlierOut"); christian@3055: christian@3055: XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), doc); christian@3055: java.util.Random rand = new java.util.Random(2000); christian@3055: for(int n = 0; n < 10; n++) { christian@3055: series.add(rand.nextDouble(), rand.nextDouble()); christian@3055: } christian@3055: christian@3055: addAxisSeries(series,0, visible); christian@3055: } christian@3055: christian@3055: @Override christian@3055: protected String getDefaultChartTitle() { christian@3055: return msg(I18N_CHART_TITLE, I18N_CHART_TITLE_DEFAULT); christian@3055: } christian@3055: christian@3055: @Override christian@3055: protected String getDefaultXAxisLabel() { christian@3055: return msg(I18N_XAXIS_LABEL, I18N_XAXIS_LABEL_DEFAULT); christian@3055: } christian@3055: christian@3055: @Override christian@3055: protected String getDefaultYAxisLabel(int pos) { christian@3055: return msg(I18N_YAXIS_LABEL, I18N_YAXIS_LABEL_DEFAULT); christian@3055: } christian@3055: christian@3055: @Override christian@3055: protected ChartGenerator.YAxisWalker getYAxisWalker() { christian@3055: return new YAxisWalker() { christian@3055: @Override christian@3055: public int length() { christian@3055: return YAXIS.values().length; christian@3055: } christian@3055: christian@3055: @Override christian@3055: public String getId(int idx) { christian@3055: YAXIS[] yaxes = YAXIS.values(); christian@3055: return yaxes[idx].toString(); christian@3055: } christian@3055: }; christian@3055: } christian@3055: } christian@3055: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :