annotate artifacts/src/main/java/org/dive4elements/river/utils/UniqueDateFormatter.java @ 9801:1d7a72a50183 3.2.x tip

Assume Compose V2, consistently
author Tom Gottfried <tom@intevation.de>
date Thu, 23 Nov 2023 10:14:13 +0100
parents 0a5239a1e46e
children
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
9726
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 6865
diff changeset
17 import org.apache.logging.log4j.Logger;
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 6865
diff changeset
18 import org.apache.logging.log4j.LogManager;
6865
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
19
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
20 public class UniqueDateFormatter {
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
21
9726
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 6865
diff changeset
22 private static Logger log = LogManager.getLogger(UniqueDateFormatter.class);
6865
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
23
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
24 private DateFormat df;
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
25 private DateFormat lf;
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
26 private Map<String, int[]> collisions;
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
27
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
28 public UniqueDateFormatter(
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
29 DateFormat df,
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
30 DateFormat lf,
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
31 Collection<Date> dates
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
32 ) {
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
33 this.df = df;
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
34 this.lf = lf;
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
35 collisions = build(dates);
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
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
38 private Map<String, int []> build(Collection<Date> dates) {
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
39 Map<String, int []> collisions = new HashMap<String, int[]>();
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
40 for (Date d: dates) {
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
41 String s = df.format(d);
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
42 int [] count = collisions.get(s);
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
43 if (count == null) {
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
44 collisions.put(s, count = new int[1]);
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
45 }
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
46 if (++count[0] > 1) {
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
47 log.debug("date collsion found: " + d);
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 }
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
50 return collisions;
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
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
53 public String format(Date date) {
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
54 String s = df.format(date);
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
55 int [] count = collisions.get(s);
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
56 return count == null || count[0] < 2
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
57 ? s
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
58 : lf.format(date);
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
59 }
90f66b4fc34d Factored our date formatter.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
60 }

http://dive4elements.wald.intevation.org