Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/DischargeTablesOverview.java @ 5362:6d80318e8858
merge
author | Bettina Gruenbauer <bettina@intevation.de> |
---|---|
date | Thu, 21 Mar 2013 16:29:54 +0100 |
parents | 02f6741f80d4 |
children | 2fe120e1e4df |
comparison
equal
deleted
inserted
replaced
5361:836643cc101d | 5362:6d80318e8858 |
---|---|
6 import java.util.ArrayList; | 6 import java.util.ArrayList; |
7 import java.util.Collections; | 7 import java.util.Collections; |
8 import java.util.Date; | 8 import java.util.Date; |
9 import java.util.List; | 9 import java.util.List; |
10 import java.util.Locale; | 10 import java.util.Locale; |
11 import java.util.Map; | |
12 | 11 |
13 import org.apache.log4j.Logger; | 12 import org.apache.log4j.Logger; |
14 import org.hibernate.Session; | 13 import org.hibernate.Session; |
15 import org.jfree.chart.ChartFactory; | 14 import org.jfree.chart.ChartFactory; |
16 import org.jfree.chart.JFreeChart; | 15 import org.jfree.chart.JFreeChart; |
24 import org.w3c.dom.NodeList; | 23 import org.w3c.dom.NodeList; |
25 | 24 |
26 import de.intevation.artifacts.CallMeta; | 25 import de.intevation.artifacts.CallMeta; |
27 import de.intevation.artifacts.GlobalContext; | 26 import de.intevation.artifacts.GlobalContext; |
28 import de.intevation.flys.artifacts.model.DischargeTables; | 27 import de.intevation.flys.artifacts.model.DischargeTables; |
29 import de.intevation.flys.artifacts.model.GaugeFinder; | |
30 import de.intevation.flys.artifacts.model.GaugeFinderFactory; | |
31 import de.intevation.flys.artifacts.model.GaugeRange; | 28 import de.intevation.flys.artifacts.model.GaugeRange; |
32 import de.intevation.flys.artifacts.model.GaugesFactory; | 29 import de.intevation.flys.artifacts.model.GaugesFactory; |
33 import de.intevation.flys.artifacts.resources.Resources; | 30 import de.intevation.flys.artifacts.resources.Resources; |
34 import de.intevation.flys.backend.SessionHolder; | 31 import de.intevation.flys.backend.SessionHolder; |
35 import de.intevation.flys.model.DischargeTable; | 32 import de.intevation.flys.model.DischargeTable; |
36 import de.intevation.flys.model.Gauge; | 33 import de.intevation.flys.model.Gauge; |
34 import de.intevation.flys.model.MainValue; | |
37 import de.intevation.flys.model.TimeInterval; | 35 import de.intevation.flys.model.TimeInterval; |
38 | 36 |
39 | 37 |
40 /** Generate Discharge Table chart. */ | 38 /** Generate Discharge Table chart. */ |
41 public class DischargeTablesOverview extends AbstractChartService { | 39 public class DischargeTablesOverview extends AbstractChartService { |
129 plot.setDomainGridlinesVisible(true); | 127 plot.setDomainGridlinesVisible(true); |
130 plot.setRangeGridlinesVisible(true); | 128 plot.setRangeGridlinesVisible(true); |
131 | 129 |
132 applyMainValueMarkers( | 130 applyMainValueMarkers( |
133 plot, | 131 plot, |
134 gauge.getRiver().getName(), | 132 gauge, |
135 gauge.getStation().doubleValue(), | |
136 callMeta); | 133 callMeta); |
137 | 134 |
138 return chart; | 135 return chart; |
139 } | 136 } |
140 | 137 |
159 | 156 |
160 return series; | 157 return series; |
161 } | 158 } |
162 | 159 |
163 | 160 |
164 /** Add domain markers to plot that indicate (only some Q) mainvalues. */ | 161 /** Add domain markers to plot that indicate mainvalues. */ |
165 protected static void applyMainValueMarkers( | 162 protected static void applyMainValueMarkers( |
166 XYPlot plot, | 163 XYPlot plot, |
167 String river, | 164 Gauge gauge, |
168 double km, | |
169 CallMeta meta | 165 CallMeta meta |
170 ) { | 166 ) { |
171 GaugeFinderFactory ggf = GaugeFinderFactory.getInstance(); | 167 String river = gauge.getRiver().getName(); |
172 GaugeFinder gf = ggf.getGaugeFinder(river); | 168 double km = gauge.getStation().doubleValue(); |
173 | 169 |
174 if (gf == null) { | 170 // Get Gauge s mainvalues. |
175 log.warn("No gauge finder found for river '" + river + "'"); | 171 List<MainValue> mainValues = gauge.getMainValues(); |
176 return; | 172 for (MainValue mainValue : mainValues) { |
177 } | 173 if (mainValue.getMainValue().getType().getName().equals("Q")) { |
178 | 174 // Its a Q main value. |
179 GaugeRange gr = gf.find(km); | 175 Marker m = FixingsKMChartService.createQSectorMarker( |
180 if (gr == null) { | 176 mainValue.getValue().doubleValue(), |
181 log.debug("No gauge range found for km " | 177 mainValue.getMainValue().getName()); |
182 + km + " on river " + river + "."); | |
183 return; | |
184 } | |
185 | |
186 if (log.isDebugEnabled()) { | |
187 log.debug(gr); | |
188 } | |
189 | |
190 for (Map.Entry<String, Double> entry: gr.getMainValues().entrySet()) { | |
191 Marker m = FixingsKMChartService.createQSectorMarker( | |
192 entry.getValue(), | |
193 entry.getKey()); | |
194 | |
195 if (m != null) { | |
196 plot.addDomainMarker(m); | 178 plot.addDomainMarker(m); |
179 } | |
180 else if (mainValue.getMainValue().getType().getName().equals("W")) { | |
181 // Its a W main value. | |
182 Marker m = FixingsKMChartService.createQSectorMarker( | |
183 mainValue.getValue().doubleValue(), | |
184 mainValue.getMainValue().getName()); | |
185 plot.addRangeMarker(m); | |
197 } | 186 } |
198 } | 187 } |
199 } | 188 } |
200 | 189 |
201 protected String createSeriesTitle(CallMeta callMeta, DischargeTable dt) | 190 protected String createSeriesTitle(CallMeta callMeta, DischargeTable dt) |