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 :

http://dive4elements.wald.intevation.org