annotate artifacts/src/main/java/org/dive4elements/river/exports/process/ComputedDischargeProcessor.java @ 8421:0fa963038c61

Only draw discharge curve if on same station as navigation.
author Sascha L. Teichmann <teichmann@intevation.de>
date Fri, 17 Oct 2014 13:17:12 +0200
parents 9f9857f6c464
children
rev   line source
8182
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
1 package org.dive4elements.river.exports.process;
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
2
8354
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
3 import java.util.Map;
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
4
8182
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
5 import org.apache.log4j.Logger;
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
6 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
7 import org.dive4elements.artifacts.CallContext;
8354
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
8 import org.dive4elements.artifacts.CallMeta;
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
9 import org.dive4elements.river.artifacts.D4EArtifact;
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
10 import org.dive4elements.river.artifacts.access.RiverAccess;
8182
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
11 import org.dive4elements.river.artifacts.model.FacetTypes;
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
12 import org.dive4elements.river.artifacts.model.WQKms;
8354
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
13 import org.dive4elements.river.artifacts.resources.Resources;
8182
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
14 import org.dive4elements.river.exports.DiagramGenerator;
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
15 import org.dive4elements.river.exports.StyledSeriesBuilder;
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
16 import org.dive4elements.river.jfree.StyledXYSeries;
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
17 import org.dive4elements.river.themes.ThemeDocument;
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
18
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
19
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
20 public class ComputedDischargeProcessor
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
21 extends DefaultProcessor
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
22 implements FacetTypes
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
23 {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8182
diff changeset
24 private static Logger log =
8182
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
25 Logger.getLogger(ComputedDischargeProcessor.class);
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
26
8354
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
27 private String yAxisLabel = "";
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
28
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
29 private String I18N_AXIS_LABEL = "chart.discharge.curve.yaxis.label";
8182
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
30
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
31 @Override
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
32 public void doOut(
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
33 DiagramGenerator generator,
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
34 ArtifactAndFacet bundle,
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
35 ThemeDocument theme,
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
36 boolean visible
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
37 ) {
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
38 CallContext context = generator.getCallContext();
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
39 Object data = bundle.getData(context);
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
40 if (data instanceof WQKms) {
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
41 doDischargeOut(generator, bundle, theme, visible);
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
42 }
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
43 }
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
44
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
45 @Override
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
46 public String getAxisLabel(DiagramGenerator generator) {
8354
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
47 CallMeta meta = generator.getCallContext().getMeta();
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
48 RiverAccess access = new RiverAccess((D4EArtifact)generator.getMaster());
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
49 String unit = access.getRiver().getWstUnit().getName();
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
50 if (yAxisLabel != null && !yAxisLabel.isEmpty()) {
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
51 return Resources.getMsg(
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
52 meta,
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
53 yAxisLabel,
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
54 new Object[] { unit });
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
55 }
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
56 return Resources.getMsg(
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
57 meta,
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
58 I18N_AXIS_LABEL,
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
59 new Object[] { unit });
8182
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
60 }
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
61
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
62 /**
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
63 * Returns true if the Processor class is able to generate output for a facet type
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
64 *
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
65 * @param facettype Name of the facet type
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
66 * @return true if the facettype can be processed
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
67 */
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
68 @Override
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
69 public boolean canHandle(String facettype) {
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
70 return COMPUTED_DISCHARGE_Q.equals(facettype);
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
71 }
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
72
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
73 private void doDischargeOut(
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
74 DiagramGenerator generator,
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
75 ArtifactAndFacet bundle,
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
76 ThemeDocument theme,
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
77 boolean visible
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
78 ) {
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
79 CallContext context = generator.getCallContext();
8421
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8354
diff changeset
80
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8354
diff changeset
81 Object data = bundle.getData(context);
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8354
diff changeset
82 WQKms wqkms = (WQKms) data;
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8354
diff changeset
83
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8354
diff changeset
84 Object currentKm = context.getContextValue("currentkm");
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8354
diff changeset
85 if (currentKm instanceof Number) {
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8354
diff changeset
86 double ckm = ((Number)currentKm).doubleValue();
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8354
diff changeset
87 Double skm = wqkms.sameKm();
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8354
diff changeset
88 if (skm != null && Math.abs(skm-ckm) > 0.00001) {
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8354
diff changeset
89 return;
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8354
diff changeset
90 }
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8354
diff changeset
91 }
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8354
diff changeset
92
8354
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
93 Map<String, String> metaData = bundle.getFacet().getMetaData(
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
94 bundle.getArtifact(), context);
8421
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8354
diff changeset
95
8354
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
96 StyledXYSeries series =
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
97 new StyledXYSeries(bundle.getFacetDescription(), theme);
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
98
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
99 series.putMetaData(metaData, bundle.getArtifact(), context);
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
100 yAxisLabel = metaData.get("Y");
9f9857f6c464 Added y axis label to discharge processors.
Raimund Renkert <rrenkert@intevation.de>
parents: 8202
diff changeset
101
8421
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8354
diff changeset
102
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8354
diff changeset
103
8182
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
104 double[][] wqData = new double[2][wqkms.size()];
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
105 for (int i = 0; i < wqkms.size(); i++) {
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
106 wqData[0][i] = wqkms.getQ(i);
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
107 wqData[1][i] = wqkms.getW(i);
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
108 }
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
109 StyledSeriesBuilder.addPoints(series, wqData, false);
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
110 generator.addAxisSeries(series, axisName, visible);
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
111 }
0b4cd7a5f079 Changed discharge processor to plot only discharge curves and added processor for computed discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
112 }

http://dive4elements.wald.intevation.org