Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/org/dive4elements/river/exports/fixings/FixLongitudinalSectionGenerator.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/fixings/FixLongitudinalSectionGenerator.java@05a54b4d579d |
children |
comparison
equal
deleted
inserted
replaced
5830:160f53ee0870 | 5831:bd047b71ab37 |
---|---|
1 package org.dive4elements.river.exports.fixings; | |
2 | |
3 import java.awt.BasicStroke; | |
4 import java.awt.Color; | |
5 | |
6 import org.apache.log4j.Logger; | |
7 import org.jfree.chart.plot.Marker; | |
8 import org.jfree.chart.plot.ValueMarker; | |
9 import org.jfree.data.xy.XYSeries; | |
10 import org.w3c.dom.Document; | |
11 | |
12 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; | |
13 import org.dive4elements.river.artifacts.model.FacetTypes; | |
14 import org.dive4elements.river.artifacts.model.fixings.AnalysisPeriod; | |
15 import org.dive4elements.river.artifacts.model.fixings.QWD; | |
16 import org.dive4elements.river.exports.ChartGenerator; | |
17 import org.dive4elements.river.exports.process.KMIndexProcessor; | |
18 import org.dive4elements.river.exports.process.Processor; | |
19 import org.dive4elements.river.jfree.FLYSAnnotation; | |
20 import org.dive4elements.river.jfree.StyledAreaSeriesCollection; | |
21 import org.dive4elements.river.jfree.StyledXYSeries; | |
22 import org.dive4elements.river.utils.KMIndex; | |
23 | |
24 public class FixLongitudinalSectionGenerator | |
25 extends FixChartGenerator | |
26 implements FacetTypes | |
27 { | |
28 private static Logger logger = | |
29 Logger.getLogger(FixLongitudinalSectionGenerator.class); | |
30 | |
31 public static final String I18N_CHART_TITLE = | |
32 "chart.fixings.longitudinalsection.title"; | |
33 | |
34 public static final String I18N_CHART_SUBTITLE = | |
35 "chart.fixings.longitudinalsection.subtitle"; | |
36 | |
37 public static final String I18N_XAXIS_LABEL = | |
38 "chart.fixings.longitudinalsection.xaxis.label"; | |
39 | |
40 public static final String I18N_CHART_TITLE_DEFAULT = | |
41 "Fixierungsanalyse"; | |
42 | |
43 public static final String I18N_XAXIS_LABEL_DEFAULT = | |
44 "[km]"; | |
45 | |
46 public static final String I18N_DW_YAXIS_LABEL_DEFAULT = | |
47 "delta W [cm]"; | |
48 | |
49 public static final String I18N_DW_YAXIS_LABEL = | |
50 "chart.fixings.longitudinalsection.yaxis.label"; | |
51 | |
52 public static enum YAXIS { | |
53 dW(0); | |
54 public int idx; | |
55 private YAXIS(int c) { | |
56 idx = c; | |
57 } | |
58 } | |
59 | |
60 @Override | |
61 public void doOut(ArtifactAndFacet aaf, Document doc, boolean visible) { | |
62 String name = aaf.getFacetName(); | |
63 logger.debug("FixLongitudinalSectionGenerator: doOut: " + name); | |
64 | |
65 Processor processor = new KMIndexProcessor(); | |
66 if (name.contains(FIX_SECTOR_AVERAGE_LS_DEVIATION)) { | |
67 doSectorAverageDeviationOut(aaf, doc, visible); | |
68 } | |
69 else if (processor.canHandle(name)) { | |
70 processor.doOut(this, aaf, doc, visible, YAXIS.dW.idx); | |
71 } | |
72 else if (name.equals(FIX_DEVIATION_LS)) { | |
73 doReferenceDeviationOut(aaf, doc, visible); | |
74 } | |
75 else if (name.equals(LONGITUDINAL_ANNOTATION)) { | |
76 doAnnotations( | |
77 (FLYSAnnotation) aaf.getData(context), | |
78 aaf, | |
79 doc, | |
80 visible); | |
81 } | |
82 else if (FacetTypes.IS.MANUALPOINTS(name)) { | |
83 doPoints (aaf.getData(context), | |
84 aaf, | |
85 doc, visible, YAXIS.dW.idx); | |
86 } | |
87 else { | |
88 logger.warn("Unknown facet name " + name); | |
89 } | |
90 } | |
91 | |
92 @SuppressWarnings("unchecked") | |
93 protected void doSectorAverageDeviationOut( | |
94 ArtifactAndFacet aaf, | |
95 Document doc, | |
96 boolean visible) | |
97 { | |
98 logger.debug("doSectorAverageOut" + aaf.getFacet().getIndex()); | |
99 | |
100 int index = aaf.getFacet().getIndex(); | |
101 int sectorNdx = index & 3; | |
102 | |
103 KMIndex<AnalysisPeriod> kms = | |
104 (KMIndex<AnalysisPeriod>)aaf.getData(context); | |
105 | |
106 if(kms == null) { | |
107 return; | |
108 } | |
109 | |
110 StyledAreaSeriesCollection area = new StyledAreaSeriesCollection(doc); | |
111 XYSeries upper = | |
112 new StyledXYSeries(aaf.getFacetDescription(), false, doc); | |
113 XYSeries lower = | |
114 new StyledXYSeries(aaf.getFacetDescription() + " ", false, doc); | |
115 | |
116 for (KMIndex.Entry<AnalysisPeriod> entry: kms) { | |
117 double km = entry.getKm(); | |
118 AnalysisPeriod ap = entry.getValue(); | |
119 QWD qwd = ap.getQSectorAverages()[sectorNdx]; | |
120 double dev = ap.getQSectorStdDev(sectorNdx); | |
121 logger.debug("std-dev: " + dev); | |
122 if (qwd == null) { | |
123 continue; | |
124 } | |
125 double deltaW = qwd.getDeltaW(); | |
126 double up = deltaW + dev; | |
127 double lo = deltaW - dev; | |
128 upper.add(km, up); | |
129 lower.add(km, lo); | |
130 } | |
131 area.addSeries(upper); | |
132 area.addSeries(lower); | |
133 | |
134 addAreaSeries(area, 0, visible); | |
135 } | |
136 | |
137 | |
138 @SuppressWarnings("unchecked") | |
139 protected void doReferenceDeviationOut( | |
140 ArtifactAndFacet aaf, | |
141 Document doc, | |
142 boolean visible) | |
143 { | |
144 logger.debug("doReferenceOut"); | |
145 | |
146 KMIndex<double[]> kms = | |
147 (KMIndex<double[]>)aaf.getData(context); | |
148 | |
149 if(kms == null) { | |
150 return; | |
151 } | |
152 | |
153 StyledAreaSeriesCollection area = new StyledAreaSeriesCollection(doc); | |
154 XYSeries upper = | |
155 new StyledXYSeries(aaf.getFacetDescription(), false, doc); | |
156 XYSeries lower = | |
157 new StyledXYSeries(aaf.getFacetDescription() + " ", false, doc); | |
158 | |
159 | |
160 for (KMIndex.Entry<double[]> entry: kms) { | |
161 double km = entry.getKm(); | |
162 double[] devArray = entry.getValue(); | |
163 if (devArray == null) { | |
164 continue; | |
165 } | |
166 double dev = devArray[0]; | |
167 double up = dev; | |
168 double lo = -dev; | |
169 upper.add(km, up, false); | |
170 lower.add(km, lo, false); | |
171 } | |
172 area.addSeries(upper); | |
173 area.addSeries(lower); | |
174 | |
175 Marker marker = new ValueMarker(0); | |
176 marker.setStroke(new BasicStroke(2)); | |
177 marker.setPaint(Color.BLACK); | |
178 addValueMarker(marker); | |
179 addAreaSeries(area, 0, visible); | |
180 } | |
181 | |
182 @Override | |
183 protected String getDefaultChartTitle() { | |
184 return msg(I18N_CHART_TITLE, I18N_CHART_TITLE_DEFAULT); | |
185 } | |
186 | |
187 @Override | |
188 protected String getDefaultXAxisLabel() { | |
189 return msg(I18N_XAXIS_LABEL, I18N_XAXIS_LABEL_DEFAULT); | |
190 } | |
191 | |
192 @Override | |
193 protected String getDefaultYAxisLabel(int pos) { | |
194 return msg(I18N_DW_YAXIS_LABEL, I18N_DW_YAXIS_LABEL_DEFAULT); | |
195 } | |
196 | |
197 @Override | |
198 protected ChartGenerator.YAxisWalker getYAxisWalker() { | |
199 return new YAxisWalker() { | |
200 @Override | |
201 public int length() { | |
202 return YAXIS.values().length; | |
203 } | |
204 | |
205 @Override | |
206 public String getId(int idx) { | |
207 YAXIS[] yaxes = YAXIS.values(); | |
208 return yaxes[idx].toString(); | |
209 } | |
210 }; | |
211 } | |
212 } | |
213 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |