comparison gnv-artifacts/src/main/java/de/intevation/gnv/chart/VerticalProfileChartFactory.java @ 232:3d6d89bcbf42

Added special Data-Selection to the ODV-Exports of TimeSeries on TimeSeriesPoints. issue68 gnv-artifacts/trunk@300 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Mon, 09 Nov 2009 08:55:01 +0000
parents 34f233123a6f
children e964a3d8f7bc
comparison
equal deleted inserted replaced
231:74255064a4c5 232:3d6d89bcbf42
210 } 210 }
211 211
212 protected XYSeries createXYSeries(String seriesName, 212 protected XYSeries createXYSeries(String seriesName,
213 Collection<Result> resultSet, 213 Collection<Result> resultSet,
214 int lUpperCut, int lLowerCut, int pStart, 214 int lUpperCut, int lLowerCut, int pStart,
215 int pEnd) throws TechnicalChartException { 215 int pEnd, double maxGap) throws TechnicalChartException {
216 if (sDebug) 216 if (sDebug)
217 sLogger.debug("createXYSeries()"); 217 sLogger.debug("createXYSeries()");
218 XYSeries series = new XYSeries(seriesName); 218 XYSeries series = new XYSeries(seriesName);
219 try { 219 try {
220 double xValue = 0; 220 double xValue = 0;
260 String break1, break2, break3; 260 String break1, break2, break3;
261 int mStart = 0; 261 int mStart = 0;
262 int mEnd = 0; 262 int mEnd = 0;
263 263
264 Iterator<Result> resultIterator = resultSet.iterator(); 264 Iterator<Result> resultIterator = resultSet.iterator();
265 Result firstRow = null, lastRow = null;
266
267 double maxGap;
265 if (resultIterator.hasNext()) { 268 if (resultIterator.hasNext()) {
266 // Row row = new Row(sArrayStrLine); 269 // Row row = new Row(sArrayStrLine);
267 Result row = resultIterator.next(); 270 Result row = resultIterator.next();
268 271
272 firstRow = row;
273 lastRow = row;
274
269 break1 = row.getString("GROUP1"); // 2 275 break1 = row.getString("GROUP1"); // 2
270 break2 = row.getString("GROUP2"); // 3 276 break2 = row.getString("GROUP2"); // 3
271 break3 = row.getString("GROUP3"); // 4 277 break3 = row.getString("GROUP3"); // 4
272 int i = 1; 278 int i = 1;
273 while (resultIterator.hasNext()) { 279 while (resultIterator.hasNext()) {
274 row = resultIterator.next(); 280 row = resultIterator.next();
281
275 if (!break1.equals(row.getString("GROUP1")) 282 if (!break1.equals(row.getString("GROUP1"))
276 || !break2.equals(row.getString("GROUP2")) 283 || !break2.equals(row.getString("GROUP2"))
277 || !break3.equals(row.getString("GROUP3"))) { 284 || !break3.equals(row.getString("GROUP3"))) {
278 String seriesName = this.createSeriesName(parameters, measurements, dates, break1, break2, break3); 285 String seriesName = this.createSeriesName(parameters, measurements, dates, break1, break2, break3);
279 sLogger.debug("Neuer Datensatz " + seriesName 286 sLogger.debug("Neuer Datensatz " + seriesName
280 + "von Datensätzen " + mStart + " / " 287 + "von Datensätzen " + mStart + " / "
281 + mEnd); 288 + mEnd);
289
290 maxGap = this.calculateMaxGap(firstRow, lastRow, mEnd-mStart);
291
282 xyDataset.addSeries(createXYSeries(seriesName, 292 xyDataset.addSeries(createXYSeries(seriesName,
283 resultSet, lUpperCut, lLowerCut, mStart, mEnd)); 293 resultSet, lUpperCut, lLowerCut, mStart, mEnd,maxGap));
294 firstRow = row;
284 mStart = i; 295 mStart = i;
285 296
286 break1 = row.getString("GROUP1"); 297 break1 = row.getString("GROUP1");
287 break2 = row.getString("GROUP2"); // 3 298 break2 = row.getString("GROUP2"); // 3
288 break3 = row.getString("GROUP3"); // 4 299 break3 = row.getString("GROUP3"); // 4
289 300
290 } 301 }
302 lastRow = row;
291 mEnd = i; 303 mEnd = i;
292 // mEnd ++; 304 // mEnd ++;
293 i = i + 1; 305 i = i + 1;
294 } 306 }
295 307
296 String seriesName = this.createSeriesName(parameters, measurements, dates, break1, break2, break3); 308 String seriesName = this.createSeriesName(parameters, measurements, dates, break1, break2, break3);
297 sLogger.debug("Neuer Datensatz " + seriesName 309 sLogger.debug("Neuer Datensatz " + seriesName
298 + "von Datensätzen " + mStart + " / " + mEnd); 310 + "von Datensätzen " + mStart + " / " + mEnd);
311
312 maxGap = this.calculateMaxGap(firstRow, lastRow, mEnd-mStart);
299 xyDataset.addSeries(createXYSeries(seriesName, resultSet, 313 xyDataset.addSeries(createXYSeries(seriesName, resultSet,
300 lUpperCut, lLowerCut, mStart, mEnd)); 314 lUpperCut, lLowerCut, mStart, mEnd,maxGap));
301 }else{ 315 }else{
302 xyDataset.addSeries(createXYSeries("", 316 xyDataset.addSeries(createXYSeries("",
303 resultSet, lUpperCut, lLowerCut, mStart, mEnd)); 317 resultSet, lUpperCut, lLowerCut, mStart, mEnd,9999));
304 } 318 }
305 } catch (Exception e) { 319 } catch (Exception e) {
306 sLogger.error(e.getMessage(), e); 320 sLogger.error(e.getMessage(), e);
307 } finally { 321 } finally {
308 } 322 }
309 return xyDataset; 323 return xyDataset;
324 }
325
326
327 protected double calculateMaxGap(Result firstRow, Result lastRow, int numResults){
328
329 double firstValue = firstRow.getDouble("YORDINATE");
330 // TODO Implement me. Hier ist die zentrale Frage wie wir zwischen Netzen und
331 // anderen Datenquellen unterscheiden.
332 return 0;
310 } 333 }
311 334
312 /** 335 /**
313 * @param parameters 336 * @param parameters
314 * @param measurements 337 * @param measurements

http://dive4elements.wald.intevation.org