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

http://dive4elements.wald.intevation.org