Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/utils/UniqueDateFormatter.java @ 8755:30b1ddadf275
(issue1801) Unify reference gauge finding code
The basic way as described in the method comment of the
determineRefGauge method is now used in the WINFOArtifact,
MainValuesService and RiverUtils.getGauge method.
RiverUtils.getGauge previously just returned the first
gauge found. While this is now a behavior change I believe
that it is always more correct then the undeterministic
behavior of the previous implmenentation.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Wed, 24 Jun 2015 14:07:26 +0200 |
parents | 90f66b4fc34d |
children | 0a5239a1e46e |
rev | line source |
---|---|
6865
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
3 * |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
7 */ |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
8 |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
9 package org.dive4elements.river.utils; |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
10 |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
11 import java.text.DateFormat; |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
12 import java.util.Collection; |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
13 import java.util.Date; |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
14 import java.util.HashMap; |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
15 import java.util.Map; |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
16 |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
17 import org.apache.log4j.Logger; |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
18 |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
19 public class UniqueDateFormatter { |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
20 |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
21 private static Logger log = Logger.getLogger(UniqueDateFormatter.class); |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
22 |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
23 private DateFormat df; |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
24 private DateFormat lf; |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
25 private Map<String, int[]> collisions; |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
26 |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
27 public UniqueDateFormatter( |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
28 DateFormat df, |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
29 DateFormat lf, |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
30 Collection<Date> dates |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
31 ) { |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
32 this.df = df; |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
33 this.lf = lf; |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
34 collisions = build(dates); |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
35 } |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
36 |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
37 private Map<String, int []> build(Collection<Date> dates) { |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
38 Map<String, int []> collisions = new HashMap<String, int[]>(); |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
39 for (Date d: dates) { |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
40 String s = df.format(d); |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
41 int [] count = collisions.get(s); |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
42 if (count == null) { |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
43 collisions.put(s, count = new int[1]); |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
44 } |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
45 if (++count[0] > 1) { |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
46 log.debug("date collsion found: " + d); |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
47 } |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
48 } |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
49 return collisions; |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
50 } |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
51 |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
52 public String format(Date date) { |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
53 String s = df.format(date); |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
54 int [] count = collisions.get(s); |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
55 return count == null || count[0] < 2 |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
56 ? s |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
57 : lf.format(date); |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
58 } |
90f66b4fc34d
Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
59 } |