teichmann@5831: package org.dive4elements.river.artifacts.model; raimund@3274: teichmann@5831: import org.dive4elements.river.artifacts.cache.CacheFactory; raimund@3274: teichmann@5831: import org.dive4elements.river.backend.SedDBSessionHolder; raimund@3274: raimund@3274: import net.sf.ehcache.Cache; raimund@3274: import net.sf.ehcache.Element; raimund@3274: raimund@3274: import org.apache.log4j.Logger; raimund@3274: raimund@3274: import org.hibernate.Session; raimund@3274: raimund@3274: public class SQOverviewFactory { sascha@3289: sascha@3289: private static Logger log = Logger.getLogger(SQOverviewFactory.class); raimund@3274: raimund@3274: public static final String CACHE_NAME = "sq-overviews"; raimund@3274: raimund@3274: private SQOverviewFactory() { raimund@3274: } raimund@3274: raimund@3274: raimund@3274: public static SQOverview getOverview(String river) { raimund@3274: raimund@3274: boolean debug = log.isDebugEnabled(); raimund@3274: raimund@3274: if (debug) { raimund@3274: log.debug( raimund@3274: "Looking for sq overview for river '" + river + "'"); raimund@3274: } raimund@3274: raimund@3274: Cache cache = CacheFactory.getCache(CACHE_NAME); raimund@3274: raimund@3274: if (cache == null) { raimund@3274: if (debug) { raimund@3274: log.debug("Cache not configured."); raimund@3274: } raimund@3274: return getUncached(river); raimund@3274: } raimund@3274: raimund@3274: String key = "sq-over-" + river; raimund@3274: raimund@3274: Element element = cache.get(key); raimund@3274: raimund@3274: if (element != null) { raimund@3274: if (debug) { raimund@3274: log.debug("Overview found in cache"); raimund@3274: } raimund@3274: return (SQOverview)element.getValue(); raimund@3274: } raimund@3274: raimund@3274: SQOverview overview = getUncached(river); raimund@3274: raimund@3274: if (overview != null) { raimund@3274: if (debug) { raimund@3274: log.debug("Store overview in cache."); raimund@3274: } raimund@3274: cache.put(new Element(key, overview)); raimund@3274: } raimund@3274: raimund@3274: return overview; raimund@3274: } raimund@3274: raimund@3274: public static SQOverview getUncached(String river) { raimund@3274: SQOverview overview = new SQOverview(river); raimund@3274: raimund@3274: Session session = SedDBSessionHolder.HOLDER.get(); raimund@3274: raimund@3274: return overview.load(session) ? overview : null; raimund@3274: } raimund@3274: } sascha@3287: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :