comparison artifacts/src/main/java/org/dive4elements/river/artifacts/model/map/HWSFactory.java @ 5838:5aa05a7a34b7

Rename modules to more fitting names.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 15:23:37 +0200
parents flys-artifacts/src/main/java/org/dive4elements/river/artifacts/model/map/HWSFactory.java@bd047b71ab37
children 4897a58c8746
comparison
equal deleted inserted replaced
5837:d9901a08d0a6 5838:5aa05a7a34b7
1 package org.dive4elements.river.artifacts.model.map;
2
3 import java.util.List;
4
5 import net.sf.ehcache.Cache;
6 import net.sf.ehcache.Element;
7
8 import org.apache.log4j.Logger;
9 import org.hibernate.SQLQuery;
10 import org.hibernate.Session;
11 import org.hibernate.type.StandardBasicTypes;
12 import org.hibernatespatial.GeometryUserType;
13
14 import com.vividsolutions.jts.geom.Geometry;
15
16 import org.dive4elements.river.artifacts.cache.CacheFactory;
17 import org.dive4elements.river.backend.SessionHolder;
18
19
20 public class HWSFactory
21 {
22 /** Private logger to use here. */
23 private static Logger log = Logger.getLogger(HWSFactory.class);
24
25 private static final int HWS_LINES = 0;
26 private static final int HWS_POINTS = 1;
27
28 public static final String SQL_SELECT_LINES =
29 "SELECT hl.name, hl.geom, hl.id, hl.kind_id, hl.official, fs.name AS fed, hl.description " +
30 " FROM hws_lines hl" +
31 " JOIN rivers r ON hl.river_id = r.id" +
32 " LEFT JOIN fed_states fs ON hl.fed_state_id = fs.id" +
33 " WHERE r.name = :river";
34
35 public static final String SQL_SELECT_POINTS =
36 "SELECT hp.name, hp.geom, hp.id, hp.kind_id, hp.official, fs.name AS fed, hp.description " +
37 " FROM hws_points hp" +
38 " JOIN rivers r ON hp.river_id = r.id" +
39 " LEFT JOIN fed_states fs ON hp.fed_state_id = fs.id" +
40 " WHERE r.name = :river";
41
42
43 private HWSFactory() {
44 }
45
46
47 public static HWSContainer getHWSLines(String river) {
48 log.debug("HWSFactory.getHWS");
49 Cache cache = CacheFactory.getCache(StaticHWSCacheKey.CACHE_NAME);
50
51 StaticHWSCacheKey cacheKey;
52
53 if (cache != null) {
54 cacheKey = new StaticHWSCacheKey(river, HWS_LINES);
55 Element element = cache.get(cacheKey);
56 if (element != null) {
57 log.debug("Got static hws values from cache");
58 return (HWSContainer)element.getValue();
59 }
60 }
61 else {
62 cacheKey = null;
63 }
64
65 HWSContainer values = getHWSLinesUncached(river);
66
67 if (values != null && cacheKey != null) {
68 log.debug("Store static hws values in cache.");
69 Element element = new Element(cacheKey, values);
70 cache.put(element);
71 }
72 return values;
73 }
74
75 public static HWSContainer getHWSPoints(String river) {
76 log.debug("HWSFactory.getHWS");
77 Cache cache = CacheFactory.getCache(StaticHWSCacheKey.CACHE_NAME);
78
79 StaticHWSCacheKey cacheKey;
80
81 if (cache != null) {
82 cacheKey = new StaticHWSCacheKey(river, HWS_LINES);
83 Element element = cache.get(cacheKey);
84 if (element != null) {
85 log.debug("Got static hws values from cache");
86 return (HWSContainer)element.getValue();
87 }
88 }
89 else {
90 cacheKey = null;
91 }
92
93 HWSContainer values = getHWSPointsUncached(river);
94
95 if (values != null && cacheKey != null) {
96 log.debug("Store static hws values in cache.");
97 Element element = new Element(cacheKey, values);
98 cache.put(element);
99 }
100 return values;
101 }
102
103 private static HWSContainer getHWSLinesUncached(String river) {
104 if (log.isDebugEnabled()) {
105 log.debug("HWSFactory.getHWSLinesUncached");
106 }
107
108 Session session = SessionHolder.HOLDER.get();
109 SQLQuery sqlQuery = null;
110 HWSContainer container = new HWSContainer();
111 container.setRiver(river);
112 container.setType(HWS.TYPE.LINE);
113 sqlQuery = session.createSQLQuery(SQL_SELECT_LINES)
114 .addScalar("name", StandardBasicTypes.STRING)
115 .addScalar("geom", GeometryUserType.TYPE)
116 .addScalar("id", StandardBasicTypes.STRING)
117 .addScalar("kind_id", StandardBasicTypes.INTEGER)
118 .addScalar("official", StandardBasicTypes.INTEGER)
119 .addScalar("fed", StandardBasicTypes.STRING)
120 .addScalar("description", StandardBasicTypes.STRING);
121
122 sqlQuery.setString("river", river);
123 List<Object []> resultsLines = sqlQuery.list();
124
125 for (Object [] row: resultsLines) {
126 container.addHws(
127 new HWS(
128 (String) row[0],
129 (Geometry) row[1],
130 (String) row[2],
131 (Integer) row[3],
132 (Integer) row[4],
133 (String) row[5],
134 (String) row[6],
135 HWS.TYPE.LINE));
136 }
137
138 return container;
139 }
140
141 private static HWSContainer getHWSPointsUncached(String river) {
142 if (log.isDebugEnabled()) {
143 log.debug("HWSFactory.getHWSLinesUncached");
144 }
145
146 Session session = SessionHolder.HOLDER.get();
147 SQLQuery sqlQuery = null;
148 HWSContainer container = new HWSContainer();
149 container.setRiver(river);
150 container.setType(HWS.TYPE.LINE);
151 sqlQuery = session.createSQLQuery(SQL_SELECT_POINTS)
152 .addScalar("name", StandardBasicTypes.STRING)
153 .addScalar("geom", GeometryUserType.TYPE)
154 .addScalar("id", StandardBasicTypes.STRING)
155 .addScalar("kind_id", StandardBasicTypes.INTEGER)
156 .addScalar("official", StandardBasicTypes.INTEGER)
157 .addScalar("fed", StandardBasicTypes.STRING)
158 .addScalar("description", StandardBasicTypes.STRING);
159
160 sqlQuery.setString("river", river);
161 List<Object []> resultsPoints = sqlQuery.list();
162
163 for (int i = 0; i < resultsPoints.size(); i++) {
164 Object[] row = resultsPoints.get(i);
165 container.addHws(
166 new HWS(
167 (String) row[0],
168 (Geometry) row[1],
169 (String) row[2],
170 (Integer) row[3],
171 (Integer) row[4],
172 (String) row[5],
173 (String) row[6],
174 HWS.TYPE.POINT));
175 }
176
177 return container;
178 }
179 }

http://dive4elements.wald.intevation.org