comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java @ 687:06689035024c facets-slt

Added a compute() method to WINFOArtifact which acts as a dispatcher for different computations. It triggers a calculation based on ComputeCallbacks that are generated by the current states. flys-artifacts/branches/facets-slt@2127 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Thu, 16 Jun 2011 07:50:56 +0000
parents 3dc61e00385e
children f8ac04b2dbd0
comparison
equal deleted inserted replaced
686:3dc61e00385e 687:06689035024c
28 import de.intevation.artifacts.common.utils.XMLUtils; 28 import de.intevation.artifacts.common.utils.XMLUtils;
29 29
30 import de.intevation.artifactdatabase.DefaultArtifact; 30 import de.intevation.artifactdatabase.DefaultArtifact;
31 import de.intevation.artifactdatabase.data.DefaultStateData; 31 import de.intevation.artifactdatabase.data.DefaultStateData;
32 import de.intevation.artifactdatabase.data.StateData; 32 import de.intevation.artifactdatabase.data.StateData;
33 import de.intevation.artifactdatabase.state.Facet;
33 import de.intevation.artifactdatabase.state.State; 34 import de.intevation.artifactdatabase.state.State;
34 import de.intevation.artifactdatabase.state.StateEngine; 35 import de.intevation.artifactdatabase.state.StateEngine;
35 import de.intevation.artifactdatabase.transition.TransitionEngine; 36 import de.intevation.artifactdatabase.transition.TransitionEngine;
36 37
37 import de.intevation.flys.utils.DoubleUtil; 38 import de.intevation.flys.utils.DoubleUtil;
98 protected String name; 99 protected String name;
99 100
100 /** The data that have been inserted into this artifact.*/ 101 /** The data that have been inserted into this artifact.*/
101 protected Map<String, StateData> data; 102 protected Map<String, StateData> data;
102 103
104 /** The list of facets supported by this artifact.*/
105 protected List<Facet> facets;
106
103 107
104 /** 108 /**
105 * The default constructor that creates an empty FLYSArtifact. 109 * The default constructor that creates an empty FLYSArtifact.
106 */ 110 */
107 public FLYSArtifact() { 111 public FLYSArtifact() {
108 data = new TreeMap<String, StateData>(); 112 data = new TreeMap<String, StateData>();
109 previousStateIds = new ArrayList<String>(); 113 previousStateIds = new ArrayList<String>();
114 facets = new ArrayList<Facet>();
110 } 115 }
111 116
112 117
113 /** 118 /**
114 * Returns the name of the concrete artifact. 119 * Returns the name of the concrete artifact.
1035 1040
1036 public Object compute(String key, ComputeCallback callback) { 1041 public Object compute(String key, ComputeCallback callback) {
1037 Cache cache = CacheFactory.getCache(COMPUTING_CACHE); 1042 Cache cache = CacheFactory.getCache(COMPUTING_CACHE);
1038 1043
1039 if (cache == null) { 1044 if (cache == null) {
1040 return callback.compute(); 1045 return callback.compute(facets);
1041 } 1046 }
1042 1047
1043 net.sf.ehcache.Element element = cache.get(key); 1048 net.sf.ehcache.Element element = cache.get(key);
1044 if (element != null) { 1049 if (element != null) {
1045 logger.debug("Got computation values from cache."); 1050 logger.debug("Got computation values from cache.");
1046 return element.getValue(); 1051 return element.getValue();
1047 } 1052 }
1048 1053
1049 Object result = callback.compute(); 1054 Object result = callback.compute(facets);
1050 1055
1051 if (result != null) { 1056 if (result != null) {
1052 cache.put(new net.sf.ehcache.Element(key, result)); 1057 cache.put(new net.sf.ehcache.Element(key, result));
1053 } 1058 }
1054 1059

http://dive4elements.wald.intevation.org