Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/services/DischargeTablesOverview.java @ 8566:fe7e9da6312a
(issue1797) Move close into session release and guard it.
To avoid leaking open and Held sessions we centrally close
the session in the SessionHolder on release.
This also removes some duplicated code in SedDBSessionHolder
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Tue, 24 Feb 2015 17:16:14 +0100 |
parents | 20a32dbdbb59 |
children | 321d6e50aebe |
rev | line source |
---|---|
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
2 * Software engineering by Intevation GmbH |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
3 * |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
7 */ |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
8 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5431
diff
changeset
|
9 package org.dive4elements.river.artifacts.services; |
4213
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
10 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
11 import java.awt.Color; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
12 import java.text.DateFormat; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
13 import java.text.ParseException; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
14 import java.util.ArrayList; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
15 import java.util.Collections; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
16 import java.util.Date; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
17 import java.util.List; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
18 import java.util.Locale; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
19 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
20 import org.apache.log4j.Logger; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
21 import org.hibernate.Session; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
22 import org.jfree.chart.ChartFactory; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
23 import org.jfree.chart.JFreeChart; |
5344
f987d25627aa
Show some Q mainvalues in DischargeTablesOverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5342
diff
changeset
|
24 import org.jfree.chart.plot.Marker; |
4213
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
25 import org.jfree.chart.plot.PlotOrientation; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
26 import org.jfree.chart.plot.XYPlot; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
27 import org.jfree.data.xy.XYSeries; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
28 import org.jfree.data.xy.XYSeriesCollection; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
29 import org.w3c.dom.Document; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
30 import org.w3c.dom.Element; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
31 import org.w3c.dom.NodeList; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
32 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5431
diff
changeset
|
33 import org.dive4elements.artifacts.CallMeta; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5431
diff
changeset
|
34 import org.dive4elements.artifacts.GlobalContext; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5431
diff
changeset
|
35 import org.dive4elements.river.artifacts.model.DischargeTables; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5431
diff
changeset
|
36 import org.dive4elements.river.artifacts.model.GaugesFactory; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5431
diff
changeset
|
37 import org.dive4elements.river.artifacts.resources.Resources; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5431
diff
changeset
|
38 import org.dive4elements.river.backend.SessionHolder; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5431
diff
changeset
|
39 import org.dive4elements.river.model.DischargeTable; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5431
diff
changeset
|
40 import org.dive4elements.river.model.Gauge; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5431
diff
changeset
|
41 import org.dive4elements.river.model.MainValue; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5431
diff
changeset
|
42 import org.dive4elements.river.model.TimeInterval; |
4213
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
43 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
44 |
5342
7b119fa1e29f
Doc and vim-magiv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4230
diff
changeset
|
45 /** Generate Discharge Table chart. */ |
4213
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
46 public class DischargeTablesOverview extends AbstractChartService { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
47 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
48 private static final Logger log = Logger |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
49 .getLogger(DischargeTablesOverview.class); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
50 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
51 private static final long serialVersionUID = 1L; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
52 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
53 public static final String I18N_CHART_TITLE = "gauge.discharge.service.chart.title"; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
54 public static final String DEFAULT_CHART_TITLE = "Pegel: XXX"; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
55 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
56 public static final String I18N_CHART_X_AXIS_TITLE = "gauge.discharge.service.chart.x.title"; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
57 public static final String DEFAULT_X_AXIS_TITLE = "Q [m^3/s]"; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
58 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
59 public static final String I18N_CHART_Y_AXIS_TITLE = "gauge.discharge.service.chart.y.title"; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
60 public static final String DEFAULT_Y_AXIS_TITLE = "W [cm]"; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
61 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
62 public static final String I18N_CHART_SERIES_TITLE = "gauge.discharge.service.chart.series.title"; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
63 public static final String DEFAULT_CHART_SERIES_TITLE = "Abflusskurve"; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
64 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
65 public static final String I18N_CHART_SERIES_TITLE_MASTER = "gauge.discharge.service.chart.series.title.master"; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
66 public static final String DEFAULT_CHART_SERIES_TITLE_MASTER = "Aktuelle Abflusskurve"; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
67 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
68 public static final DateFormat DATE_FORMAT = DateFormat.getDateInstance( |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
69 DateFormat.SHORT, Locale.GERMANY); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
70 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
71 private Session session; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
72 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
73 @Override |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
74 protected void init() { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
75 session = SessionHolder.acquire(); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
76 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
77 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
78 @Override |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
79 protected void finish() { |
8566
fe7e9da6312a
(issue1797) Move close into session release and guard it.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
6301
diff
changeset
|
80 SessionHolder.release(); |
4213
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
81 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
82 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
83 protected JFreeChart createChart(Document data, |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
84 GlobalContext globalContext, CallMeta callMeta) { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
85 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
86 Gauge gauge = extractGauge(data); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
87 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
88 if (gauge == null) { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
89 log.warn("Could not determine Gauge from request!"); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
90 return null; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
91 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
92 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
93 log.info("create discharge chart for gauge '" + gauge.getName() + "'"); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
94 TimeInterval timerange = extractTimeInterval(data); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
95 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
96 List<DischargeTable> dts = getDischargeTables(gauge, timerange); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
97 XYSeriesCollection dataset = new XYSeriesCollection(); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
98 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
99 for (DischargeTable dt : dts) { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
100 try { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
101 XYSeries series = createSeries(callMeta, dt); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
102 if (series != null) { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
103 dataset.addSeries(series); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
104 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
105 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
106 catch (IllegalArgumentException iae) { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
107 log.warn("unable to create discharge curve: " |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
108 + iae.getMessage()); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
109 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
110 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
111 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
112 String title = Resources.format(callMeta, I18N_CHART_TITLE, |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
113 DEFAULT_CHART_TITLE, gauge.getName()); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
114 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
115 String xAxis = Resources.getMsg(callMeta, I18N_CHART_X_AXIS_TITLE, |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
116 DEFAULT_X_AXIS_TITLE); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
117 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
118 String yAxis = Resources.format(callMeta, I18N_CHART_Y_AXIS_TITLE, |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
119 DEFAULT_Y_AXIS_TITLE); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
120 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
121 JFreeChart chart = ChartFactory.createXYLineChart(title, xAxis, yAxis, |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
122 null, PlotOrientation.VERTICAL, true, true, false); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
123 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
124 chart.setBackgroundPaint(Color.white); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
125 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
126 XYPlot plot = (XYPlot) chart.getPlot(); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
127 plot.setDataset(0, dataset); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
128 plot.setBackgroundPaint(Color.white); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
129 plot.setDomainGridlinePaint(Color.gray); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
130 plot.setRangeGridlinePaint(Color.gray); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
131 plot.setDomainGridlinesVisible(true); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
132 plot.setRangeGridlinesVisible(true); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
133 |
5344
f987d25627aa
Show some Q mainvalues in DischargeTablesOverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5342
diff
changeset
|
134 applyMainValueMarkers( |
f987d25627aa
Show some Q mainvalues in DischargeTablesOverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5342
diff
changeset
|
135 plot, |
5360
02f6741f80d4
DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5344
diff
changeset
|
136 gauge, |
5344
f987d25627aa
Show some Q mainvalues in DischargeTablesOverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5342
diff
changeset
|
137 callMeta); |
f987d25627aa
Show some Q mainvalues in DischargeTablesOverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5342
diff
changeset
|
138 |
4213
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
139 return chart; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
140 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
141 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
142 protected XYSeries createSeries(CallMeta callMeta, DischargeTable dt) |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
143 throws IllegalArgumentException { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
144 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
145 double[][] xy = null; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
146 |
6301
20a32dbdbb59
Remove discharge table scaling but add reference system to W
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
147 xy = DischargeTables.loadDischargeTableValues(dt); |
4213
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
148 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
149 XYSeries series = new XYSeries(createSeriesTitle(callMeta, dt), false); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
150 for (int i = 0, n = xy[0].length; i < n; i++) { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
151 series.add(xy[0][i], xy[1][i]); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
152 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
153 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
154 return series; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
155 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
156 |
5344
f987d25627aa
Show some Q mainvalues in DischargeTablesOverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5342
diff
changeset
|
157 |
5360
02f6741f80d4
DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5344
diff
changeset
|
158 /** Add domain markers to plot that indicate mainvalues. */ |
5344
f987d25627aa
Show some Q mainvalues in DischargeTablesOverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5342
diff
changeset
|
159 protected static void applyMainValueMarkers( |
f987d25627aa
Show some Q mainvalues in DischargeTablesOverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5342
diff
changeset
|
160 XYPlot plot, |
5360
02f6741f80d4
DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5344
diff
changeset
|
161 Gauge gauge, |
5344
f987d25627aa
Show some Q mainvalues in DischargeTablesOverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5342
diff
changeset
|
162 CallMeta meta |
f987d25627aa
Show some Q mainvalues in DischargeTablesOverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5342
diff
changeset
|
163 ) { |
5360
02f6741f80d4
DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5344
diff
changeset
|
164 String river = gauge.getRiver().getName(); |
02f6741f80d4
DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5344
diff
changeset
|
165 double km = gauge.getStation().doubleValue(); |
5344
f987d25627aa
Show some Q mainvalues in DischargeTablesOverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5342
diff
changeset
|
166 |
5360
02f6741f80d4
DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5344
diff
changeset
|
167 // Get Gauge s mainvalues. |
02f6741f80d4
DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5344
diff
changeset
|
168 List<MainValue> mainValues = gauge.getMainValues(); |
02f6741f80d4
DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5344
diff
changeset
|
169 for (MainValue mainValue : mainValues) { |
02f6741f80d4
DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5344
diff
changeset
|
170 if (mainValue.getMainValue().getType().getName().equals("Q")) { |
02f6741f80d4
DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5344
diff
changeset
|
171 // Its a Q main value. |
02f6741f80d4
DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5344
diff
changeset
|
172 Marker m = FixingsKMChartService.createQSectorMarker( |
02f6741f80d4
DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5344
diff
changeset
|
173 mainValue.getValue().doubleValue(), |
02f6741f80d4
DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5344
diff
changeset
|
174 mainValue.getMainValue().getName()); |
5344
f987d25627aa
Show some Q mainvalues in DischargeTablesOverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5342
diff
changeset
|
175 plot.addDomainMarker(m); |
f987d25627aa
Show some Q mainvalues in DischargeTablesOverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5342
diff
changeset
|
176 } |
5360
02f6741f80d4
DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5344
diff
changeset
|
177 else if (mainValue.getMainValue().getType().getName().equals("W")) { |
02f6741f80d4
DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5344
diff
changeset
|
178 // Its a W main value. |
02f6741f80d4
DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5344
diff
changeset
|
179 Marker m = FixingsKMChartService.createQSectorMarker( |
02f6741f80d4
DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5344
diff
changeset
|
180 mainValue.getValue().doubleValue(), |
02f6741f80d4
DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5344
diff
changeset
|
181 mainValue.getMainValue().getName()); |
02f6741f80d4
DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5344
diff
changeset
|
182 plot.addRangeMarker(m); |
02f6741f80d4
DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5344
diff
changeset
|
183 } |
5344
f987d25627aa
Show some Q mainvalues in DischargeTablesOverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5342
diff
changeset
|
184 } |
f987d25627aa
Show some Q mainvalues in DischargeTablesOverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5342
diff
changeset
|
185 } |
f987d25627aa
Show some Q mainvalues in DischargeTablesOverview.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5342
diff
changeset
|
186 |
4213
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
187 protected String createSeriesTitle(CallMeta callMeta, DischargeTable dt) |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
188 throws IllegalArgumentException { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
189 TimeInterval timeInterval = dt.getTimeInterval(); |
4227
8138a90a674a
Be more tolerant with empty time intervals in discharge tables while comparing discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4217
diff
changeset
|
190 |
8138a90a674a
Be more tolerant with empty time intervals in discharge tables while comparing discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4217
diff
changeset
|
191 if (timeInterval == null) { |
8138a90a674a
Be more tolerant with empty time intervals in discharge tables while comparing discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4217
diff
changeset
|
192 return Resources.format(callMeta, DEFAULT_CHART_SERIES_TITLE); |
8138a90a674a
Be more tolerant with empty time intervals in discharge tables while comparing discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4217
diff
changeset
|
193 } |
8138a90a674a
Be more tolerant with empty time intervals in discharge tables while comparing discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4217
diff
changeset
|
194 |
4213
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
195 Date start = timeInterval.getStartTime(); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
196 Date end = timeInterval.getStopTime(); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
197 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
198 if (start != null && end != null) { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
199 return Resources.format(callMeta, I18N_CHART_SERIES_TITLE, |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
200 DEFAULT_CHART_SERIES_TITLE, start, end); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
201 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
202 else if (start != null) { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
203 return Resources.format(callMeta, I18N_CHART_SERIES_TITLE_MASTER, |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
204 DEFAULT_CHART_SERIES_TITLE, start); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
205 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
206 else { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
207 throw new IllegalArgumentException( |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
208 "Missing start date of DischargeTable " + dt.getId()); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
209 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
210 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
211 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
212 protected Gauge extractGauge(Document data) { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
213 NodeList gauges = data.getElementsByTagName("gauge"); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
214 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
215 if (gauges.getLength() > 0) { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
216 String name = ((Element) gauges.item(0)).getAttribute("name"); |
4217
08b6458909a9
The service 'DischargeTablesOverview' now accepts the official number of a gauge, too.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4213
diff
changeset
|
217 |
08b6458909a9
The service 'DischargeTablesOverview' now accepts the official number of a gauge, too.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4213
diff
changeset
|
218 try { |
08b6458909a9
The service 'DischargeTablesOverview' now accepts the official number of a gauge, too.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4213
diff
changeset
|
219 long officialNumber = Long.valueOf(name); |
08b6458909a9
The service 'DischargeTablesOverview' now accepts the official number of a gauge, too.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4213
diff
changeset
|
220 return Gauge.getGaugeByOfficialNumber(officialNumber); |
08b6458909a9
The service 'DischargeTablesOverview' now accepts the official number of a gauge, too.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4213
diff
changeset
|
221 } |
08b6458909a9
The service 'DischargeTablesOverview' now accepts the official number of a gauge, too.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4213
diff
changeset
|
222 catch (NumberFormatException nfe) { |
08b6458909a9
The service 'DischargeTablesOverview' now accepts the official number of a gauge, too.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4213
diff
changeset
|
223 // it seems, that the client uses the name of the gauge instead |
08b6458909a9
The service 'DischargeTablesOverview' now accepts the official number of a gauge, too.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4213
diff
changeset
|
224 // of its official number |
08b6458909a9
The service 'DischargeTablesOverview' now accepts the official number of a gauge, too.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4213
diff
changeset
|
225 } |
08b6458909a9
The service 'DischargeTablesOverview' now accepts the official number of a gauge, too.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4213
diff
changeset
|
226 |
4213
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
227 if (name != null && name.length() > 0) { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
228 return GaugesFactory.getGauge(name); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
229 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
230 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
231 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
232 return null; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
233 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
234 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
235 protected TimeInterval extractTimeInterval(Document data) { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
236 NodeList timeranges = data.getElementsByTagName("timerange"); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
237 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
238 if (timeranges != null && timeranges.getLength() > 0) { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
239 Element timerange = (Element) timeranges.item(0); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
240 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
241 String lower = timerange.getAttribute("lower"); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
242 String upper = timerange.getAttribute("upper"); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
243 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
244 if (lower != null && upper != null) { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
245 try { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
246 Date d1 = DATE_FORMAT.parse(lower); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
247 Date d2 = DATE_FORMAT.parse(upper); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
248 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
249 return new TimeInterval(d1, d2); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
250 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
251 catch (ParseException pe) { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
252 log.warn("Wrong time format: " + pe.getMessage()); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
253 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
254 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
255 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
256 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
257 return null; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
258 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
259 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
260 protected List<DischargeTable> getDischargeTables(Gauge gauge, |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
261 TimeInterval timerange) { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
262 List<DischargeTable> all = gauge.getDischargeTables(); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
263 Collections.sort(all); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
264 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
265 if (timerange == null) { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
266 return all; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
267 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
268 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
269 List<DischargeTable> dts = new ArrayList<DischargeTable>(all.size()); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
270 long startDate = timerange.getStartTime().getTime(); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
271 long stopDate = timerange.getStopTime().getTime(); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
272 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
273 for (DischargeTable dt : all) { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
274 TimeInterval tmp = dt.getTimeInterval(); |
4230
eab85cf85b10
Ignore discharge table without time interval set while discharge tables overview chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4227
diff
changeset
|
275 if (tmp == null) { |
eab85cf85b10
Ignore discharge table without time interval set while discharge tables overview chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4227
diff
changeset
|
276 // this should never happen because all discharge tables should |
eab85cf85b10
Ignore discharge table without time interval set while discharge tables overview chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4227
diff
changeset
|
277 // have a time interval set! |
eab85cf85b10
Ignore discharge table without time interval set while discharge tables overview chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4227
diff
changeset
|
278 continue; |
eab85cf85b10
Ignore discharge table without time interval set while discharge tables overview chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4227
diff
changeset
|
279 } |
eab85cf85b10
Ignore discharge table without time interval set while discharge tables overview chart creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
4227
diff
changeset
|
280 |
4213
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
281 Date start = tmp.getStartTime(); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
282 Date stop = tmp.getStartTime(); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
283 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
284 if (start.getTime() > startDate && start.getTime() < stopDate) { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
285 dts.add(dt); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
286 continue; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
287 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
288 else if (stop != null && stop.getTime() < stopDate |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
289 && stop.getTime() > startDate) { |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
290 dts.add(dt); |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
291 continue; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
292 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
293 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
294 |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
295 return dts; |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
296 } |
0674d89210f5
Added a new service to query a diagram with discharge tables.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
297 } |
5342
7b119fa1e29f
Doc and vim-magiv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4230
diff
changeset
|
298 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |