annotate artifacts/src/main/java/org/dive4elements/river/utils/DateAverager.java @ 7697:640342d9ab8a

(issue1649) Remove broken getWKms from RiverUtils and use WDifferencesState instead This was basically duplicated code but only the code in WDifferenceState was maintained and extended. Another RiverUtils function bites the dust.
author Andre Heinecke <aheinecke@intevation.de>
date Mon, 16 Dec 2013 16:24:07 +0100
parents af13ceeba52a
children
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3007
diff changeset
9 package org.dive4elements.river.utils;
3007
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 import gnu.trove.TLongArrayList;
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13 import java.util.Date;
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15 public class DateAverager
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16 {
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17 protected TLongArrayList dates;
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19 public DateAverager() {
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
20 dates = new TLongArrayList();
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21 }
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23 public void add(Date date) {
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24 dates.add(date.getTime());
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25 }
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
26
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27 public Date getAverage() {
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28 int N = dates.size();
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29 if (N == 0) {
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
30 return null;
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
31 }
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
32 long min = dates.min();
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
33 long sum = 0L;
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34 for (int i = 0; i < N; ++i) {
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35 sum += dates.getQuick(i) - min;
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
36 }
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
37 return new Date(min + (long)Math.round(sum/(double)N));
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
38 }
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
39
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
40 public void clear() {
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41 dates.resetQuick();
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
42 }
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
43 }
d520a0869972 Added class to average dates without overflows.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
44 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org