comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/DischargeTablesOverview.java @ 5360:02f6741f80d4

DischargeTablesOverview: Show main values from gauge in dischargetablesoverview.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Thu, 21 Mar 2013 10:49:38 +0100
parents f987d25627aa
children 2fe120e1e4df
comparison
equal deleted inserted replaced
5359:a16852a55206 5360:02f6741f80d4
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)

http://dive4elements.wald.intevation.org