view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FastCrossSectionLineFactory.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 d626ae185305
children
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.FastCrossSectionLine;

import net.sf.ehcache.Cache;
import net.sf.ehcache.Element;

import java.util.List;

import org.apache.log4j.Logger;

public class FastCrossSectionLineFactory
{
    private static Logger log =
        Logger.getLogger(FastCrossSectionLineFactory.class);

    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);

        boolean debug = log.isDebugEnabled();

        if (cache == null) {
            if (debug) {
                log.debug("No cross section chunk cache configured.");
            }
            List<FastCrossSectionLine> lines = cs.getFastLines(km, km);
            return lines.isEmpty() ? null : lines.get(0);
        }

        String cacheKey = FastCrossSectionChunk.createHashKey(cs, km);

        Element element = cache.get(cacheKey);

        FastCrossSectionChunk fcsc;

        if (element != null) {
            if (debug) {
                log.debug("Found cross section chunk in cache id: " +
                    cs.getId() + " km: " + km);
            }

            fcsc = (FastCrossSectionChunk)element.getValue();
        }
        else {
            if (debug) {
                log.debug("Not found cross section chunk in cache id: " +
                    cs.getId() + " km: " + km + " -> loading");
            }
            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 :

http://dive4elements.wald.intevation.org