diff gnv-artifacts/src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java @ 99:bb45c5097cb6

ehcache Integration for storing the chartresultvalues gnv-artifacts/trunk@146 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Mon, 28 Sep 2009 14:17:15 +0000
parents bd284d8306db
children ef157bd2fa92
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java	Mon Sep 28 10:20:41 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java	Mon Sep 28 14:17:15 2009 +0000
@@ -3,14 +3,18 @@
  */
 package de.intevation.gnv.transition;
 
+import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.Collection;
 
+import net.sf.ehcache.Element;
+
 import org.apache.log4j.Logger;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
 import de.intevation.artifactdatabase.Config;
+import de.intevation.gnv.artifacts.cache.CacheFactory;
 import de.intevation.gnv.geobackend.base.Result;
 import de.intevation.gnv.transition.exception.TransitionException;
 
@@ -31,11 +35,7 @@
      * the logger, used to log exceptions and additonaly information
      */
     private static Logger log = Logger.getLogger(OutputTransitionBase.class);
-    /**
-     * The Results which should be used for Rendering the Charts or 
-     * do other output
-     */
-    protected Collection<Result> chartResult = null;
+    
     
     /**
      * The different Outputmodes which are provided by an OutputTransition
@@ -108,21 +108,47 @@
      * @see de.intevation.gnv.transition.TransitionBase#advance()
      */
     @Override
-    public void advance() throws TransitionException {
+    public void advance(String uuid) throws TransitionException {
         log.debug("OutputTransitionBase.advance");
-        if (this.chartResult == null){
-            super.advance();
+        if (this.getChartResult(uuid) == null){
+            super.advance(uuid);
         }
     }
 
     /**
-     * @see de.intevation.gnv.transition.TransitionBase#getInputData()
+     * @see de.intevation.gnv.transition.OutputTransition#out(java.lang.String, java.util.Collection, java.io.OutputStream)
+     */
+    public void out(String outputMode, Collection<InputData> inputData,
+            OutputStream outputStream) throws TransitionException {
+    }
+
+    /**
+     * @return
+     */
+    protected Collection<Result> getChartResult(String uuid) {
+        log.debug("OutputTransitionBase.getChartResult");
+        if (CacheFactory.getInstance().isInitialized()){
+            String key = uuid+super.getID();
+            log.debug("Hash for Queryelements: "+key);
+            Element value = CacheFactory.getInstance().getCache().get(key);
+            if (value != null){
+                return (Collection<Result>)(value.getObjectValue());
+            }
+        }
+        return null;
+    }
+    
+    /**
+     * @see de.intevation.gnv.transition.TransitionBase#purifyResult(java.util.Collection, java.lang.String)
      */
     @Override
-    public Collection<InputData> getInputData() throws TransitionException {
-        log.debug("OutputTransitionBase.getInputData");
-        this.chartResult = null;
-        return super.getInputData();
+    protected void purifyResult(Collection<Result> result, String uuid) {
+        log.debug("OutputTransitionBase.purifyResult");
+        if (CacheFactory.getInstance().isInitialized()){
+            String key = uuid+super.getID();
+            log.debug("Hash for Queryelements: "+key);
+            CacheFactory.getInstance().getCache().put(new Element(key, result));
+        }
     }
 
 }

http://dive4elements.wald.intevation.org