Mercurial > dive4elements > river
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 : |