comparison artifacts/src/main/java/org/dive4elements/river/exports/process/WOutProcessor.java @ 7075:253d80af5b7f generator-refactoring

More Processor refactoring - Unify aandf aaf and bundle variable names to bundle - Factor out diagram inversion code - Add function with new signature to BedDiffYear and QOut processors
author Andre Heinecke <aheinecke@intevation.de>
date Fri, 20 Sep 2013 16:25:43 +0200
parents eb24d5203d17
children 3c4efd4b2c19
comparison
equal deleted inserted replaced
7074:a2abd87c0d3b 7075:253d80af5b7f
35 Logger.getLogger(WOutProcessor.class); 35 Logger.getLogger(WOutProcessor.class);
36 36
37 @Override 37 @Override
38 public void doOut( 38 public void doOut(
39 DiagramGenerator generator, 39 DiagramGenerator generator,
40 ArtifactAndFacet aaf, 40 ArtifactAndFacet bundle,
41 ThemeDocument theme, 41 ThemeDocument theme,
42 boolean visible) { 42 boolean visible) {
43 CallContext context = generator.getCallContext(); 43 CallContext context = generator.getCallContext();
44 WKms wkms = (WKms) aaf.getData(context); 44 WKms wkms = (WKms) bundle.getData(context);
45 45
46 logger.debug("doOut"); 46 logger.debug("doOut");
47 47
48 XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), theme); 48 XYSeries series = new StyledXYSeries(bundle.getFacetDescription(), theme);
49 49
50 StyledSeriesBuilder.addPoints(series, wkms); 50 StyledSeriesBuilder.addPoints(series, wkms);
51 generator.addAxisSeries(series, axisName, visible); 51 generator.addAxisSeries(series, axisName, visible);
52 52
53 // If a "band around the curve shall be drawn, add according area. 53 // If a "band around the curve shall be drawn, add according area.
54 double bandWidth = theme.parseBandWidth(); 54 double bandWidth = theme.parseBandWidth();
55 if (bandWidth > 0 ) { 55 if (bandWidth > 0 ) {
56 XYSeries seriesDown = new StyledXYSeries( 56 XYSeries seriesDown = new StyledXYSeries(
57 "band " + aaf.getFacetDescription(), false, theme); 57 "band " + bundle.getFacetDescription(), false, theme);
58 XYSeries seriesUp = new StyledXYSeries( 58 XYSeries seriesUp = new StyledXYSeries(
59 aaf.getFacetDescription()+"+/-"+bandWidth, false, theme); 59 bundle.getFacetDescription()+"+/-"+bandWidth, false, theme);
60 StyledSeriesBuilder.addUpperBand(seriesUp, wkms, bandWidth); 60 StyledSeriesBuilder.addUpperBand(seriesUp, wkms, bandWidth);
61 StyledSeriesBuilder.addLowerBand(seriesDown, wkms, bandWidth); 61 StyledSeriesBuilder.addLowerBand(seriesDown, wkms, bandWidth);
62 62
63 StyledAreaSeriesCollection area = new StyledAreaSeriesCollection(theme); 63 StyledAreaSeriesCollection area = new StyledAreaSeriesCollection(theme);
64 area.addSeries(seriesUp); 64 area.addSeries(seriesUp);
65 area.addSeries(seriesDown); 65 area.addSeries(seriesDown);
66 area.setMode(StyledAreaSeriesCollection.FILL_MODE.BETWEEN); 66 area.setMode(StyledAreaSeriesCollection.FILL_MODE.BETWEEN);
67 generator.addAreaSeries(area, axisName, visible); 67 generator.addAreaSeries(area, axisName, visible);
68 } 68 }
69 69
70 if (aaf.getFacetName().equals(FacetTypes.LONGITUDINAL_W) || 70 if (bundle.getFacetName().equals(FacetTypes.LONGITUDINAL_W) ||
71 aaf.getFacetName().equals(FacetTypes.DISCHARGE_LONGITUDINAL_W) || 71 bundle.getFacetName().equals(FacetTypes.DISCHARGE_LONGITUDINAL_W) ||
72 aaf.getFacetName().equals(FacetTypes.STATIC_WQKMS_W)) { 72 bundle.getFacetName().equals(FacetTypes.STATIC_WQKMS_W)) {
73 /* Only use W values to check if the diagram should be inverted 73 /* Only use W values to check if the diagram should be inverted
74 * see flys/issue1290 for details */ 74 * see flys/issue1290 for details */
75 invertAxis(generator, wkms); 75 generator.handleLTRWaterFlowInversion(wkms);
76 } 76 }
77 } 77 }
78 78
79 @Override 79 @Override
80 public void doOut( 80 public void doOut(
81 XYChartGenerator generator, 81 XYChartGenerator generator,
82 ArtifactAndFacet aaf, 82 ArtifactAndFacet bundle,
83 ThemeDocument theme, 83 ThemeDocument theme,
84 boolean visible, 84 boolean visible,
85 int index) 85 int index)
86 { 86 {
87 CallContext context = generator.getCallContext(); 87 CallContext context = generator.getCallContext();
88 WKms wkms = (WKms) aaf.getData(context); 88 WKms wkms = (WKms) bundle.getData(context);
89 89
90 logger.debug("doOut"); 90 logger.debug("doOut");
91 91
92 XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), theme); 92 XYSeries series = new StyledXYSeries(bundle.getFacetDescription(), theme);
93 93
94 StyledSeriesBuilder.addPoints(series, wkms); 94 StyledSeriesBuilder.addPoints(series, wkms);
95 generator.addAxisSeries(series, index, visible); 95 generator.addAxisSeries(series, index, visible);
96 96
97 // If a "band around the curve shall be drawn, add according area. 97 // If a "band around the curve shall be drawn, add according area.
98 double bandWidth = theme.parseBandWidth(); 98 double bandWidth = theme.parseBandWidth();
99 if (bandWidth > 0 ) { 99 if (bandWidth > 0 ) {
100 XYSeries seriesDown = new StyledXYSeries( 100 XYSeries seriesDown = new StyledXYSeries(
101 "band " + aaf.getFacetDescription(), false, theme); 101 "band " + bundle.getFacetDescription(), false, theme);
102 XYSeries seriesUp = new StyledXYSeries( 102 XYSeries seriesUp = new StyledXYSeries(
103 aaf.getFacetDescription()+"+/-"+bandWidth, false, theme); 103 bundle.getFacetDescription()+"+/-"+bandWidth, false, theme);
104 StyledSeriesBuilder.addUpperBand(seriesUp, wkms, bandWidth); 104 StyledSeriesBuilder.addUpperBand(seriesUp, wkms, bandWidth);
105 StyledSeriesBuilder.addLowerBand(seriesDown, wkms, bandWidth); 105 StyledSeriesBuilder.addLowerBand(seriesDown, wkms, bandWidth);
106 106
107 StyledAreaSeriesCollection area = new StyledAreaSeriesCollection(theme); 107 StyledAreaSeriesCollection area = new StyledAreaSeriesCollection(theme);
108 area.addSeries(seriesUp); 108 area.addSeries(seriesUp);
109 area.addSeries(seriesDown); 109 area.addSeries(seriesDown);
110 area.setMode(StyledAreaSeriesCollection.FILL_MODE.BETWEEN); 110 area.setMode(StyledAreaSeriesCollection.FILL_MODE.BETWEEN);
111 generator.addAreaSeries(area, index, visible); 111 generator.addAreaSeries(area, index, visible);
112 } 112 }
113 113
114 if (aaf.getFacetName().equals(FacetTypes.LONGITUDINAL_W) || 114 if (bundle.getFacetName().equals(FacetTypes.LONGITUDINAL_W) ||
115 aaf.getFacetName().equals(FacetTypes.DISCHARGE_LONGITUDINAL_W) || 115 bundle.getFacetName().equals(FacetTypes.DISCHARGE_LONGITUDINAL_W) ||
116 aaf.getFacetName().equals(FacetTypes.STATIC_WQKMS_W)) { 116 bundle.getFacetName().equals(FacetTypes.STATIC_WQKMS_W)) {
117 /* Only use W values to check if the diagram should be inverted 117 /* Only use W values to check if the diagram should be inverted
118 * see flys/issue1290 for details */ 118 * see flys/issue1290 for details */
119 invertAxis(generator, wkms); 119 invertAxis(generator, wkms);
120 } 120 }
121 } 121 }
169 } 169 }
170 logger.debug("inv: " + inv); 170 logger.debug("inv: " + inv);
171 } 171 }
172 generator.setInverted(inv); 172 generator.setInverted(inv);
173 } 173 }
174 public void invertAxis(DiagramGenerator generator, WKms wkms) {
175 boolean wsUp = wkms.guessWaterIncreasing();
176 boolean kmUp = DataUtil.guessWaterIncreasing(wkms.allKms());
177 int size = wkms.size();
178 boolean inv = ((wsUp && kmUp) || (!wsUp && !kmUp)) && size > 1;
179
180 if (logger.isDebugEnabled()) {
181 logger.debug("(Wkms)Values : " + size);
182 if (size > 0) {
183 logger.debug("Start km: " + wkms.getKm(0));
184 logger.debug("End km: " + wkms.getKm(size-1));
185 }
186 logger.debug("wsUp: " + wsUp);
187 logger.debug("kmUp: " + kmUp);
188 if (size == 1) {
189 logger.debug("InvertAxis not inverting because we have just one km");
190 }
191 logger.debug("inv: " + inv);
192 }
193 generator.setInverted(inv);
194 }
195 } 174 }
196 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 175 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org