# HG changeset patch # User Tim Englich # Date 1254123123 0 # Node ID 6a825a184883ee0dbb77d98817fe8cc97f66cd63 # Parent c476fbbaa4ca581d930123c175f5b6f4fb641d6a Remove Compile-Errors from the StatisticsPart gnv-artifacts/trunk@139 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r c476fbbaa4ca -r 6a825a184883 gnv-artifacts/Changelog --- a/gnv-artifacts/Changelog Mon Sep 28 07:27:06 2009 +0000 +++ b/gnv-artifacts/Changelog Mon Sep 28 07:32:03 2009 +0000 @@ -1,3 +1,13 @@ +2009-09-28 Tim Englich + + * pom.xml Edited: + Added Link to Apache-Commons-Math to get the required Classes for the calculation + of Statistics. + * src/main/java/de/intevation/gnv/statistics/exception/StatisticsException.java Added: + Specified ExceptionClass for the Statistics Part of the gnv-artifacts + * src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java Edited: + Remove compileErrors and switch to new Datastructure + 2009-09-28 Tim Englich * src/main/java/de/intevation/gnv/statistics/Statistic.java Added , diff -r c476fbbaa4ca -r 6a825a184883 gnv-artifacts/pom.xml --- a/gnv-artifacts/pom.xml Mon Sep 28 07:27:06 2009 +0000 +++ b/gnv-artifacts/pom.xml Mon Sep 28 07:32:03 2009 +0000 @@ -57,6 +57,11 @@ opencsv 2.0 + + commons-math + commons-math + 1.1 + diff -r c476fbbaa4ca -r 6a825a184883 gnv-artifacts/src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java --- a/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java Mon Sep 28 07:27:06 2009 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java Mon Sep 28 07:32:03 2009 +0000 @@ -15,22 +15,18 @@ */ package de.intevation.gnv.statistics; -import java.io.FileReader; import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collections; -import java.util.List; +import java.util.Collection; +import java.util.Iterator; import org.apache.commons.math.stat.descriptive.DescriptiveStatistics; import org.apache.commons.math.stat.regression.SimpleRegression; import org.apache.log4j.Logger; -import au.com.bytecode.opencsv.CSVReader; +import de.intevation.gnv.geobackend.base.Result; +import de.intevation.gnv.statistics.exception.StatisticsException; -import de.conterra.bsh.gdi.gnviewer.datasources.ResultSet; -import de.conterra.bsh.gdi.gnviewer.datasources.Row; -import de.conterra.bsh.gdi.gnviewer.exception.TechnicalException; -import de.conterra.bsh.gdi.gnviewer.util.TempFile; + /** * The class TimeseriesStatistics fulfills the following purposes: @@ -39,6 +35,7 @@ * * * @author blume + * @author Tim Englich * @version 1.0 * @serial 1.0 * @see @@ -54,125 +51,75 @@ private Statistic[] mStatistics = null; - /* - public TimeseriesStatistics(ResultSet pResults) throws TechnicalException { - DescriptiveStatistics lStatistics = null; - SimpleRegression lRegression = null; - ArrayList lStats = new ArrayList(); - int break1, break2; - int mStart = 0; - int mEnd = 0; - int lSeries = 1; - Row[] mRow = pResults.getResults(); - - break1 = mRow[mStart].getIntValue(2); - break2 = mRow[mStart].getIntValue(3); - - for (int i = 1; i < mRow.length; i++) { - if (break1 != mRow[i].getIntValue(2) - || break2 != mRow[i].getIntValue(3)) { - lStatistics = createDescriptiveStatisticsObject(pResults,mStart,mEnd); - lRegression = createSimpleRegressionObject(pResults,mStart,mEnd); - addStatisticsValues(lStatistics, lRegression, lStats, lSeries); - mStart = i; - break1 = mRow[i].getIntValue(2); - break2 = mRow[i].getIntValue(3); - lSeries ++; - } - mEnd = i; - } - lStatistics = createDescriptiveStatisticsObject(pResults,mStart,mEnd); - lRegression = createSimpleRegressionObject(pResults,mStart,mEnd); - addStatisticsValues(lStatistics, lRegression, lStats, lSeries); - - mStatistics = new Statistic[lStats.size()]; - mStatistics = lStats.toArray(mStatistics); - - } - */ - public TimeseriesStatistics(TempFile lImageFile) throws TechnicalException { + + public TimeseriesStatistics(Collection resultSet) throws StatisticsException { DescriptiveStatistics lStatistics = null; SimpleRegression lRegression = null; ArrayList lStats = new ArrayList(); - int break1, break2; - int mStart = 0; - int mEnd = 0; - int lSeries = 1; - CSVReader reader=null; - if (sDebug) sLogger.debug("TimeseriesStatistics() lImageFile != null"); - try{ - reader = new CSVReader (new FileReader(lImageFile.getFile()), ';'); - String [] sArrayStrLine = reader.readNext(); - Row row = new Row(sArrayStrLine); - - break1 = new Integer (sArrayStrLine[2]).intValue(); - break2 = new Integer (sArrayStrLine[3]).intValue(); - //int i = 1; - lRegression = new SimpleRegression(); - lStatistics = DescriptiveStatistics.newInstance(); - while ((sArrayStrLine = reader.readNext()) != null) { - - if (break1 != new Integer (sArrayStrLine[2]).intValue() - || break2 != new Integer (sArrayStrLine[3]).intValue()) { - //lStatistics = createDescriptiveStatisticsObject(pResults,mStart,mEnd); - //lRegression = createSimpleRegressionObject(pResults,mStart,mEnd); - - addStatisticsValues(lStatistics, lRegression, lStats, lSeries); - - lStatistics.clear(); - lRegression.clear(); - - Row lRow = new Row (sArrayStrLine); - lStatistics.addValue(lRow.getDoubleValue(1)); - Double x = new Double( (lRow.getDateValue(0)).getTime()/1000/3600) ; - lRegression.addData(x,lRow.getDoubleValue(1)); - - break1 = new Integer (sArrayStrLine[2]).intValue(); - break2 = new Integer (sArrayStrLine[3]).intValue(); - lSeries ++; - } - else{ - Row lRow = new Row (sArrayStrLine); - lStatistics.addValue(lRow.getDoubleValue(1)); - Double x = new Double( (lRow.getDateValue(0)).getTime()/1000/3600) ; - lRegression.addData(x,lRow.getDoubleValue(1)); - } - - } - //lStatistics = createDescriptiveStatisticsObject(pResults,mStart,mEnd); - //lRegression = createSimpleRegressionObject(pResults,mStart,mEnd); - addStatisticsValues(lStatistics, lRegression, lStats, lSeries); - lStatistics.clear(); - lRegression.clear(); - mStatistics = new Statistic[lStats.size()]; - mStatistics = lStats.toArray(mStatistics); - } - catch (Exception e){ - sLogger.error(e.getMessage(), e); - } - finally { - try{ - reader.close(); - } - catch (Exception e){ - sLogger.error(e.getMessage(), e); - } - } - + int break1, break2; + int lSeries = 1; + if (sDebug) sLogger.debug("TimeseriesStatistics() lImageFile != null"); + try{ + + Iterator resultIterator = resultSet.iterator(); + if (resultIterator.hasNext()){ + Result row = resultIterator.next(); + break1 = row.getInteger("GROUP1"); + break2 = row.getInteger("GROUP2"); + lRegression = new SimpleRegression(); + lStatistics = DescriptiveStatistics.newInstance(); + while (resultIterator.hasNext()) { + + if (break1 != row.getInteger("GROUP1") + || break2 != row.getInteger("GROUP2")) { + //lStatistics = createDescriptiveStatisticsObject(pResults,mStart,mEnd); + //lRegression = createSimpleRegressionObject(pResults,mStart,mEnd); + + addStatisticsValues(lStatistics, lRegression, lStats, lSeries); + + lStatistics.clear(); + lRegression.clear(); + + row = resultIterator.next(); + lStatistics.addValue(row.getDouble("YORDINATE")); + Double x = new Double( (row.getDate("XORDINATE")).getTime()/1000/3600) ; + lRegression.addData(x ,row.getDouble("YORDINATE")); + + break1 = row.getInteger("GROUP1"); + break2 = row.getInteger("GROUP2"); + lSeries ++; + } + else{ + row = resultIterator.next(); + lStatistics.addValue(row.getDouble("YORDINATE")); + Double x = new Double( (row.getDate("XORDINATE")).getTime()/1000/3600) ; + lRegression.addData(x,row.getDouble("YORDINATE")); + } + + } + addStatisticsValues(lStatistics, lRegression, lStats, lSeries); + lStatistics.clear(); + lRegression.clear(); + mStatistics = new Statistic[lStats.size()]; + mStatistics = lStats.toArray(mStatistics); + } + } + catch (Exception e){ + sLogger.error(e.getMessage(), e); + } } - /** - * @param lStatistics - * @param lRegression - * @param lStats - * @param lSeries - */ - private void addStatisticsValues(DescriptiveStatistics lStatistics, - SimpleRegression lRegression, ArrayList lStats, - int lSeries) { - lStats.add(new Statistic("gnviewer.statistics.series",(double)lSeries)); + /** + * @param lStatistics + * @param lRegression + * @param lStats + * @param lSeries + */ + private void addStatisticsValues(DescriptiveStatistics lStatistics, + SimpleRegression lRegression, ArrayList lStats, + int lSeries) { + lStats.add(new Statistic("gnviewer.statistics.series",(double)lSeries)); lStats.add(new Statistic("gnviewer.statistics.descriptive.arithmeticMean", lStatistics.getMean())); lStats.add(new Statistic("gnviewer.statistics.descriptive.kurtosis", lStatistics.getKurtosis())); - /* lStats.add(new Statistic("gnviewer.statistics.descriptive.kurtosisClass", lStatistics.getKurtosisClass()));*/ lStats.add(new Statistic("gnviewer.statistics.descriptive.max", lStatistics.getMax())); lStats.add(new Statistic("gnviewer.statistics.descriptive.min", lStatistics.getMin())); lStats.add(new Statistic("gnviewer.statistics.descriptive.n", lStatistics.getN())); @@ -184,44 +131,12 @@ lStats.add(new Statistic("gnviewer.statistics.descriptive.variance", lStatistics.getVariance())); lStats.add(new Statistic("gnviewer.statistics.descriptive.intercept", lRegression.getIntercept())); lStats.add(new Statistic("gnviewer.statistics.descriptive.slope", lRegression.getSlope())); - } - - - /** - * @param pResults - * @param pStart - * @param pEnd - */ - /* - private SimpleRegression createSimpleRegressionObject ( ResultSet pResults, int pStart, int pEnd)throws TechnicalException{ - SimpleRegression lRegression = new SimpleRegression(); - Row[] lRows = pResults.getResults(); - for (int i = pStart; i < pEnd; i++) { - Row lRow = lRows[i]; - Double x = new Double( ((Calendar)lRow.getValue(0)).getTimeInMillis()/1000/3600) ; - lRegression.addData(x,lRow.getDoubleValue(1)); - - } - return lRegression; - } - */ - /** - * @param pResults - * @param pStart - * @param pEnd - */ - /* - private DescriptiveStatistics createDescriptiveStatisticsObject(ResultSet pResults, int pStart, int pEnd) throws TechnicalException { - DescriptiveStatistics lStatistics = DescriptiveStatistics.newInstance(); - Row[] lRows = pResults.getResults(); - for (int i = pStart; i < pEnd; i++) { - Row lRow = lRows[i]; - lStatistics.addValue(lRow.getDoubleValue(1)); - } - return lStatistics; - } - - */ + } + + /** + * + * @return + */ public Statistic[] getStatistics() { return mStatistics; } diff -r c476fbbaa4ca -r 6a825a184883 gnv-artifacts/src/main/java/de/intevation/gnv/statistics/exception/StatisticsException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/exception/StatisticsException.java Mon Sep 28 07:32:03 2009 +0000 @@ -0,0 +1,47 @@ +/** + * + */ +package de.intevation.gnv.statistics.exception; +/** + * @author Tim Englich + * + */ +public class StatisticsException extends Exception { + + /** + * + */ + private static final long serialVersionUID = -7324280565076343394L; + + /** + * Constructor + */ + public StatisticsException() { + } + + /** + * Constructor + * @param arg0 + */ + public StatisticsException(String arg0) { + super(arg0); + } + + /** + * Constructor + * @param arg0 + */ + public StatisticsException(Throwable arg0) { + super(arg0); + } + + /** + * Constructor + * @param arg0 + * @param arg1 + */ + public StatisticsException(String arg0, Throwable arg1) { + super(arg0, arg1); + } + +}