Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/utils/UniqueDateFormatter.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 | 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 } |