teichmann@5863: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5863: * Software engineering by Intevation GmbH teichmann@5863: * teichmann@5863: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5863: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5863: * documentation coming with Dive4Elements River for details. teichmann@5863: */ teichmann@5863: teichmann@5831: package org.dive4elements.river.utils; sascha@3007: sascha@3007: import gnu.trove.TLongArrayList; sascha@3007: sascha@3007: import java.util.Date; sascha@3007: sascha@3007: public class DateAverager sascha@3007: { sascha@3007: protected TLongArrayList dates; sascha@3007: sascha@3007: public DateAverager() { sascha@3007: dates = new TLongArrayList(); sascha@3007: } sascha@3007: sascha@3007: public void add(Date date) { sascha@3007: dates.add(date.getTime()); sascha@3007: } sascha@3007: sascha@3007: public Date getAverage() { sascha@3007: int N = dates.size(); sascha@3007: if (N == 0) { sascha@3007: return null; sascha@3007: } sascha@3007: long min = dates.min(); sascha@3007: long sum = 0L; sascha@3007: for (int i = 0; i < N; ++i) { sascha@3007: sum += dates.getQuick(i) - min; sascha@3007: } sascha@3007: return new Date(min + (long)Math.round(sum/(double)N)); sascha@3007: } sascha@3007: sascha@3007: public void clear() { sascha@3007: dates.resetQuick(); sascha@3007: } sascha@3007: } sascha@3007: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :