Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/exports/fixings/FixLongitudinalSectionGenerator.java @ 3978:3aec5a42696a
dummy merge for repo head
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Fri, 28 Sep 2012 12:15:54 +0200 |
parents | fc6c6f6039df |
children | 512a3af69e18 |
line wrap: on
line source
package de.intevation.flys.exports.fixings; import java.awt.BasicStroke; import java.awt.Color; import org.apache.log4j.Logger; import org.jfree.chart.plot.Marker; import org.jfree.chart.plot.ValueMarker; import org.jfree.data.xy.XYSeries; import org.jfree.data.xy.XYSeriesCollection; import org.w3c.dom.Document; import de.intevation.artifactdatabase.state.ArtifactAndFacet; import de.intevation.flys.artifacts.model.FacetTypes; import de.intevation.flys.artifacts.model.fixings.AnalysisPeriod; import de.intevation.flys.artifacts.model.fixings.QWD; import de.intevation.flys.exports.ChartGenerator; import de.intevation.flys.jfree.FLYSAnnotation; import de.intevation.flys.jfree.StyledAreaSeriesCollection; import de.intevation.flys.jfree.StyledXYSeries; import de.intevation.flys.utils.KMIndex; public class FixLongitudinalSectionGenerator extends FixChartGenerator implements FacetTypes { private static Logger logger = Logger.getLogger(FixLongitudinalSectionGenerator.class); public static final String I18N_CHART_TITLE = "chart.fixings.longitudinalsection.title"; public static final String I18N_CHART_SUBTITLE = "chart.fixings.longitudinalsection.subtitle"; public static final String I18N_XAXIS_LABEL = "chart.fixings.longitudinalsection.xaxis.label"; public static final String I18N_YAXIS_LABEL = "chart.fixings.longitudinalsection.yaxis.label"; public static final String I18N_CHART_TITLE_DEFAULT = "Fixierungsanalyse"; public static final String I18N_XAXIS_LABEL_DEFAULT = "[km]"; public static final String I18N_YAXIS_LABEL_DEFAULT = "delta W [cm]"; public static enum YAXIS { dW(0); public int idx; private YAXIS(int c) { idx = c; } } @Override public void doOut(ArtifactAndFacet aaf, Document doc, boolean visible) { String name = aaf.getFacetName(); logger.debug("FixLongitudinalSectionGenerator: doOut: " + name); if (name.contains(FIX_SECTOR_AVERAGE_LS_DEVIATION)) { doSectorAverageDeviationOut(aaf, doc, visible); } else if (name.contains(FIX_SECTOR_AVERAGE_LS)) { doSectorAverageOut(aaf, doc, visible); } else if (name.equals(FIX_REFERENCE_EVENTS_LS)) { doReferenceEventsOut(aaf, doc, visible); } else if (name.equals(FIX_ANALYSIS_EVENTS_LS)) { doAnalysisEventsOut(aaf, doc, visible); } else if (name.equals(FIX_DEVIATION_LS)) { doReferenceDeviationOut(aaf, doc, visible); } else if (name.equals(LONGITUDINAL_ANNOTATION)) { doAnnotations( (FLYSAnnotation) aaf.getData(context), aaf, doc, visible); } else if (FacetTypes.IS.MANUALPOINTS(name)) { doPoints (aaf.getData(context), aaf, doc, visible, YAXIS.dW.idx); } else { logger.warn("Unknown facet name " + name); return; } } @SuppressWarnings("unchecked") protected void doSectorAverageOut( ArtifactAndFacet aaf, Document doc, boolean visible) { logger.debug("doSectorAverageOut" + aaf.getFacet().getIndex()); int index = aaf.getFacet().getIndex(); int sectorNdx = index & 3; KMIndex<AnalysisPeriod> kms = (KMIndex<AnalysisPeriod>)aaf.getData(context); if(kms == null) { return; } XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), doc); for (KMIndex.Entry<AnalysisPeriod> entry: kms) { double km = entry.getKm(); AnalysisPeriod ap = entry.getValue(); QWD qwd = ap.getQSectorAverages()[sectorNdx]; if (qwd == null) { continue; } double deltaW = qwd.getDeltaW(); series.add(km, deltaW); } addAxisSeries(series, 0, visible); } @SuppressWarnings("unchecked") protected void doSectorAverageDeviationOut( ArtifactAndFacet aaf, Document doc, boolean visible) { logger.debug("doSectorAverageOut" + aaf.getFacet().getIndex()); int index = aaf.getFacet().getIndex(); int sectorNdx = index & 3; KMIndex<AnalysisPeriod> kms = (KMIndex<AnalysisPeriod>)aaf.getData(context); if(kms == null) { return; } StyledAreaSeriesCollection area = new StyledAreaSeriesCollection(doc); XYSeries upper = new StyledXYSeries(aaf.getFacetDescription(), false, doc); XYSeries lower = new StyledXYSeries(aaf.getFacetDescription() + " ", false, doc); for (KMIndex.Entry<AnalysisPeriod> entry: kms) { double km = entry.getKm(); AnalysisPeriod ap = entry.getValue(); QWD qwd = ap.getQSectorAverages()[sectorNdx]; double dev = ap.getQSectorStdDev(sectorNdx); logger.debug("std-dev: " + dev); if (qwd == null) { continue; } double deltaW = qwd.getDeltaW(); double up = deltaW + dev; double lo = deltaW - dev; upper.add(km, up); lower.add(km, lo); } area.addSeries(upper); area.addSeries(lower); addAreaSeries(area, 0, visible); } @SuppressWarnings("unchecked") protected void doReferenceDeviationOut( ArtifactAndFacet aaf, Document doc, boolean visible) { logger.debug("doReferenceOut"); KMIndex<double[]> kms = (KMIndex<double[]>)aaf.getData(context); if(kms == null) { return; } StyledAreaSeriesCollection area = new StyledAreaSeriesCollection(doc); XYSeries upper = new StyledXYSeries(aaf.getFacetDescription(), false, doc); XYSeries lower = new StyledXYSeries(aaf.getFacetDescription() + " ", false, doc); for (KMIndex.Entry<double[]> entry: kms) { double km = entry.getKm(); double[] devArray = entry.getValue(); if (devArray == null) { continue; } double dev = devArray[0]; double up = dev; double lo = -dev; upper.add(km, up, false); lower.add(km, lo, false); } area.addSeries(upper); area.addSeries(lower); Marker marker = new ValueMarker(0); marker.setStroke(new BasicStroke(2)); marker.setPaint(Color.BLACK); addValueMarker(marker); addAreaSeries(area, 0, visible); } @SuppressWarnings("unchecked") protected void doAnalysisEventsOut( ArtifactAndFacet aaf, Document doc, boolean visible) { logger.debug("doAnalysisEventsOut"); KMIndex<QWD> kms = (KMIndex<QWD>)aaf.getData(context); if(kms == null) { return; } XYSeriesCollection col = new XYSeriesCollection(); StyledXYSeries series = new StyledXYSeries(aaf.getFacetDescription(), false, doc); for (KMIndex.Entry<QWD> entry: kms) { double km = entry.getKm(); QWD qwd = entry.getValue(); series.add(km, qwd.getDeltaW()); } col.addSeries(series); addAxisDataset(col, 0, visible); } @SuppressWarnings("unchecked") protected void doReferenceEventsOut( ArtifactAndFacet aaf, Document doc, boolean visible) { logger.debug("doReferenceEventOut"); KMIndex<QWD> kms = (KMIndex<QWD>)aaf.getData(context); if(kms == null) { return; } XYSeriesCollection col = new XYSeriesCollection(); StyledXYSeries series = new StyledXYSeries(aaf.getFacetDescription(), false, doc); for (KMIndex.Entry<QWD> entry: kms) { double km = entry.getKm(); QWD qwd = entry.getValue(); series.add(km, qwd.getDeltaW()); } col.addSeries(series); addAxisDataset(col, 0, visible); } @Override protected String getDefaultChartTitle() { return msg(I18N_CHART_TITLE, I18N_CHART_TITLE_DEFAULT); } @Override protected String getDefaultXAxisLabel() { return msg(I18N_XAXIS_LABEL, I18N_XAXIS_LABEL_DEFAULT); } @Override protected String getDefaultYAxisLabel(int pos) { return msg(I18N_YAXIS_LABEL, I18N_YAXIS_LABEL_DEFAULT); } @Override protected ChartGenerator.YAxisWalker getYAxisWalker() { return new YAxisWalker() { @Override public int length() { return YAXIS.values().length; } @Override public String getId(int idx) { YAXIS[] yaxes = YAXIS.values(); return yaxes[idx].toString(); } }; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :