annotate artifacts/src/main/java/org/dive4elements/river/exports/DischargeGenerator.java @ 8324:d6c03537970e

Removed obsolete imports.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Sep 2014 11:00:31 +0200
parents c44775cd79f2
children e87a993c6611
rev   line source
8165
cfb3a4d0c637 Added new diagramm generator for Q symmetry.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2014 by Bundesanstalt für Gewässerkunde
cfb3a4d0c637 Added new diagramm generator for Q symmetry.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
cfb3a4d0c637 Added new diagramm generator for Q symmetry.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
3 *
cfb3a4d0c637 Added new diagramm generator for Q symmetry.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
cfb3a4d0c637 Added new diagramm generator for Q symmetry.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
cfb3a4d0c637 Added new diagramm generator for Q symmetry.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
cfb3a4d0c637 Added new diagramm generator for Q symmetry.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
7 */
cfb3a4d0c637 Added new diagramm generator for Q symmetry.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
8 package org.dive4elements.river.exports;
cfb3a4d0c637 Added new diagramm generator for Q symmetry.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
9
8320
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
10 import java.awt.Font;
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
11
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
12 import org.apache.log4j.Logger;
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
13 import org.dive4elements.river.exports.injector.InjectorConstants;
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
14 import org.dive4elements.river.jfree.AxisDataset;
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
15 import org.jfree.chart.axis.NumberAxis;
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
16 import org.jfree.chart.plot.XYPlot;
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
17 import org.jfree.data.Range;
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
18
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
19 public class DischargeGenerator
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
20 extends DiagramGenerator
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
21 implements InjectorConstants
8165
cfb3a4d0c637 Added new diagramm generator for Q symmetry.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
22 {
8323
c44775cd79f2 Use right logger in DischargeGenerator.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8320
diff changeset
23 private static Logger log = Logger.getLogger(DischargeGenerator.class);
8320
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
24
8165
cfb3a4d0c637 Added new diagramm generator for Q symmetry.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
25 public DischargeGenerator() {
cfb3a4d0c637 Added new diagramm generator for Q symmetry.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
26 }
8320
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
27
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
28 @Override
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
29 public void addDatasets(XYPlot plot) {
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
30 super.addDatasets(plot);
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
31
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
32 Object pnp = context.getContextValue(PNP);
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
33 if (!(pnp instanceof Number)) {
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
34 return;
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
35 }
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
36
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
37 double pnpValue = ((Number)pnp).doubleValue();
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
38
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
39 int wAxisIndex = diagramAttributes.getAxisIndex("W");
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
40 if (wAxisIndex == -1) {
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
41 log.warn("No W axis found.");
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
42 return;
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
43 }
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
44
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
45 AxisDataset data = datasets.get(wAxisIndex);
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
46 if (data == null) {
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
47 // No W axis
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
48 return;
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
49 }
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
50
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
51 Range range = inCm(data.getRange(), pnpValue);
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
52
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
53 // Do we have an index for W in cm?
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
54 NumberAxis wInCmAxis = createWinCMAxis(wAxisIndex);
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
55 wInCmAxis.setRange(range.getLowerBound(), range.getUpperBound());
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
56
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
57 plot.setRangeAxis(plot.getRangeAxisCount(), wInCmAxis);
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
58 }
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
59
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
60 private static Range inCm(Range r, double pnpValue) {
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
61 double l = r.getLowerBound();
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
62 double u = r.getUpperBound();
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
63 l = (l - pnpValue)*100d;
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
64 u = (u - pnpValue)*100d;
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
65 return new Range(l, u);
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
66 }
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
67
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
68 private NumberAxis createWinCMAxis(int wAxisIndex) {
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
69
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
70 Font labelFont = new Font(
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
71 DEFAULT_FONT_NAME,
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
72 Font.BOLD,
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
73 getYAxisFontSize(wAxisIndex));
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
74
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
75 String axisName = "W.in.cm";
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
76
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
77 // TODO: I18N
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
78 IdentifiableNumberAxis axis = new IdentifiableNumberAxis(
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
79 axisName, "W.in.cm");
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
80
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
81 axis.setAutoRangeIncludesZero(false);
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
82 axis.setLabelFont(labelFont);
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
83 axis.setTickLabelFont(labelFont);
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
84
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
85 return axis;
b1303070c050 Generate a W in CM axis if there are W data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8165
diff changeset
86 }
8165
cfb3a4d0c637 Added new diagramm generator for Q symmetry.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
87 }
cfb3a4d0c637 Added new diagramm generator for Q symmetry.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
88 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org