annotate flys-artifacts/src/main/java/org/dive4elements/river/exports/process/WOutProcessor.java @ 5831:bd047b71ab37

Repaired internal references
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 12:06:39 +0200
parents flys-artifacts/src/main/java/de/intevation/flys/exports/process/WOutProcessor.java@397ff862b417
children
rev   line source
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5800
diff changeset
1 package org.dive4elements.river.exports.process;
4447
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
2
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
3 import org.apache.log4j.Logger;
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
4 import org.jfree.data.xy.XYSeries;
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
5 import org.w3c.dom.Document;
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
6
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5800
diff changeset
7 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5800
diff changeset
8 import org.dive4elements.artifacts.CallContext;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5800
diff changeset
9 import org.dive4elements.river.artifacts.model.FacetTypes;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5800
diff changeset
10 import org.dive4elements.river.artifacts.model.WKms;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5800
diff changeset
11 import org.dive4elements.river.exports.StyledSeriesBuilder;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5800
diff changeset
12 import org.dive4elements.river.exports.XYChartGenerator;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5800
diff changeset
13 import org.dive4elements.river.jfree.StyledAreaSeriesCollection;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5800
diff changeset
14 import org.dive4elements.river.jfree.StyledXYSeries;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5800
diff changeset
15 import org.dive4elements.river.utils.DataUtil;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5800
diff changeset
16 import org.dive4elements.river.utils.ThemeUtil;
4447
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
17
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
18 /**
5800
397ff862b417 WOutProcessor: Renaming, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5341
diff changeset
19 * Add data to chart/generator.
397ff862b417 WOutProcessor: Renaming, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5341
diff changeset
20 *
4447
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
21 * @author <a href="mailto:bjoern.ricks@intevation.de">Björn Ricks</a>
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
22 */
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
23 public class WOutProcessor implements Processor {
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
24
5800
397ff862b417 WOutProcessor: Renaming, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5341
diff changeset
25 /** Private logger. */
4447
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
26 private static final Logger logger =
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
27 Logger.getLogger(WOutProcessor.class);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
28
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
29 @Override
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
30 public void doOut(
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
31 XYChartGenerator generator,
5341
547041487266 Doc, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4447
diff changeset
32 ArtifactAndFacet aaf,
547041487266 Doc, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4447
diff changeset
33 Document theme,
547041487266 Doc, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4447
diff changeset
34 boolean visible,
547041487266 Doc, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4447
diff changeset
35 int index)
4447
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
36 {
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
37 CallContext context = generator.getCallContext();
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
38 WKms wkms = (WKms) aaf.getData(context);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
39
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
40 logger.debug("doOut");
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
41
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
42 XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), theme);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
43
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
44 StyledSeriesBuilder.addPoints(series, wkms);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
45 generator.addAxisSeries(series, index, visible);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
46
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
47 // If a "band around the curve shall be drawn, add according area.
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
48 double bandWidth = ThemeUtil.parseBandWidth(theme);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
49 if (bandWidth > 0 ) {
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
50 XYSeries seriesDown = new StyledXYSeries(
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
51 "band " + aaf.getFacetDescription(), false, theme);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
52 XYSeries seriesUp = new StyledXYSeries(
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
53 aaf.getFacetDescription()+"+/-"+bandWidth, false, theme);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
54 StyledSeriesBuilder.addUpperBand(seriesUp, wkms, bandWidth);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
55 StyledSeriesBuilder.addLowerBand(seriesDown, wkms, bandWidth);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
56
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
57 StyledAreaSeriesCollection area = new StyledAreaSeriesCollection(theme);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
58 area.addSeries(seriesUp);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
59 area.addSeries(seriesDown);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
60 area.setMode(StyledAreaSeriesCollection.FILL_MODE.BETWEEN);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
61 generator.addAreaSeries(area, index, visible);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
62 }
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
63
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
64 invertAxis(generator, wkms);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
65 }
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
66
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
67 /**
5341
547041487266 Doc, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4447
diff changeset
68 * Returns true if facettype is longitutinal_section.w .
4447
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
69 */
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
70 @Override
5800
397ff862b417 WOutProcessor: Renaming, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5341
diff changeset
71 public boolean canHandle(String facetType) {
397ff862b417 WOutProcessor: Renaming, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5341
diff changeset
72 if (facetType == null) {
4447
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
73 return false;
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
74 }
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
75
5800
397ff862b417 WOutProcessor: Renaming, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5341
diff changeset
76 if (facetType.equals(FacetTypes.LONGITUDINAL_W)
397ff862b417 WOutProcessor: Renaming, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5341
diff changeset
77 || facetType.equals(FacetTypes.STATIC_WKMS)
397ff862b417 WOutProcessor: Renaming, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5341
diff changeset
78 || facetType.equals(FacetTypes.HEIGHTMARKS_POINTS)
397ff862b417 WOutProcessor: Renaming, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5341
diff changeset
79 || facetType.equals(FacetTypes.STATIC_WQKMS)
397ff862b417 WOutProcessor: Renaming, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5341
diff changeset
80 || facetType.equals(FacetTypes.STATIC_WQKMS_W)
397ff862b417 WOutProcessor: Renaming, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5341
diff changeset
81 || facetType.equals(FacetTypes.DISCHARGE_LONGITUDINAL_W))
4447
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
82 {
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
83 return true;
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
84 }
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
85 return false;
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
86 }
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
87
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
88 /**
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
89 * This method determines - taking JFreeCharts auto x value ordering into
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
90 * account - if the x axis need to be inverted. Waterlines in these charts
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
91 * should decrease.
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
92 *
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
93 * @param wkms The data object that stores the x and y values used for this
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
94 * chart.
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
95 */
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
96 public void invertAxis(XYChartGenerator generator, WKms wkms) {
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
97 boolean wsUp = wkms.guessWaterIncreasing();
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
98 boolean kmUp = DataUtil.guessWaterIncreasing(wkms.allKms());
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
99 boolean inv = (wsUp && kmUp) || (!wsUp && !kmUp);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
100
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
101 int size = wkms.size();
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
102
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
103 if (logger.isDebugEnabled()) {
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
104 logger.debug("(Wkms)Values : " + size);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
105 if (size > 0) {
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
106 logger.debug("Start km: " + wkms.getKm(0));
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
107 logger.debug("End km: " + wkms.getKm(size-1));
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
108 }
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
109 logger.debug("wsUp: " + wsUp);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
110 logger.debug("kmUp: " + kmUp);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
111 logger.debug("inv: " + inv);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
112 }
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
113 generator.setInverted(inv);
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
114 }
a5993b69439b Add processor to be able to generate curves for WKms values
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff changeset
115 }
5341
547041487266 Doc, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4447
diff changeset
116 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org