Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/transition/TransitionBase.java @ 207:d87347142702
Store the Results of an Artifact not in the Artifact but in an ehcache instance. issue3
gnv-artifacts/trunk@263 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Tim Englich <tim.englich@intevation.de> |
---|---|
date | Fri, 23 Oct 2009 08:50:50 +0000 |
parents | 734ac082c8d1 |
children | ee2d4134d0b3 |
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/transition/TransitionBase.java Fri Oct 23 07:37:39 2009 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/TransitionBase.java Fri Oct 23 08:50:50 2009 +0000 @@ -23,6 +23,7 @@ import de.intevation.artifactdatabase.Config; import de.intevation.artifacts.CallMeta; import de.intevation.gnv.artifacts.GNVArtifactBase; +import de.intevation.gnv.artifacts.cache.CacheFactory; import de.intevation.gnv.artifacts.ressource.RessourceFactory; import de.intevation.gnv.geobackend.base.Result; import de.intevation.gnv.geobackend.base.query.QueryExecutor; @@ -54,6 +55,8 @@ * the logger, used to log exceptions and additonaly information */ private static Logger log = Logger.getLogger(GNVArtifactBase.class); + + private final static String DESCRIBEDATAKEY = "_DESCRIBEDATA"; private String id = null; @@ -74,8 +77,7 @@ private Transition parent = null; protected Map<String, InputData> inputData = null; - - protected Collection<Object> descibeData = null; + /** * Constructor @@ -205,7 +207,7 @@ boolean valid = iv.isInputValid(tmpItem.getValue(), inputValue.getType()); if (valid) { - this.setSelection(tmpItem); + this.setSelection(tmpItem, uuid); this.inputData.put(tmpItem.getName(), tmpItem); } else { String errMsg = "Wrong input for " + tmpItem.getValue() @@ -227,10 +229,10 @@ } } - private void setSelection(InputData inputData) { + private void setSelection(InputData inputData, String uuid) { log.debug("TransitionBase.setSelection"); - Object o = this.getDescribeData(inputData.getName()); + Object o = this.getDescribeData(inputData.getName(),uuid); if (o != null) { if (o instanceof Collection<?>) { Collection<KeyValueDescibeData> values = (Collection<KeyValueDescibeData>) o; @@ -264,10 +266,11 @@ } } - private Object getDescribeData(String name) { + private Object getDescribeData(String name, String uuid) { log.debug("TransitionBase.getDescribeData"); - if (this.descibeData != null) { - Iterator<Object> it = this.descibeData.iterator(); + Collection<Object> descibeData = this.getDescibeData(uuid); + if (descibeData != null) { + Iterator<Object> it = descibeData.iterator(); while (it.hasNext()) { Object o = it.next(); if (o instanceof NamedCollection<?>) { @@ -407,11 +410,13 @@ */ protected void purifyResult(Collection<Result> result, String uuid) { log.debug("TransitionBase.purifyResult"); - if (this.descibeData == null) { - this.descibeData = new ArrayList<Object>(); + Collection<Object> describeData = this.getDescibeData(uuid); + if (describeData == null) { + describeData = new ArrayList<Object>(); } NamedCollection<KeyValueDescibeData> keyValueDescibeData = extractKVP(result, "KEY", "VALUE"); - this.descibeData.add(keyValueDescibeData); + describeData.add(keyValueDescibeData); + this.setDescibeData(uuid, describeData); } /** @@ -436,13 +441,15 @@ /** * @see de.intevation.gnv.transition.Transition#describe(org.w3c.dom.Document, - * org.w3c.dom.Node, de.intevation.artifacts.CallMeta) + * org.w3c.dom.Node, de.intevation.artifacts.CallMeta, + * java.lang.String) */ - public void describe(Document document, Node rootNode, CallMeta callMeta) { + public void describe(Document document, Node rootNode, CallMeta callMeta,String uuid) { log.debug("TransitionBase.describe"); - if (this.descibeData != null) { + Collection<Object> descibeData = this.getDescibeData(uuid); + if (descibeData != null) { ArtifactXMLUtilities xmlutilities = new ArtifactXMLUtilities(); - Iterator<Object> it = this.descibeData.iterator(); + Iterator<Object> it = descibeData.iterator(); Node staticNode = xmlutilities.createArtifactElement(document, "static"); Node dynamic = xmlutilities.createArtifactElement(document, @@ -507,9 +514,9 @@ } } else if (o instanceof MinMaxDescribeData) { - MinMaxDescribeData descibeData = (MinMaxDescribeData) o; - Object min = descibeData.getMinValue(); - Object max = descibeData.getMaxValue(); + MinMaxDescribeData minMaxDescibeData = (MinMaxDescribeData) o; + Object min = minMaxDescibeData.getMinValue(); + Object max = minMaxDescibeData.getMaxValue(); if (min instanceof GregorianCalendar) { Date d = ((GregorianCalendar) min).getTime(); min = DateUtils.getPatternedDateAmer(d); @@ -522,14 +529,14 @@ Element groupNode = xmlutilities.createXFormElement( document, "group"); - groupNode.setAttribute("ref", descibeData.getMinName()); + groupNode.setAttribute("ref", minMaxDescibeData.getMinName()); Element groupNodeLableNode = xmlutilities .createXFormElement(document, "label"); groupNodeLableNode.setTextContent(RessourceFactory .getInstance().getRessource( callMeta.getLanguages(), - descibeData.getMinName(), - descibeData.getMinName())); + minMaxDescibeData.getMinName(), + minMaxDescibeData.getMinName())); groupNode.appendChild(groupNodeLableNode); Element inputMinNode = xmlutilities.createXFormElement( @@ -617,16 +624,28 @@ /** * @see de.intevation.gnv.transition.Transition#getDescibeData() */ - public Collection<Object> getDescibeData() { - return this.descibeData; + protected Collection<Object> getDescibeData(String uuid) { + if (CacheFactory.getInstance().isInitialized()) { + String key = uuid + DESCRIBEDATAKEY; + log.debug("Hash for Queryelements: " + key); + net.sf.ehcache.Element value = CacheFactory.getInstance().getCache().get(key); + if (value != null) { + return (Collection<Object>) (value.getObjectValue()); + } + } + return null; } - + /** - * @see de.intevation.gnv.transition.Transition#setDescibeData(java.util.Collection) + * @see de.intevation.gnv.transition.Transition#getDescibeData() */ - public void setDescibeData(Collection<Object> descibeData) { - this.descibeData = descibeData; - + protected void setDescibeData(String uuid, Collection<Object> describeData) { + + if (CacheFactory.getInstance().isInitialized()) { + String key = uuid + DESCRIBEDATAKEY; + log.debug("Hash for Queryelements: " + key); + CacheFactory.getInstance().getCache().put(new net.sf.ehcache.Element(key, describeData)); + } } /**