sascha@3007: package de.intevation.flys.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 :