diff geo-backend/src/main/java/de/intevation/gnv/geobackend/base/query/CachingQueryExecutorFactory.java @ 542:f0b6d0e2a0f6

Small fixes for Ehcache based SQL results caching. geo-backend/trunk@463 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Sat, 19 Dec 2009 14:45:21 +0000
parents 3cbf11c67fdc
children 8b442223741c
line wrap: on
line diff
--- a/geo-backend/src/main/java/de/intevation/gnv/geobackend/base/query/CachingQueryExecutorFactory.java	Fri Dec 18 16:13:52 2009 +0000
+++ b/geo-backend/src/main/java/de/intevation/gnv/geobackend/base/query/CachingQueryExecutorFactory.java	Sat Dec 19 14:45:21 2009 +0000
@@ -6,6 +6,7 @@
 import net.sf.ehcache.Element;
 import net.sf.ehcache.CacheManager;
 
+import org.apache.log4j.Logger;
 
 import de.intevation.gnv.geobackend.base.Result;
 
@@ -19,9 +20,12 @@
     public static final String QUERY_EXECUTOR_FACTORY = "caching.query.executor.config";
     public static final String CACHE_NAME             = "sql.cache";
 
+    private static Logger log = Logger.getLogger(CachingQueryExecutorFactory.class);
+
     protected CacheManager manager;
 
     public CachingQueryExecutorFactory() {
+        log.info("using SQL cache");
         String configFile = System.getProperty(QUERY_EXECUTOR_FACTORY);
         manager = configFile != null
             ? new CacheManager(configFile)
@@ -35,16 +39,26 @@
             public Collection<Result> cachedResults(String query) {
                 Cache   cache   = manager.getCache(CACHE_NAME);
                 Element element = cache.get(query);
+                if (log.isDebugEnabled()) {
+                    log.debug("found results in SQL cache: " + (element != null));
+                }
                 return element != null
                     ? (Collection<Result>)element.getObjectValue()
                     : null;
             }
 
-            public void cacheResult(String query, Collection<Result> results) {
+            public void cacheResults(String query, Collection<Result> results) {
+                log.debug("store results in SQL cache");
                 Cache cache = manager.getCache(CACHE_NAME);
                 cache.put(new Element(query, results));
             }
         };
     }
+
+    public void shutdown() {
+        log.info("shutting down SQL cache");
+        manager.getCache(CACHE_NAME).flush();
+        manager.shutdown();
+    }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8:

http://dive4elements.wald.intevation.org