# HG changeset patch # User Sascha L. Teichmann # Date 1262618414 0 # Node ID 04cfb4e3da4f12ef4c5e5098cb151d070308e533 # Parent 537e663d6c0c1b2bb6eb58d55cf958b32486620c Refactored statistics classes a bit. Added class for vertical cross sections. gnv-artifacts/trunk@503 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 537e663d6c0c -r 04cfb4e3da4f gnv-artifacts/ChangeLog --- a/gnv-artifacts/ChangeLog Mon Jan 04 13:42:49 2010 +0000 +++ b/gnv-artifacts/ChangeLog Mon Jan 04 15:20:14 2010 +0000 @@ -1,3 +1,29 @@ +2010-01-04 Sascha L. Teichmann + + * src/main/java/de/intevation/gnv/statistics/Statistics.java: + Changed interface to allow general object results as + input for statistic calculation. This is needed because + the vertical cross section produces no SQL like resultsets. + + * src/main/java/de/intevation/gnv/statistics/AbstractStatistics.java: + New. Added common base class for different kind of statistics. + TODO: Move more common code into this class. + + * src/main/java/de/intevation/gnv/statistics/VerticalCrossSectionStatistics.java: + New. Statistics for vertical cross sections. Does nothing + by now. + + * src/main/java/de/intevation/gnv/state/profile/verticalcrosssection/VerticalCrossSectionOutputState.java: + Creates a VerticalCrossSectionStatistics object as statistics + generator now. + + * src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java: + Inherits from AbstractStatistics now. Some code moved to new + base class. + + * src/main/java/de/intevation/gnv/state/timeseries/TimeSeriesOutputState.java: + Cleaned up the usage of statistics. + 2010-01-04 Sascha L. Teichmann * src/main/java/de/intevation/gnv/math/Interpolation3D.java: diff -r 537e663d6c0c -r 04cfb4e3da4f gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/verticalcrosssection/VerticalCrossSectionOutputState.java --- a/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/verticalcrosssection/VerticalCrossSectionOutputState.java Mon Jan 04 13:42:49 2010 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/verticalcrosssection/VerticalCrossSectionOutputState.java Mon Jan 04 15:20:14 2010 +0000 @@ -65,7 +65,7 @@ import de.intevation.gnv.state.timeseries.TimeSeriesOutputState; import de.intevation.gnv.statistics.Statistics; -import de.intevation.gnv.statistics.VerticalProfileStatistics; +import de.intevation.gnv.statistics.VerticalCrossSectionStatistics; import de.intevation.gnv.utils.DistanceCalculator; import de.intevation.gnv.utils.WKTUtils; @@ -510,7 +510,7 @@ */ @Override protected Statistics getStatisticsGenerator() { - return new VerticalProfileStatistics(); + return new VerticalCrossSectionStatistics(); } /** diff -r 537e663d6c0c -r 04cfb4e3da4f gnv-artifacts/src/main/java/de/intevation/gnv/state/timeseries/TimeSeriesOutputState.java --- a/gnv-artifacts/src/main/java/de/intevation/gnv/state/timeseries/TimeSeriesOutputState.java Mon Jan 04 13:42:49 2010 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/state/timeseries/TimeSeriesOutputState.java Mon Jan 04 15:20:14 2010 +0000 @@ -362,23 +362,23 @@ } else if (outputMode.equalsIgnoreCase("statistics")) { log.debug("Statistics will be generated."); - Statistics s = getStatisticsGenerator(); - Collection statistics; - Object result = getChartResult(uuid, callContext); + Statistics s = getStatisticsGenerator(); + Object result = getChartResult(uuid, callContext); - if (result instanceof Collection) { - Collection chartResult = - (Collection) result; + if (result != null && s != null) { Collection parameters = - this.getParameters(uuid); + getParameters(uuid); + Collection measurements = - this.getMeasurements(uuid); + getMeasurements(uuid); + Collection dates = - this.getDates(uuid); + getDates(uuid); + statistics = s.calculateStatistics( - chartResult, + result, parameters, measurements, dates); @@ -387,8 +387,10 @@ statistics = new ArrayList(); } - Document doc = this.writeStatistics2XML(statistics); - this.writeDocument2OutputStream(doc, outputStream); + Document doc = writeStatistics2XML(statistics); + + writeDocument2OutputStream(doc, outputStream); + } else if (outputMode.equalsIgnoreCase("odv")) { Collection odvResult = this.getODVResult(uuid); diff -r 537e663d6c0c -r 04cfb4e3da4f gnv-artifacts/src/main/java/de/intevation/gnv/statistics/AbstractStatistics.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/AbstractStatistics.java Mon Jan 04 15:20:14 2010 +0000 @@ -0,0 +1,100 @@ +package de.intevation.gnv.statistics; + +import java.util.Collection; +import java.util.ArrayList; + +import org.apache.commons.math.stat.descriptive.DescriptiveStatistics; + +import org.apache.commons.math.stat.regression.SimpleRegression; + +import org.apache.log4j.Logger; + +/** + * @author Sascha L. Teichmann (sascha.teichmann@intevation.de) + */ +public abstract class AbstractStatistics +implements Statistics +{ + private static Logger log = Logger.getLogger( + AbstractStatistics.class); + + public AbstractStatistics() { + } + + protected StatisticSet generateStatisticsValues( + DescriptiveStatistics lStatistics, + SimpleRegression lRegression, + String statisticName + ) { + StatisticSet statisticSet = new StatisticSet(statisticName); + + statisticSet.addStatistic( + new Statistic( + "gnviewer.statistics.descriptive.arithmeticMean", + lStatistics.getMean())); + + statisticSet.addStatistic( + new Statistic( + "gnviewer.statistics.descriptive.kurtosis", + lStatistics.getKurtosis())); + + statisticSet.addStatistic( + new Statistic( + "gnviewer.statistics.descriptive.max", + lStatistics.getMax())); + + statisticSet.addStatistic( + new Statistic( + "gnviewer.statistics.descriptive.min", + lStatistics.getMin())); + + statisticSet.addStatistic( + new Statistic( + "gnviewer.statistics.descriptive.n", + lStatistics.getN())); + + statisticSet.addStatistic( + new Statistic( + "gnviewer.statistics.descriptive.percentile.90", + lStatistics.getPercentile(90))); + + statisticSet.addStatistic( + new Statistic( + "gnviewer.statistics.descriptive.percentile.75", + lStatistics.getPercentile(75))); + + statisticSet.addStatistic( + new Statistic( + "gnviewer.statistics.descriptive.percentile.50", + lStatistics.getPercentile(50))); + + statisticSet.addStatistic( + new Statistic( + "gnviewer.statistics.descriptive.percentile.10", + lStatistics.getPercentile(10))); + + statisticSet.addStatistic( + new Statistic( + "gnviewer.statistics.descriptive.deviation", + lStatistics.getStandardDeviation())); + + statisticSet.addStatistic( + new Statistic( + "gnviewer.statistics.descriptive.variance", + lStatistics.getVariance())); + + statisticSet.addStatistic( + new Statistic( + "gnviewer.statistics.descriptive.intercept", + lRegression.getIntercept())); + + statisticSet.addStatistic( + new Statistic( + "gnviewer.statistics.descriptive.slope", + lRegression.getSlope())); + + return statisticSet; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : + diff -r 537e663d6c0c -r 04cfb4e3da4f gnv-artifacts/src/main/java/de/intevation/gnv/statistics/Statistics.java --- a/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/Statistics.java Mon Jan 04 13:42:49 2010 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/Statistics.java Mon Jan 04 15:20:14 2010 +0000 @@ -17,8 +17,8 @@ import java.util.Collection; -import de.intevation.gnv.geobackend.base.Result; import de.intevation.gnv.state.describedata.KeyValueDescibeData; + import de.intevation.gnv.statistics.exception.StatisticsException; /** @@ -45,11 +45,10 @@ * @throws StatisticsException */ public Collection calculateStatistics( - Collection resultSet, - Collection parameters, - Collection measurements, - Collection dates - ) - throws StatisticsException; - + Object resultSet, + Collection parameters, + Collection measurements, + Collection dates + ) + throws StatisticsException; } diff -r 537e663d6c0c -r 04cfb4e3da4f gnv-artifacts/src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java --- a/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java Mon Jan 04 13:42:49 2010 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java Mon Jan 04 15:20:14 2010 +0000 @@ -42,7 +42,9 @@ * @see * @since 06.12.2007 18:02:27 */ -public class TimeseriesStatistics implements Statistics { +public class TimeseriesStatistics +extends AbstractStatistics +{ /** * Default Logging instance @@ -53,21 +55,27 @@ * Constructor */ public TimeseriesStatistics() { - super(); } /** * @see de.intevation.gnv.statistics.Statistics#calculateStatistics(java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection) */ public Collection calculateStatistics( - Collection resultSet, + Object result, Collection parameters, Collection measurements, Collection dates ) throws StatisticsException { + if (!(result instanceof Collection)) { + return new ArrayList(); + } + + Collection resultSet = (Collection)result; + clearStatistics(); + DescriptiveStatistics lStatistics = null; SimpleRegression lRegression = null; Collection statisticSets = new ArrayList(); @@ -224,52 +232,4 @@ return new Double((row.getDate("XORDINATE")).getTime() / 1000 / 3600); } - /** - * @param lStatistics - * @param lRegression - * @param lStats - * @param lSeries - */ - private StatisticSet generateStatisticsValues(DescriptiveStatistics lStatistics, - SimpleRegression lRegression, String statisticName) { - - StatisticSet statisticSet = new StatisticSet(statisticName); - - statisticSet.addStatistic(new Statistic( - "gnviewer.statistics.descriptive.arithmeticMean", lStatistics - .getMean())); - statisticSet.addStatistic(new Statistic( - "gnviewer.statistics.descriptive.kurtosis", lStatistics - .getKurtosis())); - statisticSet.addStatistic(new Statistic("gnviewer.statistics.descriptive.max", - lStatistics.getMax())); - statisticSet.addStatistic(new Statistic("gnviewer.statistics.descriptive.min", - lStatistics.getMin())); - statisticSet.addStatistic(new Statistic("gnviewer.statistics.descriptive.n", - lStatistics.getN())); - statisticSet.addStatistic(new Statistic( - "gnviewer.statistics.descriptive.percentile.90", lStatistics - .getPercentile(90))); - statisticSet.addStatistic(new Statistic( - "gnviewer.statistics.descriptive.percentile.75", lStatistics - .getPercentile(75))); - statisticSet.addStatistic(new Statistic( - "gnviewer.statistics.descriptive.percentile.50", lStatistics - .getPercentile(50))); - statisticSet.addStatistic(new Statistic( - "gnviewer.statistics.descriptive.percentile.10", lStatistics - .getPercentile(10))); - statisticSet.addStatistic(new Statistic( - "gnviewer.statistics.descriptive.deviation", lStatistics - .getStandardDeviation())); - statisticSet.addStatistic(new Statistic( - "gnviewer.statistics.descriptive.variance", lStatistics - .getVariance())); - statisticSet.addStatistic(new Statistic( - "gnviewer.statistics.descriptive.intercept", lRegression - .getIntercept())); - statisticSet.addStatistic(new Statistic("gnviewer.statistics.descriptive.slope", - lRegression.getSlope())); - return statisticSet; - } } diff -r 537e663d6c0c -r 04cfb4e3da4f gnv-artifacts/src/main/java/de/intevation/gnv/statistics/VerticalCrossSectionStatistics.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/VerticalCrossSectionStatistics.java Mon Jan 04 15:20:14 2010 +0000 @@ -0,0 +1,52 @@ +package de.intevation.gnv.statistics; + +import java.util.Collection; +import java.util.ArrayList; + +import org.apache.log4j.Logger; + +import de.intevation.gnv.state.describedata.KeyValueDescibeData; + +import de.intevation.gnv.statistics.exception.StatisticsException; + +import de.intevation.gnv.math.AttributedXYColumns; + +/** + * @author Sascha L. Teichmann (sascha.teichmann@intevation.de) + */ +public class VerticalCrossSectionStatistics +extends AbstractStatistics +{ + private static Logger log = Logger.getLogger( + VerticalCrossSectionStatistics.class); + + public VerticalCrossSectionStatistics() { + } + + public Collection calculateStatistics( + Object result, + Collection parameters, + Collection measurements, + Collection dates + ) + throws StatisticsException { + + boolean debug = log.isDebugEnabled(); + + if (debug) { + log.debug("calculateStatistics --------------"); + } + + ArrayList statisticSet = + new ArrayList(); + + if (!(result instanceof AttributedXYColumns)) { + log.error("wrong type of result"); + return statisticSet; + } + AttributedXYColumns columns = (AttributedXYColumns)result; + + return statisticSet; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :