changeset 6865:90f66b4fc34d

Factored our date formatter.
author Sascha L. Teichmann <teichmann@intevation.de>
date Mon, 19 Aug 2013 12:45:27 +0200
parents b55111e13acd
children 93c0a1692aa5
files artifacts/src/main/java/org/dive4elements/river/artifacts/states/fixation/FixAnalysisCompute.java artifacts/src/main/java/org/dive4elements/river/utils/UniqueDateFormatter.java
diffstat 2 files changed, 60 insertions(+), 43 deletions(-) [+]
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/fixation/FixAnalysisCompute.java	Mon Aug 19 12:44:11 2013 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/fixation/FixAnalysisCompute.java	Mon Aug 19 12:45:27 2013 +0200
@@ -11,9 +11,7 @@
 import java.text.DateFormat;
 import java.util.Collection;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 import org.apache.log4j.Logger;
 
@@ -46,6 +44,7 @@
 import org.dive4elements.river.artifacts.states.DefaultState;
 import org.dive4elements.river.utils.Formatter;
 import org.dive4elements.river.utils.IdGenerator;
+import org.dive4elements.river.utils.UniqueDateFormatter;
 
 /**
  * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
@@ -340,46 +339,5 @@
                 I18N_DEVIATION)));
         return res;
     }
-
-    /** Little hack to format dates unique if they collide. */
-    private static class UniqueDateFormatter {
-
-        private DateFormat df;
-        private DateFormat lf;
-        private Map<String, int[]> collisions;
-
-        UniqueDateFormatter(
-            DateFormat df,
-            DateFormat lf,
-            Collection<Date> dates
-        ) {
-            this.df = df;
-            this.lf = lf;
-            collisions = build(dates);
-        }
-
-        private Map<String, int []> build(Collection<Date> dates) {
-            Map<String, int []> collisions = new HashMap<String, int[]>();
-            for (Date d: dates) {
-                String s = df.format(d);
-                int [] count = collisions.get(s);
-                if (count == null) {
-                    collisions.put(s, count = new int[1]);
-                }
-                if (++count[0] > 1) {
-                    log.debug("date collsion found: " + d);
-                }
-            }
-            return collisions;
-        }
-
-        String format(Date date) {
-            String s = df.format(date);
-            int [] count = collisions.get(s);
-            return count == null || count[0] < 2
-                ? s
-                : lf.format(date);
-        }
-    } // class UniqueDateFormatter
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/artifacts/src/main/java/org/dive4elements/river/utils/UniqueDateFormatter.java	Mon Aug 19 12:45:27 2013 +0200
@@ -0,0 +1,59 @@
+/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
+ * Software engineering by Intevation GmbH
+ *
+ * This file is Free Software under the GNU AGPL (>=v3)
+ * and comes with ABSOLUTELY NO WARRANTY! Check out the
+ * documentation coming with Dive4Elements River for details.
+ */
+
+package org.dive4elements.river.utils;
+
+import java.text.DateFormat;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+
+public class UniqueDateFormatter {
+
+    private static Logger log = Logger.getLogger(UniqueDateFormatter.class);
+
+    private DateFormat df;
+    private DateFormat lf;
+    private Map<String, int[]> collisions;
+
+    public UniqueDateFormatter(
+        DateFormat df,
+        DateFormat lf,
+        Collection<Date> dates
+    ) {
+        this.df = df;
+        this.lf = lf;
+        collisions = build(dates);
+    }
+
+    private Map<String, int []> build(Collection<Date> dates) {
+        Map<String, int []> collisions = new HashMap<String, int[]>();
+        for (Date d: dates) {
+            String s = df.format(d);
+            int [] count = collisions.get(s);
+            if (count == null) {
+                collisions.put(s, count = new int[1]);
+            }
+            if (++count[0] > 1) {
+                log.debug("date collsion found: " + d);
+            }
+        }
+        return collisions;
+    }
+
+    public String format(Date date) {
+        String s = df.format(date);
+        int [] count = collisions.get(s);
+        return count == null || count[0] < 2
+            ? s
+            : lf.format(date);
+    }
+}

http://dive4elements.wald.intevation.org