Mercurial > dive4elements > river
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 |