Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/exports/process/WOutProcessor.java @ 7067:eb24d5203d17 generator-refactoring
Add second doOut implementations to work with diagram generator
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Fri, 20 Sep 2013 14:54:26 +0200 |
parents | 1011a40ee79c |
children | 253d80af5b7f |
comparison
equal
deleted
inserted
replaced
7062:4310c612a986 | 7067:eb24d5203d17 |
---|---|
15 import org.dive4elements.artifacts.CallContext; | 15 import org.dive4elements.artifacts.CallContext; |
16 import org.dive4elements.river.artifacts.model.FacetTypes; | 16 import org.dive4elements.river.artifacts.model.FacetTypes; |
17 import org.dive4elements.river.artifacts.model.WKms; | 17 import org.dive4elements.river.artifacts.model.WKms; |
18 import org.dive4elements.river.exports.StyledSeriesBuilder; | 18 import org.dive4elements.river.exports.StyledSeriesBuilder; |
19 import org.dive4elements.river.exports.XYChartGenerator; | 19 import org.dive4elements.river.exports.XYChartGenerator; |
20 import org.dive4elements.river.exports.DiagramGenerator; | |
20 import org.dive4elements.river.jfree.StyledAreaSeriesCollection; | 21 import org.dive4elements.river.jfree.StyledAreaSeriesCollection; |
21 import org.dive4elements.river.jfree.StyledXYSeries; | 22 import org.dive4elements.river.jfree.StyledXYSeries; |
22 import org.dive4elements.river.themes.ThemeDocument; | 23 import org.dive4elements.river.themes.ThemeDocument; |
23 import org.dive4elements.river.utils.DataUtil; | 24 import org.dive4elements.river.utils.DataUtil; |
24 | 25 |
30 public class WOutProcessor extends DefaultProcessor { | 31 public class WOutProcessor extends DefaultProcessor { |
31 | 32 |
32 /** Private logger. */ | 33 /** Private logger. */ |
33 private static final Logger logger = | 34 private static final Logger logger = |
34 Logger.getLogger(WOutProcessor.class); | 35 Logger.getLogger(WOutProcessor.class); |
36 | |
37 @Override | |
38 public void doOut( | |
39 DiagramGenerator generator, | |
40 ArtifactAndFacet aaf, | |
41 ThemeDocument theme, | |
42 boolean visible) { | |
43 CallContext context = generator.getCallContext(); | |
44 WKms wkms = (WKms) aaf.getData(context); | |
45 | |
46 logger.debug("doOut"); | |
47 | |
48 XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), theme); | |
49 | |
50 StyledSeriesBuilder.addPoints(series, wkms); | |
51 generator.addAxisSeries(series, axisName, visible); | |
52 | |
53 // If a "band around the curve shall be drawn, add according area. | |
54 double bandWidth = theme.parseBandWidth(); | |
55 if (bandWidth > 0 ) { | |
56 XYSeries seriesDown = new StyledXYSeries( | |
57 "band " + aaf.getFacetDescription(), false, theme); | |
58 XYSeries seriesUp = new StyledXYSeries( | |
59 aaf.getFacetDescription()+"+/-"+bandWidth, false, theme); | |
60 StyledSeriesBuilder.addUpperBand(seriesUp, wkms, bandWidth); | |
61 StyledSeriesBuilder.addLowerBand(seriesDown, wkms, bandWidth); | |
62 | |
63 StyledAreaSeriesCollection area = new StyledAreaSeriesCollection(theme); | |
64 area.addSeries(seriesUp); | |
65 area.addSeries(seriesDown); | |
66 area.setMode(StyledAreaSeriesCollection.FILL_MODE.BETWEEN); | |
67 generator.addAreaSeries(area, axisName, visible); | |
68 } | |
69 | |
70 if (aaf.getFacetName().equals(FacetTypes.LONGITUDINAL_W) || | |
71 aaf.getFacetName().equals(FacetTypes.DISCHARGE_LONGITUDINAL_W) || | |
72 aaf.getFacetName().equals(FacetTypes.STATIC_WQKMS_W)) { | |
73 /* Only use W values to check if the diagram should be inverted | |
74 * see flys/issue1290 for details */ | |
75 invertAxis(generator, wkms); | |
76 } | |
77 } | |
35 | 78 |
36 @Override | 79 @Override |
37 public void doOut( | 80 public void doOut( |
38 XYChartGenerator generator, | 81 XYChartGenerator generator, |
39 ArtifactAndFacet aaf, | 82 ArtifactAndFacet aaf, |
104 * should decrease. | 147 * should decrease. |
105 * | 148 * |
106 * @param wkms The data object that stores the x and y values used for this | 149 * @param wkms The data object that stores the x and y values used for this |
107 * chart. | 150 * chart. |
108 */ | 151 */ |
152 // TODO Remove | |
109 public void invertAxis(XYChartGenerator generator, WKms wkms) { | 153 public void invertAxis(XYChartGenerator generator, WKms wkms) { |
154 boolean wsUp = wkms.guessWaterIncreasing(); | |
155 boolean kmUp = DataUtil.guessWaterIncreasing(wkms.allKms()); | |
156 int size = wkms.size(); | |
157 boolean inv = ((wsUp && kmUp) || (!wsUp && !kmUp)) && size > 1; | |
158 | |
159 if (logger.isDebugEnabled()) { | |
160 logger.debug("(Wkms)Values : " + size); | |
161 if (size > 0) { | |
162 logger.debug("Start km: " + wkms.getKm(0)); | |
163 logger.debug("End km: " + wkms.getKm(size-1)); | |
164 } | |
165 logger.debug("wsUp: " + wsUp); | |
166 logger.debug("kmUp: " + kmUp); | |
167 if (size == 1) { | |
168 logger.debug("InvertAxis not inverting because we have just one km"); | |
169 } | |
170 logger.debug("inv: " + inv); | |
171 } | |
172 generator.setInverted(inv); | |
173 } | |
174 public void invertAxis(DiagramGenerator generator, WKms wkms) { | |
110 boolean wsUp = wkms.guessWaterIncreasing(); | 175 boolean wsUp = wkms.guessWaterIncreasing(); |
111 boolean kmUp = DataUtil.guessWaterIncreasing(wkms.allKms()); | 176 boolean kmUp = DataUtil.guessWaterIncreasing(wkms.allKms()); |
112 int size = wkms.size(); | 177 int size = wkms.size(); |
113 boolean inv = ((wsUp && kmUp) || (!wsUp && !kmUp)) && size > 1; | 178 boolean inv = ((wsUp && kmUp) || (!wsUp && !kmUp)) && size > 1; |
114 | 179 |