Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java @ 428:88cd37c3b5e4
Adjusted sql queries and configuration for verticalcrosssection products. Some code refactoring and improved error handling.
gnv-artifacts/trunk@476 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Tue, 22 Dec 2009 13:18:07 +0000 |
parents | 04a242c67fe6 |
children | bed9735adf84 |
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java Tue Dec 22 13:10:56 2009 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java Tue Dec 22 13:18:07 2009 +0000 @@ -25,6 +25,7 @@ import org.apache.log4j.Logger; import de.intevation.gnv.geobackend.base.Result; +import de.intevation.gnv.geobackend.base.ResultDescriptor; import de.intevation.gnv.state.describedata.KeyValueDescibeData; import de.intevation.gnv.statistics.exception.StatisticsException; @@ -71,48 +72,73 @@ Collection<StatisticSet> statisticSets = new ArrayList<StatisticSet>(); String break1, break2, break3; int lSeries = 1; + + int b1Idx = -1; + int b2Idx = -1; + int b3Idx = -1; + int yIdx = -1; try { Iterator<Result> resultIterator = resultSet.iterator(); if (resultIterator.hasNext()) { Result row = resultIterator.next(); Result previousRow = row; - break1 = row.getString("GROUP1"); - break2 = row.getString("GROUP2"); - break3 = row.getString("GROUP3"); + + if (b1Idx == -1) { + ResultDescriptor rd = row.getResultDescriptor(); + b1Idx = rd.getColumnIndex("GROUP1"); + b2Idx = rd.getColumnIndex("GROUP2"); + b3Idx = rd.getColumnIndex("GROUP3"); + yIdx = rd.getColumnIndex("YORDINATE"); + + if (b1Idx == -1 || b2Idx == -1 || b3Idx == -1 || yIdx == -1) { + return statisticSets; + } + } + break1 = row.getString(b1Idx); + break2 = row.getString(b2Idx); + break3 = row.getString(b3Idx); lRegression = new SimpleRegression(); lStatistics = new DescriptiveStatistics(); while (resultIterator.hasNext()) { - if (!break1.equals(row.getString("GROUP1")) - || !break2.equals(row.getString("GROUP2")) - || !break3.equals(row.getString("GROUP3")) + if (!break1.equals(row.getString(b1Idx)) + || !break2.equals(row.getString(b2Idx)) + || !break3.equals(row.getString(b3Idx)) ) { - String statisticsName = this.generateStatisticsName(break1, break2, - break3, parameters, - measurements, dates); - statisticSets.add(this.generateStatisticsValues(lStatistics, - lRegression, - statisticsName)); + String statisticsName = generateStatisticsName( + break1, break2, + break3, parameters, + measurements, dates); + + statisticSets.add( + generateStatisticsValues( + lStatistics, + lRegression, + statisticsName)); lStatistics.clear(); lRegression.clear(); - this.clearStatistics(); + clearStatistics(); - lStatistics.addValue(row.getDouble("YORDINATE")); - Double x = this.calculateXOrdinateValue(previousRow,row); - lRegression.addData(x, row.getDouble("YORDINATE")); + Double yValue = row.getDouble(yIdx); - break1 = row.getString("GROUP1"); - break2 = row.getString("GROUP2"); - break3 = row.getString("GROUP3"); + if (yValue != null) { + lStatistics.addValue(yValue); + Double x = calculateXOrdinateValue(previousRow,row); + lRegression.addData(x, yValue); + } + + break1 = row.getString(b1Idx); + break2 = row.getString(b2Idx); + break3 = row.getString(b3Idx); previousRow = row; row = resultIterator.next(); lSeries++; } else { - Double value = row.getDouble("YORDINATE"); + Double value = row.getDouble(yIdx); if (value != null) { lStatistics.addValue(value.doubleValue()); Double x = calculateXOrdinateValue(previousRow,row); @@ -123,18 +149,24 @@ } } - - lStatistics.addValue(row.getDouble("YORDINATE")); - Double x = this.calculateXOrdinateValue(previousRow, row); - lRegression.addData(x, row.getDouble("YORDINATE")); + + Double yValue = row.getDouble(yIdx); + + if (yValue != null) { + lStatistics.addValue(yValue); + Double x = calculateXOrdinateValue(previousRow, row); + lRegression.addData(x, yValue); + } - String statisticsName = this.generateStatisticsName(break1, break2, - break3, parameters, - measurements, dates); + String statisticsName = generateStatisticsName( + break1, break2, + break3, parameters, + measurements, dates); - statisticSets.add(this.generateStatisticsValues(lStatistics, - lRegression, - statisticsName)); + statisticSets.add(generateStatisticsValues( + lStatistics, + lRegression, + statisticsName)); lStatistics.clear(); lRegression.clear(); }