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@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 = christian@3055: Logger.getLogger(FixWQChartGenerator.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@3055: public void doOut(ArtifactAndFacet bundle, Document doc, boolean visible) { christian@3055: String name = bundle.getFacetName(); christian@3055: /* Object data; christian@3055: try { christian@3055: data = bundle.getData(context); christian@3055: } catch(NullPointerException ex) { // FIXME it's crashing on every edge christian@3055: logger.error("doOut Exception catched", ex); christian@3055: data = new Object(); christian@3055: }*/ christian@3055: logger.debug("doOut: " + name); christian@3055: //logger.debug("doOut: data is instanceof " + data.toString()); christian@3055: christian@3055: if(FIX_SECTOR_AVERAGE_WQ.equals(name)) { christian@3055: doSectorAverageOut(bundle, doc, visible); christian@3055: } else if(FIX_ANALYSIS_EVENTS_WQ.equals(name)) { christian@3055: doAnalysisEventsOut(bundle, doc, visible); christian@3055: } else if(FIX_ANALYSIS_PERIODS_WQ.equals(name)) { christian@3055: doAnalysisPeriodsOut(bundle, doc, visible); christian@3055: } else if(FIX_REFERENCE_EVENTS_WQ.equals(name)) { christian@3055: doReferenceEventsOut(bundle, doc, visible); christian@3055: } else if(FIX_WQ_CURVE.equals(name)) { christian@3055: doWQOut(new QW(13.37, 42.23, "Unknown point", new Date()), bundle, doc, visible); christian@3055: } else if(FIX_OUTLIER.equals(name)) { christian@3055: doOutlierOut(bundle, 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@3055: protected void doWQOut( christian@3055: QW wqdays, christian@3055: ArtifactAndFacet aaf, christian@3055: Document theme, christian@3055: boolean visible christian@3055: ) { christian@3055: logger.debug("doWQOut"); christian@3055: christian@3055: XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), theme); christian@3055: java.util.Random rand = new java.util.Random(1000); christian@3055: int size = 10; //wqdays.size(); christian@3055: for (int i = 0; i < size; i++) { christian@3055: //int day = wqdays.getDate(i); christian@3055: //double q = wqdays.getQ(i); christian@3055: 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 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 :