Mercurial > dive4elements > gnv-client
changeset 609:22e65fb4c64a
Improved hash creation in each state.
gnv-artifacts/trunk@675 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 11 Feb 2010 08:54:58 +0000 (2010-02-11) |
parents | 74dfb9346574 |
children | 6484464d2059 |
files | gnv-artifacts/ChangeLog gnv-artifacts/src/main/java/de/intevation/gnv/state/StateBase.java |
diffstat | 2 files changed, 21 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/gnv-artifacts/ChangeLog Wed Feb 10 15:35:26 2010 +0000 +++ b/gnv-artifacts/ChangeLog Thu Feb 11 08:54:58 2010 +0000 @@ -1,3 +1,9 @@ +2010-02-11 Ingo Weinzierl <ingo.weinzierl@intevation.de> + + * src/main/java/de/intevation/gnv/state/StateBase.java: Improved hash + creation of each state. The hash is created using the uuid, state-id and + the hash code of the input data required for the sql statement. + 2010-02-10 Ingo Weinzierl <ingo.weinzierl@intevation.de> * src/main/java/de/intevation/gnv/state/StateBase.java: Append description
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/state/StateBase.java Wed Feb 10 15:35:26 2010 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/state/StateBase.java Thu Feb 11 08:54:58 2010 +0000 @@ -76,6 +76,8 @@ private String id = null; + protected String hash; + private String description = null; protected String dataName = null; @@ -352,6 +354,7 @@ log.warn("No Inputdata given"); } + setHash(uuid); } @@ -387,15 +390,6 @@ public void initialize(String uuid, CallContext context) throws StateException { - /* - try { - getDescibeData(uuid); - } - catch (RuntimeException e) { - log.error(e, e); - throw new StateException(e); - } - */ } /** @@ -889,8 +883,13 @@ } - protected String getHash(String uuid) { - return uuid + id + inputData.hashCode(); + protected void setHash(String uuid) { + this.hash = uuid + id + inputData.hashCode(); + } + + + protected String getHash() { + return this.hash; } @@ -901,18 +900,20 @@ CacheFactory factory = CacheFactory.getInstance(); if (factory.isInitialized()) { // we use a cache + log.debug("Using cache."); Cache cache = factory.getCache(); - - String key = getHash(uuid); + String key = getHash(); net.sf.ehcache.Element value = cache.get(key); if (value != null) { // element already in cache, so return it. + log.debug("Found element in cache."); return (List<Object>) (value.getObjectValue()); } else { // element is not in cache yet, so we need to fetch data from // database and put it into cache right now + log.debug("Element not in cache, we need to ask the database"); try { String[] filterValues = generateFilterValuesFromInputData(); List<Object> data = queryDatabase(filterValues, uuid); @@ -929,6 +930,7 @@ else { // we don't use a cache, so we have to query the database every // single time + log.debug("Not using cache."); String[] filterValues = generateFilterValuesFromInputData(); Collection<Result> result = null; try {