annotate gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/vertical/VerticalProfileMeshVectorOutputState.java @ 1115:f953c9a559d8

Added license file and license headers. gnv-artifacts/trunk@1260 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 02 Nov 2010 17:46:55 +0000
parents 6f35dcd81418
children
rev   line source
1115
f953c9a559d8 Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1072
diff changeset
1 /*
f953c9a559d8 Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1072
diff changeset
2 * Copyright (c) 2010 by Intevation GmbH
f953c9a559d8 Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1072
diff changeset
3 *
f953c9a559d8 Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1072
diff changeset
4 * This program is free software under the LGPL (>=v2.1)
f953c9a559d8 Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1072
diff changeset
5 * Read the file LGPL.txt coming with the software for details
f953c9a559d8 Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1072
diff changeset
6 * or visit http://www.gnu.org/licenses/ if it does not exist.
f953c9a559d8 Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1072
diff changeset
7 */
f953c9a559d8 Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1072
diff changeset
8
1072
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9 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
10
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 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
12
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 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
14
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 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
16
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 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
18
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 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
20
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21 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
22
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 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
24
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 /**
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27 * @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
28 */
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 public class VerticalProfileMeshVectorOutputState
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 extends VerticalProfileVectorOutputState
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 {
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 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
33 "YORDINATE", "XORDINATE", "KPOSITION",
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 "GROUP1", "GROUP2", "GROUP3",
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 "DATAID", "FEATUREID", "MESHID",
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 "SERIES"
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 };
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 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
40 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
41
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 @Override
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 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
45 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
46 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
47
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 if (factory.isInitialized()) {
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 // 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
50 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
51 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
52 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
53
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54 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
55 if (value != null) {
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 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
57 return value.getObjectValue();
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 else {
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 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
61 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
62 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
63
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 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
65 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
66
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 return res;
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 else {
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 // 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
72 // single time
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 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
74 return VectorDataProcessor.process(
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 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
76 }
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77 }
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 }
6f35dcd81418 Added an output state for verticalprofiles with vector charts on meshes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org