Mercurial > dive4elements > river
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); + } +}