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 }

http://dive4elements.wald.intevation.org