Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/exports/minfo/BedDifferenceYearGenerator.java @ 3898:95d699c769fb
Bedheight difference calculation has chart outpus now.
flys-artifacts/trunk@5562 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Fri, 21 Sep 2012 14:29:32 +0000 |
parents | |
children | da48e33f4241 |
comparison
equal
deleted
inserted
replaced
3897:bce2dd4310a6 | 3898:95d699c769fb |
---|---|
1 package de.intevation.flys.exports.minfo; | |
2 | |
3 import org.apache.log4j.Logger; | |
4 import org.jfree.data.xy.XYSeries; | |
5 import org.w3c.dom.Document; | |
6 | |
7 import de.intevation.artifactdatabase.state.ArtifactAndFacet; | |
8 import de.intevation.artifactdatabase.state.Facet; | |
9 import de.intevation.flys.artifacts.model.FacetTypes; | |
10 import de.intevation.flys.artifacts.model.minfo.BedDiffYearResult; | |
11 import de.intevation.flys.exports.StyledSeriesBuilder; | |
12 import de.intevation.flys.exports.XYChartGenerator; | |
13 import de.intevation.flys.jfree.FLYSAnnotation; | |
14 import de.intevation.flys.jfree.StyledXYSeries; | |
15 | |
16 | |
17 public class BedDifferenceYearGenerator | |
18 extends XYChartGenerator | |
19 implements FacetTypes | |
20 { | |
21 public enum YAXIS { | |
22 D(0), M(1), H(2); | |
23 | |
24 protected int idx; | |
25 | |
26 private YAXIS(int c) { | |
27 idx = c; | |
28 } | |
29 } | |
30 | |
31 /** The logger that is used in this generator. */ | |
32 private static Logger logger = Logger.getLogger(BedDifferenceYearGenerator.class); | |
33 | |
34 public static final String I18N_CHART_TITLE = "chart.beddifference.year.title"; | |
35 public static final String I18N_XAXIS_LABEL = "chart.beddifference.xaxis.label"; | |
36 public static final String I18N_YAXIS_LABEL = "chart.beddifference.yaxis.label.diff"; | |
37 public static final String I18N_SECOND_YAXIS_LABEL = "chart.beddifference.yaxis.label.morph"; | |
38 public static final String I18N_THIRD_YAXIS_LABEL = "chart.beddifference.yaxis.label.heights"; | |
39 | |
40 public static final String I18N_CHART_TITLE_DEFAULT = "Sohlenhöhen Differenz"; | |
41 public static final String I18N_XAXIS_LABEL_DEFAULT = "Fluss-Km"; | |
42 public static final String I18N_YAXIS_LABEL_DEFAULT = "delta S [m]"; | |
43 public static final String I18N_SECOND_YAXIS_LABEL_DEFAULT = "Morph. Breite [m]"; | |
44 public static final String I18N_THIRD_YAXIS_LABEL_DEFAULT = "Höhe [m]"; | |
45 | |
46 @Override | |
47 protected YAxisWalker getYAxisWalker() { | |
48 return new YAxisWalker() { | |
49 | |
50 @Override | |
51 public int length() { | |
52 return YAXIS.values().length; | |
53 } | |
54 | |
55 @Override | |
56 public String getId(int idx) { | |
57 YAXIS[] yaxes = YAXIS.values(); | |
58 return yaxes[idx].toString(); | |
59 } | |
60 }; | |
61 } | |
62 | |
63 @Override | |
64 public void doOut(ArtifactAndFacet bundle, Document attr, boolean visible) { | |
65 String name = bundle.getFacetName(); | |
66 | |
67 logger.debug("doOut: " + name); | |
68 | |
69 if (name == null) { | |
70 logger.error("No facet name for doOut(). No output generated!"); | |
71 return; | |
72 } | |
73 | |
74 Facet facet = bundle.getFacet(); | |
75 | |
76 if (facet == null) { | |
77 return; | |
78 } | |
79 | |
80 if (name.equals(BED_DIFFERENCE_YEAR)) { | |
81 doBedDifferenceYearOut( | |
82 (BedDiffYearResult) bundle.getData(context), | |
83 bundle, attr, visible); | |
84 } | |
85 else if (name.equals(BED_DIFFERENCE_MORPH_WIDTH)) { | |
86 doBedDifferenceMorphWidthOut( | |
87 (BedDiffYearResult) bundle.getData(context), | |
88 bundle, attr, visible); | |
89 } | |
90 else if (name.equals(BED_DIFFERENCE_YEAR_HEIGHT1)) { | |
91 doBedDifferenceHeightsOut( | |
92 (BedDiffYearResult)bundle.getData(context), | |
93 bundle, attr, visible, 0); | |
94 } | |
95 else if (name.equals(BED_DIFFERENCE_YEAR_HEIGHT2)) { | |
96 doBedDifferenceHeightsOut( | |
97 (BedDiffYearResult)bundle.getData(context), | |
98 bundle, attr, visible, 1); | |
99 } | |
100 else if (name.equals(LONGITUDINAL_ANNOTATION)) { | |
101 doAnnotations( | |
102 (FLYSAnnotation) bundle.getData(context), | |
103 bundle, | |
104 attr, | |
105 visible); | |
106 } | |
107 } | |
108 | |
109 private void doBedDifferenceHeightsOut( | |
110 BedDiffYearResult data, | |
111 ArtifactAndFacet bundle, | |
112 Document attr, | |
113 boolean visible, | |
114 int idx) { | |
115 logger.debug("doBedDifferenceYearOut()"); | |
116 | |
117 XYSeries series = new StyledXYSeries(bundle.getFacetDescription(), attr); | |
118 if (idx == 0) { | |
119 StyledSeriesBuilder.addPoints(series, data.getHeights1Data(), true); | |
120 } | |
121 else { | |
122 StyledSeriesBuilder.addPoints(series, data.getHeights2Data(), true); | |
123 } | |
124 | |
125 addAxisSeries(series, YAXIS.H.idx, visible); | |
126 } | |
127 | |
128 @Override | |
129 protected String getDefaultChartTitle() { | |
130 return msg(I18N_CHART_TITLE, I18N_CHART_TITLE_DEFAULT); | |
131 } | |
132 | |
133 @Override | |
134 protected String getDefaultXAxisLabel() { | |
135 return msg(I18N_XAXIS_LABEL, I18N_XAXIS_LABEL_DEFAULT); | |
136 } | |
137 | |
138 @Override | |
139 protected String getDefaultYAxisLabel(int pos) { | |
140 String label = "default"; | |
141 if (pos == YAXIS.D.idx) { | |
142 label = msg(I18N_YAXIS_LABEL, I18N_YAXIS_LABEL_DEFAULT); | |
143 } | |
144 else if (pos == YAXIS.M.idx) { | |
145 label = msg(I18N_SECOND_YAXIS_LABEL, I18N_SECOND_YAXIS_LABEL_DEFAULT); | |
146 } | |
147 else if (pos == YAXIS.H.idx) { | |
148 label = msg(I18N_THIRD_YAXIS_LABEL, I18N_THIRD_YAXIS_LABEL_DEFAULT); | |
149 } | |
150 | |
151 return label; | |
152 } | |
153 | |
154 protected void doBedDifferenceYearOut(BedDiffYearResult data, | |
155 ArtifactAndFacet aandf, Document theme, boolean visible) { | |
156 logger.debug("doBedDifferenceYearOut()"); | |
157 | |
158 XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); | |
159 StyledSeriesBuilder.addPoints(series, data.getDifferencesData(), true); | |
160 | |
161 addAxisSeries(series, YAXIS.D.idx, visible); | |
162 } | |
163 | |
164 protected void doBedDifferenceMorphWidthOut(BedDiffYearResult data, | |
165 ArtifactAndFacet aandf, Document theme, boolean visible) { | |
166 logger.debug("doBedDifferencesMorphWidthOut()"); | |
167 | |
168 XYSeries series = new StyledXYSeries(aandf.getFacetDescription(), theme); | |
169 StyledSeriesBuilder.addPoints(series, data.getMorphWidthData(), true); | |
170 | |
171 addAxisSeries(series, YAXIS.M.idx, visible); | |
172 } | |
173 } |