Mercurial > dive4elements > gnv-client
annotate gnv-artifacts/src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java @ 851:4bcf7bf4bfb7
Presentation of values in the statistic is now language specific (issue228).
gnv-artifacts/trunk@967 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 21 Apr 2010 13:38:26 +0000 |
parents | 05bf8534a35a |
children | dfd02f8d3602 |
rev | line source |
---|---|
836
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
1 /** |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
2 * Title: TimeseriesStatistics, $Header: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/statistics/TimeseriesStatistics.java,v 1.3 2008/08/18 14:50:33 drewnak Exp $ |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
3 * Source: $Source: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/statistics/TimeseriesStatistics.java,v $ |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
4 * created by: Stefan Blume (blume) |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
5 * erstellt am: 06.12.2007 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
6 * Copyright: con terra GmbH, 2005 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
7 * |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
8 * modified by: $Author: drewnak $ |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
9 * modified on: $Date: 2008/08/18 14:50:33 $ |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
10 * Version: $Revision: 1.3 $ |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
11 * TAG: $Name: $ |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
12 * locked from: $Locker: $ |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
13 * CVS State: $State: Exp $ |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
14 * Project: $ProjectName$ |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
15 */ |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
16 package de.intevation.gnv.statistics; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
17 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
18 import de.intevation.gnv.geobackend.base.Result; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
19 import de.intevation.gnv.geobackend.base.ResultDescriptor; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
20 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
21 import de.intevation.gnv.state.describedata.KeyValueDescibeData; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
22 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
23 import de.intevation.gnv.statistics.exception.StatisticsException; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
24 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
25 import java.sql.SQLException; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
26 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
27 import java.util.ArrayList; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
28 import java.util.Collection; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
29 import java.util.Iterator; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
30 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
31 import org.apache.commons.math.stat.descriptive.DescriptiveStatistics; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
32 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
33 import org.apache.commons.math.stat.regression.SimpleRegression; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
34 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
35 import org.apache.log4j.Logger; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
36 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
37 /** |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
38 * This class is used to create a statistic in timeseries products. |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
39 * |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
40 * @author blume |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
41 */ |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
42 public class TimeseriesStatistics |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
43 extends AbstractStatistics |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
44 { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
45 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
46 /** |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
47 * Default Logging instance |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
48 */ |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
49 private static Logger log = Logger.getLogger(TimeseriesStatistics.class); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
50 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
51 /** |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
52 * Constructor |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
53 */ |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
54 public TimeseriesStatistics() { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
55 } |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
56 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
57 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
58 public Collection<StatisticSet> calculateStatistics( |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
59 Object result, |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
60 Collection<KeyValueDescibeData> parameters, |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
61 Collection<KeyValueDescibeData> measurements, |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
62 Collection<KeyValueDescibeData> dates |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
63 ) |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
64 throws StatisticsException { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
65 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
66 if (!(result instanceof Collection)) { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
67 return new ArrayList<StatisticSet>(); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
68 } |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
69 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
70 Collection<Result> resultSet = (Collection<Result>)result; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
71 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
72 clearStatistics(); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
73 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
74 DescriptiveStatistics lStatistics = null; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
75 SimpleRegression lRegression = null; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
76 Collection<StatisticSet> statisticSets = new ArrayList<StatisticSet>(); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
77 String break1, break2, break3; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
78 int lSeries = 1; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
79 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
80 if (resultSet == null) { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
81 return statisticSets; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
82 } |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
83 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
84 int b1Idx = -1; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
85 int b2Idx = -1; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
86 int b3Idx = -1; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
87 int yIdx = -1; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
88 try { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
89 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
90 Iterator<Result> resultIterator = resultSet.iterator(); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
91 if (resultIterator.hasNext()) { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
92 Result row = resultIterator.next(); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
93 Result previousRow = row; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
94 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
95 if (b1Idx == -1) { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
96 ResultDescriptor rd = row.getResultDescriptor(); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
97 b1Idx = rd.getColumnIndex("GROUP1"); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
98 b2Idx = rd.getColumnIndex("GROUP2"); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
99 b3Idx = rd.getColumnIndex("GROUP3"); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
100 yIdx = rd.getColumnIndex("YORDINATE"); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
101 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
102 if (b1Idx == -1 || b2Idx == -1 || b3Idx == -1 || yIdx == -1) { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
103 return statisticSets; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
104 } |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
105 } |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
106 break1 = row.getString(b1Idx); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
107 break2 = row.getString(b2Idx); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
108 break3 = row.getString(b3Idx); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
109 lRegression = new SimpleRegression(); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
110 lStatistics = new DescriptiveStatistics(); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
111 while (resultIterator.hasNext()) { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
112 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
113 if (!break1.equals(row.getString(b1Idx)) |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
114 || !break2.equals(row.getString(b2Idx)) |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
115 || !break3.equals(row.getString(b3Idx)) |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
116 ) { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
117 String statisticsName = generateStatisticsName( |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
118 break1, break2, |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
119 break3, parameters, |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
120 measurements, dates); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
121 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
122 statisticSets.add( |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
123 generateStatisticsValues( |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
124 lStatistics, |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
125 lRegression, |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
126 statisticsName)); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
127 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
128 lStatistics.clear(); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
129 lRegression.clear(); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
130 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
131 clearStatistics(); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
132 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
133 Double yValue = row.getDouble(yIdx); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
134 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
135 if (yValue != null) { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
136 lStatistics.addValue(yValue); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
137 Double x = calculateXOrdinateValue(previousRow,row); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
138 lRegression.addData(x, yValue); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
139 } |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
140 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
141 break1 = row.getString(b1Idx); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
142 break2 = row.getString(b2Idx); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
143 break3 = row.getString(b3Idx); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
144 previousRow = row; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
145 row = resultIterator.next(); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
146 lSeries++; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
147 } else { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
148 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
149 Double value = row.getDouble(yIdx); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
150 if (value != null) { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
151 lStatistics.addValue(value.doubleValue()); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
152 Double x = calculateXOrdinateValue(previousRow,row); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
153 lRegression.addData(x, value.doubleValue()); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
154 } |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
155 previousRow = row; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
156 row = resultIterator.next(); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
157 } |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
158 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
159 } |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
160 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
161 Double yValue = row.getDouble(yIdx); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
162 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
163 if (yValue != null) { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
164 lStatistics.addValue(yValue); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
165 Double x = calculateXOrdinateValue(previousRow, row); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
166 lRegression.addData(x, yValue); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
167 } |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
168 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
169 String statisticsName = generateStatisticsName( |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
170 break1, break2, |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
171 break3, parameters, |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
172 measurements, dates); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
173 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
174 statisticSets.add(generateStatisticsValues( |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
175 lStatistics, |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
176 lRegression, |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
177 statisticsName)); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
178 lStatistics.clear(); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
179 lRegression.clear(); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
180 } |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
181 } catch (Exception e) { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
182 log.error(e.getMessage(), e); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
183 } |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
184 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
185 return statisticSets; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
186 } |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
187 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
188 /** |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
189 * Nothing is done here. |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
190 */ |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
191 protected void clearStatistics(){} |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
192 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
193 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
194 protected String generateStatisticsName(String break1, |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
195 String break2, |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
196 String break3, |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
197 Collection<KeyValueDescibeData> parameters, |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
198 Collection<KeyValueDescibeData> measurements, |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
199 Collection<KeyValueDescibeData> dates){ |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
200 log.debug("TimeseriesStatistics.generateStatisticsName"); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
201 return this.findValueTitle(parameters,break1)+ " "+ |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
202 this.findValueTitle(measurements,break2) + "m"; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
203 } |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
204 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
205 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
206 protected String findValueTitle(Collection<KeyValueDescibeData> values, |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
207 String id) { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
208 log.debug("TimeseriesStatistics.findValueTitle "+ id); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
209 if (values != null) { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
210 Iterator<KeyValueDescibeData> it = values.iterator(); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
211 while (it.hasNext()) { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
212 KeyValueDescibeData data = it.next(); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
213 if (id.equals(data.getKey())) { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
214 return data.getValue(); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
215 } |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
216 } |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
217 } |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
218 return ""; |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
219 } |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
220 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
221 |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
222 protected double calculateXOrdinateValue(Result previousRow, Result row) throws SQLException { |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
223 return new Double((row.getDate("XORDINATE")).getTime() / 1000 / 3600); |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
224 } |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
225 } |
05bf8534a35a
Using unix line endings only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
814
diff
changeset
|
226 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |