diff geo-backend/src/main/java/de/intevation/gnv/geobackend/base/query/DefaultQueryExceutor.java @ 1123:f76541120bcb

Raster elements returned from ArcSDE are put into an UncacheableSDEResultSet container that is NOT cached. geo-backend/trunk@1154 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 04 Jun 2010 08:19:38 +0000
parents d387a97807a3
children ebeb56428409
line wrap: on
line diff
--- a/geo-backend/src/main/java/de/intevation/gnv/geobackend/base/query/DefaultQueryExceutor.java	Thu Jun 03 13:31:07 2010 +0000
+++ b/geo-backend/src/main/java/de/intevation/gnv/geobackend/base/query/DefaultQueryExceutor.java	Fri Jun 04 08:19:38 2010 +0000
@@ -13,6 +13,8 @@
 
 import de.intevation.gnv.geobackend.base.query.exception.QueryException;
 
+import de.intevation.gnv.geobackend.sde.datasources.Uncacheable;
+
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -74,7 +76,8 @@
                     return returnValue;
                 }
 
-                Connection connection = null;
+                boolean cacheable             = true;
+                Connection connection         = null;
                 ConnectionPool connectionPool = ConnectionPoolFactory.getInstance().getConnectionPool();
                 try {
                     // Submit the Query
@@ -86,13 +89,22 @@
                         Date end = new Date();
                         log.info("-> Database query took " +
                             (end.getTime() - start.getTime()) + " ms.");
+
+                        cacheable = rs instanceof Uncacheable ? false : true;
+
                         returnValue = super.createResultCollection(rs);
                     }else{
                         log.error("Could not establish Databaseconnection.");
                         throw new QueryException("Could not establish Databaseconnection.");
                     }
 
-                    cacheResults(queryString, returnValue);
+                    if (cacheable) {
+                        log.debug("Elements are cacheable.");
+                        cacheResults(queryString, returnValue);
+                    }
+                    else {
+                        log.debug("Elements are NOT cacheable.");
+                    }
 
                 } catch (ConnectionException e) {
                     log.error(e,e);

http://dive4elements.wald.intevation.org