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 :

http://dive4elements.wald.intevation.org