comparison artifacts/src/main/java/org/dive4elements/river/artifacts/WMSHydrBoundaryPolyArtifact.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/WMSHydrBoundaryPolyArtifact.java@bd047b71ab37
children 4897a58c8746
comparison
equal deleted inserted replaced
5837:d9901a08d0a6 5838:5aa05a7a34b7
1 package org.dive4elements.river.artifacts;
2
3 import java.util.List;
4
5 import org.w3c.dom.Document;
6
7 import org.apache.log4j.Logger;
8
9 import com.vividsolutions.jts.geom.Envelope;
10
11 import org.dive4elements.artifacts.ArtifactFactory;
12 import org.dive4elements.artifacts.CallMeta;
13
14 import org.dive4elements.artifactdatabase.state.DefaultOutput;
15 import org.dive4elements.artifactdatabase.state.Facet;
16 import org.dive4elements.artifactdatabase.state.State;
17
18 import org.dive4elements.river.model.River;
19 import org.dive4elements.river.model.HydrBoundaryPoly;
20
21 import org.dive4elements.river.artifacts.model.FacetTypes;
22 import org.dive4elements.river.artifacts.model.RiverFactory;
23 import org.dive4elements.river.utils.FLYSUtils;
24 import org.dive4elements.river.utils.GeometryUtils;
25
26
27 public class WMSHydrBoundaryPolyArtifact extends WMSDBArtifact {
28
29 public static final String NAME = "hydr_boundary_poly";
30
31
32 private static final Logger logger =
33 Logger.getLogger(WMSHydrBoundaryPolyArtifact.class);
34
35
36 @Override
37 public void setup(
38 String identifier,
39 ArtifactFactory factory,
40 Object context,
41 CallMeta callMeta,
42 Document data)
43 {
44 logger.debug("WMSHydrBoundaryArtifact.setup");
45
46 super.setup(identifier, factory, context, callMeta, data);
47 }
48
49
50 @Override
51 public String getName() {
52 return NAME;
53 }
54
55
56 @Override
57 public State getCurrentState(Object cc) {
58 State s = new HydrBoundaryPolyState(this);
59
60 List<Facet> fs = getFacets(getCurrentStateId());
61
62 DefaultOutput o = new DefaultOutput(
63 "floodmap",
64 "floodmap",
65 "image/png",
66 fs,
67 "map");
68
69 s.getOutputs().add(o);
70
71 return s;
72 }
73
74
75 public static class HydrBoundaryPolyState extends WMSDBState implements FacetTypes
76 {
77 private static final Logger logger =
78 Logger.getLogger(HydrBoundaryPolyState.class);
79
80 protected int riverId;
81
82 public HydrBoundaryPolyState(WMSDBArtifact artifact) {
83 super(artifact);
84 riverId = 0;
85 }
86
87 @Override
88 protected String getFacetType() {
89 return FLOODMAP_HYDR_BOUNDARY_POLY;
90 }
91
92 @Override
93 protected String getUrl() {
94 return FLYSUtils.getUserWMSUrl(artifact.identifier());
95 }
96
97 @Override
98 protected String getSrid() {
99 River river = RiverFactory.getRiver(getRiverId());
100 return FLYSUtils.getRiverSrid(river.getName());
101 }
102
103 @Override
104 protected Envelope getExtent(boolean reproject) {
105 String kind = getIdPart(2);
106 String sectie = getIdPart(3);
107 String sobek = getIdPart(4);
108 int kindId = -1;
109 int sectieId = -1;
110 int sobekId = -1;
111
112 if (kind != null) {
113 kindId = Integer.parseInt(kind);
114 }
115 if (sectie != null && !sectie.equals("-1")) {
116 sectieId = Integer.parseInt(sectie);
117 }
118 if (sobek != null && !sobek.equals("-1")) {
119 sobekId = Integer.parseInt(sobek);
120 }
121
122 List<HydrBoundaryPoly> boundaries;
123 if (kindId == -1 && sobekId == -1 && sectieId == -1) {
124 boundaries = HydrBoundaryPoly.getHydrBoundaries(
125 getRiverId(), getName());
126 } else {
127 boundaries = HydrBoundaryPoly.getHydrBoundaries(
128 getRiverId(), kindId, sectieId, sobekId);
129 }
130
131 Envelope max = null;
132
133 for (HydrBoundaryPoly b: boundaries) {
134 Envelope env = b.getGeom().getEnvelopeInternal();
135
136 if (max == null) {
137 max = env;
138 continue;
139 }
140
141 max.expandToInclude(env);
142 }
143
144 return max != null && reproject
145 ? GeometryUtils.transform(max, getSrid())
146 : max;
147 }
148
149 @Override
150 protected String getFilter() {
151 // Expected id string:
152 // river_id;layer_name;kind;sectie;sobek
153 String kind = getIdPart(2);
154 String sectie = getIdPart(3);
155 String sobek = getIdPart(4);
156
157 String filter = "";
158 if (kind != null && !kind.equals("-1")) {
159 filter += " AND kind = " + kind;
160 }
161 if (sectie != null && !sectie.equals("-1")) {
162 filter += " AND sectie = " + sectie;
163 }
164 if (sobek != null && !sobek.equals("-1")) {
165 filter += " AND sobek = " + sobek;
166 }
167
168 if (filter.isEmpty()) {
169 filter = " AND name='" + getName() + "'";
170 }
171
172 return "river_id=" + String.valueOf(getRiverId())
173 + filter;
174 }
175
176 @Override
177 protected String getDataString() {
178 String srid = getSrid();
179
180 if (FLYSUtils.isUsingOracle()) {
181 return "geom FROM hydr_boundaries_poly USING SRID " + srid;
182 }
183 else {
184 return "geom FROM hydr_boundaries_poly USING UNIQUE id USING SRID " + srid;
185 }
186 }
187
188 @Override
189 protected String getGeometryType() {
190 return "POLYGON";
191 }
192 } // end of HydrBoundaryState
193 }
194 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org