Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/LocationProvider.java @ 2792:fe987587ebc9
Merged revisions 4539-4540,4543,4545-4546 via svnmerge from
file:///home/clients/bsh/bsh-generischer-viewer/Material/SVN/flys-artifacts/trunk
........
r4539 | teichmann | 2012-05-27 20:02:13 +0200 (So, 27 Mai 2012) | 1 line
FixA: Added forgotten csv/report facets/generators to conf.
........
r4540 | teichmann | 2012-05-27 20:11:31 +0200 (So, 27 Mai 2012) | 1 line
FixA: Fixed class cast bug in report facet.
........
r4543 | teichmann | 2012-05-28 20:35:01 +0200 (Mo, 28 Mai 2012) | 1 line
FixA: Added facet to return delta w/t as CSV
........
r4545 | teichmann | 2012-05-28 22:59:27 +0200 (Mo, 28 Mai 2012) | 1 line
FixA: Made Delta W/t calculation finally work
........
r4546 | teichmann | 2012-05-28 23:34:24 +0200 (Mo, 28 Mai 2012) | 1 line
FixA: corrected fitting (Q->W instead W->Q).
........
flys-artifacts/tags/2.7@4547 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Tue, 29 May 2012 04:58:29 +0000 |
parents | fe3ea0f16098 |
children | 0f7abd95c6e2 |
line wrap: on
line source
package de.intevation.flys.artifacts.model; import net.sf.ehcache.Cache; import net.sf.ehcache.Element; import org.apache.log4j.Logger; import de.intevation.flys.model.Annotation; import de.intevation.flys.model.FastAnnotations; import de.intevation.flys.artifacts.cache.CacheFactory; import de.intevation.flys.artifacts.model.AnnotationsFactory; public class LocationProvider { private static final Logger log = Logger.getLogger(LocationProvider.class); public static final String CACHE_KEY = "location-provider"; public static final String PREFIX = "lp-"; private LocationProvider() { } public static String getLocation(String river, double km) { FastAnnotations fas = getAnnotations(river, km); FastAnnotations.Annotation an = fas.findByKm(km); return an != null ? an.getPosition() : null; } public static FastAnnotations getAnnotations(String river) { return getAnnotations(river, Double.MAX_VALUE); } protected static FastAnnotations getAnnotations(String river, double km) { Cache cache = CacheFactory.getCache(CACHE_KEY); if (cache == null) { return uncachedAnnotations(river, km); } String key = PREFIX + river; Element element = cache.get(key); if (element != null) { return (FastAnnotations)element.getValue(); } FastAnnotations fas = uncachedAnnotations(river, Double.MAX_VALUE); cache.put(new Element(key, fas)); return fas; } protected static FastAnnotations uncachedAnnotations( String river, double km ) { if (km != Double.MAX_VALUE) { // XXX Fake it by using a standard Annotation. Annotation annotation = AnnotationsFactory.getAnnotation(river, km); if (annotation != null) { FastAnnotations.Annotation fa = new FastAnnotations.Annotation( km, Double.NaN, annotation.getPosition().getValue(), null, null, Double.NaN, Double.NaN); return new FastAnnotations( new FastAnnotations.Annotation [] { fa }); } return new FastAnnotations(new FastAnnotations.Annotation[0]); } long startTime = System.currentTimeMillis(); FastAnnotations fas = new FastAnnotations(river); long stopTime = System.currentTimeMillis(); if (log.isDebugEnabled()) { log.debug("Loading locations took " + (stopTime-startTime)/1000f + " secs."); } return fas; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :