Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/process/AreaProcessor.java @ 8366:061e85212d25
s/logger/log/ or removed unused logger.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 02 Oct 2014 11:04:14 +0200 |
parents | e4606eae8ea5 |
children | 5e38e2924c07 |
rev | line source |
---|---|
7101 | 1 /* Copyright (C) 2013 by Bundesanstalt für Gewässerkunde |
2 * Software engineering by Intevation GmbH | |
3 * | |
4 * This file is Free Software under the GNU AGPL (>=v3) | |
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the | |
6 * documentation coming with Dive4Elements River for details. | |
7 */ | |
8 | |
9 | |
10 package org.dive4elements.river.exports.process; | |
11 | |
12 import org.apache.log4j.Logger; | |
13 | |
14 | |
15 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; | |
16 import org.dive4elements.artifacts.CallContext; | |
17 | |
18 import org.dive4elements.river.artifacts.geom.Lines; | |
19 import org.dive4elements.river.artifacts.model.WKms; | |
20 import org.dive4elements.river.artifacts.model.WQKms; | |
7714
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
21 import org.dive4elements.river.artifacts.model.WQCKms; |
7101 | 22 import org.dive4elements.river.artifacts.model.AreaFacet; |
23 import org.dive4elements.river.artifacts.model.FacetTypes; | |
24 import org.dive4elements.river.exports.DiagramGenerator; | |
25 import org.dive4elements.river.exports.StyledSeriesBuilder; | |
26 import org.dive4elements.river.jfree.StyledAreaSeriesCollection; | |
27 import org.dive4elements.river.jfree.StyledXYSeries; | |
28 import org.dive4elements.river.themes.ThemeDocument; | |
29 | |
30 import org.jfree.data.xy.XYSeries; | |
31 | |
32 public class AreaProcessor extends DefaultProcessor { | |
33 | |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7714
diff
changeset
|
34 private static final Logger log = Logger.getLogger(AreaProcessor.class); |
7101 | 35 |
7714
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
36 protected XYSeries getSeries(String seriesName, Object data, String facetType, |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
37 ThemeDocument theme) { |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
38 if (data == null || facetType == null) { |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
39 return null; |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
40 } |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
41 |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
42 XYSeries series = new StyledXYSeries(seriesName, false, theme); |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
43 |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
44 if (facetType.equals(FacetTypes.DISCHARGE_LONGITUDINAL_C)) { |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
45 WQCKms wqckms = (WQCKms) data; |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
46 int size = wqckms.size(); |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
47 for (int i = 0; i < size; i++) { |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
48 series.add(wqckms.getKm(i), wqckms.getC(i), false); |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
49 } |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
50 } else if (data instanceof WQKms) { |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
51 if (FacetTypes.IS.Q(facetType)) { |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
52 StyledSeriesBuilder.addPointsKmQ(series, (WQKms) data); |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
53 } |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
54 else { |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
55 StyledSeriesBuilder.addPoints(series, (WKms) data); |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
56 } |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
57 } |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
58 else if (data instanceof double[][]) { |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
59 StyledSeriesBuilder.addPoints(series, (double [][]) data, false); |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
60 } |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
61 else if (data instanceof WKms) { |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
62 StyledSeriesBuilder.addPoints(series, (WKms) data); |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
63 } |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
64 else if (data instanceof Lines.LineData) { |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
65 StyledSeriesBuilder.addPoints(series, ((Lines.LineData) data).points, false); |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
66 } |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
67 else { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7714
diff
changeset
|
68 log.error("Do not know how to deal with (up) area info from: " |
7714
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
69 + data); |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
70 } |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
71 return series; |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
72 } |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
73 |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
74 |
7101 | 75 @Override |
76 public void doOut( | |
77 DiagramGenerator generator, | |
78 ArtifactAndFacet bundle, | |
79 ThemeDocument theme, | |
80 boolean visible) { | |
81 CallContext context = generator.getCallContext(); | |
82 String seriesName = bundle.getFacetDescription(); | |
83 StyledAreaSeriesCollection area = new StyledAreaSeriesCollection(theme); | |
84 | |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7714
diff
changeset
|
85 log.debug("Area Processor processing: " + seriesName); |
7101 | 86 |
87 AreaFacet.Data data = (AreaFacet.Data) bundle.getData(context); | |
88 | |
7714
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
89 String lowerFacetName = data.getLowerFacetName(); |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
90 String upperFacetName = data.getUpperFacetName(); |
7101 | 91 |
7714
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
92 XYSeries up = getSeries(seriesName, data.getUpperData(), upperFacetName, theme); |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
93 XYSeries down = getSeries(seriesName + " ", data.getLowerData(), lowerFacetName, theme); |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
94 |
7101 | 95 |
96 // TODO Depending on style, the area (e.g. 20m^2) should be added as annotation. | |
97 | |
98 if (up == null && down != null) { | |
99 area.setMode(StyledAreaSeriesCollection.FILL_MODE.ABOVE); | |
100 down.setKey(seriesName); | |
101 area.addSeries(down); | |
102 area.addSeries(StyledSeriesBuilder.createGroundAtInfinity(down)); | |
103 } | |
104 else if (up != null && down == null) { | |
105 area.setMode(StyledAreaSeriesCollection.FILL_MODE.UNDER); | |
106 area.addSeries(up); | |
107 area.addSeries(StyledSeriesBuilder.createGroundAtInfinity(up)); | |
108 } | |
109 else if (up != null && down != null) { | |
110 if (data.doPaintBetween()) { | |
111 area.setMode(StyledAreaSeriesCollection.FILL_MODE.BETWEEN); | |
112 } | |
113 else { | |
114 area.setMode(StyledAreaSeriesCollection.FILL_MODE.ABOVE); | |
115 } | |
116 area.addSeries(up); | |
117 area.addSeries(down); | |
118 } | |
119 | |
7714
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
120 String facetNameForAxis = lowerFacetName == null |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
121 ? upperFacetName |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
122 : lowerFacetName; |
7101 | 123 /* Decide axis name based on facet name */ |
124 generator.addAreaSeries(area, | |
7714
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
125 axisNameForFacet(facetNameForAxis), visible); |
7101 | 126 } |
127 | |
128 /** Look up the axis identifier for a given facet type. */ | |
129 private String axisNameForFacet(String facetName) { | |
7713
dfe3f78fd3e5
(issue1622) Paint W Differences on diffW Axis
Andre Heinecke <aheinecke@intevation.de>
parents:
7540
diff
changeset
|
130 if (FacetTypes.W_DIFFERENCES.equals(facetName)) { |
dfe3f78fd3e5
(issue1622) Paint W Differences on diffW Axis
Andre Heinecke <aheinecke@intevation.de>
parents:
7540
diff
changeset
|
131 return "diffW"; |
dfe3f78fd3e5
(issue1622) Paint W Differences on diffW Axis
Andre Heinecke <aheinecke@intevation.de>
parents:
7540
diff
changeset
|
132 } |
7714
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
133 if (FacetTypes.IS.W(facetName) || |
0ee6aa11649b
(issue1574) Add area handling for correction curves
Andre Heinecke <aheinecke@intevation.de>
parents:
7713
diff
changeset
|
134 FacetTypes.DISCHARGE_LONGITUDINAL_C.equals(facetName)) { |
7101 | 135 return "W"; |
136 } | |
7713
dfe3f78fd3e5
(issue1622) Paint W Differences on diffW Axis
Andre Heinecke <aheinecke@intevation.de>
parents:
7540
diff
changeset
|
137 if (FacetTypes.IS.Q(facetName)) { |
7101 | 138 return "Q"; |
139 } | |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7714
diff
changeset
|
140 log.warn("Could not find axis for facet " + facetName); |
7713
dfe3f78fd3e5
(issue1622) Paint W Differences on diffW Axis
Andre Heinecke <aheinecke@intevation.de>
parents:
7540
diff
changeset
|
141 return "W"; |
7101 | 142 } |
143 | |
144 @Override | |
145 public boolean canHandle(String facetType) { | |
146 if (facetType == null) { | |
147 return false; | |
148 } | |
149 return FacetTypes.IS.AREA(facetType); | |
150 } | |
151 } |