annotate gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/vertical/VerticalProfileMeshVectorOutputState.java @ 1082:3c0fd3c2fd6b

Enabled histogram creation for vectorial horizontalprofiles. gnv-artifacts/trunk@1184 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 09 Jun 2010 09:58:38 +0000
parents 6f35dcd81418
children f953c9a559d8
rev   line source
1072
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.gnv.state.profile.vertical;
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 import de.intevation.artifacts.CallContext;
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
4
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
5 import de.intevation.gnv.artifacts.cache.CacheFactory;
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7 import de.intevation.gnv.geobackend.base.Result;
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9 import de.intevation.gnv.utils.VectorDataProcessor;
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import java.util.Collection;
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 import net.sf.ehcache.Cache;
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import org.apache.log4j.Logger;
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18 /**
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 */
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21 public class VerticalProfileMeshVectorOutputState
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22 extends VerticalProfileVectorOutputState
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 {
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 public static final String[] RESULT_COLUMNS = {
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 "YORDINATE", "XORDINATE", "KPOSITION",
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 "GROUP1", "GROUP2", "GROUP3",
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27 "DATAID", "FEATUREID", "MESHID",
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 "SERIES"
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 };
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 private static Logger logger =
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 Logger.getLogger(VerticalProfileMeshVectorOutputState.class);
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 @Override
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 protected Object getChartResult(String uuid, CallContext callContext) {
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 logger.debug("Fetch chart data for vertical profile with vector data.");
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 CacheFactory factory = CacheFactory.getInstance();
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 if (factory.isInitialized()) {
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 // we use a cache
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 logger.info("Using cache.");
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 Cache cache = factory.getCache();
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 String key = "chart_" + getHash();
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 net.sf.ehcache.Element value = cache.get(key);
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 if (value != null) {
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 logger.debug("Found element in cache.");
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 return value.getObjectValue();
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 }
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 else {
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 logger.debug("Element not in cache, we ask the database");
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53 Collection<Result> res = (Collection<Result>)getData(queryID);
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54 logger.debug("Got " + res.size() + " elements from db.");
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 res = VectorDataProcessor.process(res, RESULT_COLUMNS);
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 cache.put(new net.sf.ehcache.Element(key, res));
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 return res;
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 }
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 }
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62 else {
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63 // we don't use a cache, so we have to query the database every
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 // single time
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 logger.info("Not using a cache.");
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 return VectorDataProcessor.process(
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 getData(queryID), RESULT_COLUMNS);
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 }
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 }
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 }
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org