sascha@2119: package de.intevation.flys.artifacts.model; sascha@2119: sascha@2119: import de.intevation.flys.artifacts.cache.CacheFactory; sascha@2119: sascha@2119: import de.intevation.flys.model.CrossSection; sascha@2119: import de.intevation.flys.model.CrossSectionLine; sascha@2119: sascha@2119: import net.sf.ehcache.Cache; sascha@2119: import net.sf.ehcache.Element; sascha@2119: sascha@2119: import java.util.List; sascha@2119: sascha@2119: sascha@2119: public class FastCrossSectionLineFactory sascha@2119: { sascha@2119: public static final String CACHE_NAME = "fast-cross-section-lines"; sascha@2119: sascha@2119: private FastCrossSectionLineFactory() { sascha@2119: } sascha@2119: sascha@2119: public static FastCrossSectionLine getCrossSectionLine( sascha@2119: CrossSection cs, sascha@2119: double km sascha@2119: ) { sascha@2119: Cache cache = CacheFactory.getCache(CACHE_NAME); sascha@2119: sascha@2119: if (cache == null) { sascha@2119: List lines = cs.getLines(km, km); sascha@2119: return lines.isEmpty() sascha@2119: ? null sascha@2119: : new FastCrossSectionLine(lines.get(0)); sascha@2119: } sascha@2119: sascha@2119: String cacheKey = FastCrossSectionChunk.createHashKey(cs, km); sascha@2119: sascha@2119: Element element = cache.get(cacheKey); sascha@2119: sascha@2119: FastCrossSectionChunk fcsc; sascha@2119: sascha@2119: if (element != null) { sascha@2119: fcsc = (FastCrossSectionChunk)element.getValue(); sascha@2119: } sascha@2119: else { sascha@2119: fcsc = new FastCrossSectionChunk(cs, km); sascha@2119: element = new Element(cacheKey, fcsc); sascha@2119: cache.put(element); sascha@2119: } sascha@2119: sascha@2119: return fcsc.getCrossSectionLine(km); sascha@2119: } sascha@2119: } sascha@2119: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :