# HG changeset patch # User Ingo Weinzierl # Date 1275639578 0 # Node ID f76541120bcb3517e854389f9b8c9608db078eee # Parent 1985d5db0feb02f702f0b56f17f7a1e4a5f1d2af Raster elements returned from ArcSDE are put into an UncacheableSDEResultSet container that is NOT cached. geo-backend/trunk@1154 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 1985d5db0feb -r f76541120bcb geo-backend/ChangeLog --- a/geo-backend/ChangeLog Thu Jun 03 13:31:07 2010 +0000 +++ b/geo-backend/ChangeLog Fri Jun 04 08:19:38 2010 +0000 @@ -1,3 +1,20 @@ +2010-06-04 Ingo Weinzierl + + * src/main/java/de/intevation/gnv/geobackend/sde/datasources/Uncacheable.java: + A new marker interface. It should be implemented by objects that should + not be cached. + + * src/main/java/de/intevation/gnv/geobackend/sde/datasources/UncacheableSDEResultSet.java: + A new SDEResultSet class that implements Uncacheable. Currently, it is + used for raster elements returned from ArcSDE. + + * src/main/java/de/intevation/gnv/geobackend/sde/datasources/ArcSDEStatement.java: + Raster elements are put into an UncacheableSDEResultSet container. This + has the effect that raster elements are not cached. + + * src/main/java/de/intevation/gnv/geobackend/base/query/DefaultQueryExceutor.java: + Only objects that do not implement Uncacheable will be cached. + 2010-06-03 Ingo Weinzierl * src/main/java/de/intevation/gnv/geobackend/config/Configuration.java: A diff -r 1985d5db0feb -r f76541120bcb geo-backend/src/main/java/de/intevation/gnv/geobackend/base/query/DefaultQueryExceutor.java --- 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); diff -r 1985d5db0feb -r f76541120bcb geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/datasources/ArcSDEStatement.java --- a/geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/datasources/ArcSDEStatement.java Thu Jun 03 13:31:07 2010 +0000 +++ b/geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/datasources/ArcSDEStatement.java Fri Jun 04 08:19:38 2010 +0000 @@ -494,7 +494,9 @@ log.debug("ArcSDEStatement.handleResultSet()"); } - SDEResultSet lSet = new SDEResultSet(); + SDEResultSet lSet = isRaster + ? new UncacheableSDEResultSet() + : new SDEResultSet(); SeRow row = null; int lCount; if (!isRaster){ diff -r 1985d5db0feb -r f76541120bcb geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/datasources/Uncacheable.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/datasources/Uncacheable.java Fri Jun 04 08:19:38 2010 +0000 @@ -0,0 +1,12 @@ +package de.intevation.gnv.geobackend.sde.datasources; + +/** + * This interface is a marker interface. It is used for objects that should + * not be cached. + * + * @author Ingo Weinzierl + */ +public interface Uncacheable { + +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8: diff -r 1985d5db0feb -r f76541120bcb geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/datasources/UncacheableSDEResultSet.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/datasources/UncacheableSDEResultSet.java Fri Jun 04 08:19:38 2010 +0000 @@ -0,0 +1,20 @@ +package de.intevation.gnv.geobackend.sde.datasources; + +/** + * This ResultSet has no special tasks but implements Uncacheable + * to avoid this objects being cached. + * + * @author Ingo Weinzierl + */ +public class UncacheableSDEResultSet +extends SDEResultSet +implements Uncacheable +{ + /** + * Creates a new UncacheableSDResultSet object. + */ + public UncacheableSDEResultSet() { + + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8: