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