Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FastCrossSectionLineFactory.java @ 2119:dc28ea60b53d
Added cached/chunked access to cross section lines. TODO: Use the FastCrossSectionLines.
flys-artifacts/trunk@3689 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 16 Jan 2012 15:51:46 +0000 |
parents | |
children | d626ae185305 |
line wrap: on
line source
package de.intevation.flys.artifacts.model; import de.intevation.flys.artifacts.cache.CacheFactory; import de.intevation.flys.model.CrossSection; import de.intevation.flys.model.CrossSectionLine; import net.sf.ehcache.Cache; import net.sf.ehcache.Element; import java.util.List; public class FastCrossSectionLineFactory { public static final String CACHE_NAME = "fast-cross-section-lines"; private FastCrossSectionLineFactory() { } public static FastCrossSectionLine getCrossSectionLine( CrossSection cs, double km ) { Cache cache = CacheFactory.getCache(CACHE_NAME); if (cache == null) { List<CrossSectionLine> lines = cs.getLines(km, km); return lines.isEmpty() ? null : new FastCrossSectionLine(lines.get(0)); } String cacheKey = FastCrossSectionChunk.createHashKey(cs, km); Element element = cache.get(cacheKey); FastCrossSectionChunk fcsc; if (element != null) { fcsc = (FastCrossSectionChunk)element.getValue(); } else { fcsc = new FastCrossSectionChunk(cs, km); element = new Element(cacheKey, fcsc); cache.put(element); } return fcsc.getCrossSectionLine(km); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :