comparison flys-artifacts/src/main/java/org/dive4elements/river/artifacts/WMSQPSArtifact.java @ 5831:bd047b71ab37

Repaired internal references
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 12:06:39 +0200
parents flys-artifacts/src/main/java/de/intevation/flys/artifacts/WMSQPSArtifact.java@948a106bc4cd
children
comparison
equal deleted inserted replaced
5830:160f53ee0870 5831:bd047b71ab37
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.CrossSectionTrack;
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 WMSQPSArtifact extends WMSDBArtifact {
28
29 public static final String NAME = "qps";
30
31
32 private static final Logger logger =
33 Logger.getLogger(WMSQPSArtifact.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("WMSQPSArtifact.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 WMSQPSState(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 WMSQPSState extends WMSDBState implements FacetTypes {
76
77 private static final Logger logger =
78 Logger.getLogger(WMSQPSState.class);
79
80 public WMSQPSState(WMSDBArtifact artifact) {
81 super(artifact);
82 }
83
84 @Override
85 protected String getFacetType() {
86 return FLOODMAP_QPS;
87 }
88
89 @Override
90 protected String getUrl() {
91 return FLYSUtils.getUserWMSUrl(artifact.identifier());
92 }
93
94 @Override
95 protected String getSrid() {
96 River river = RiverFactory.getRiver(getRiverId());
97 return FLYSUtils.getRiverSrid(river.getName());
98 }
99
100 @Override
101 protected Envelope getExtent(boolean reproject) {
102 River river = RiverFactory.getRiver(getRiverId());
103 List<CrossSectionTrack> qps;
104
105 String kind = getIdPart(2);
106
107 if (kind != null && kind.equals("1")) {
108 qps = CrossSectionTrack.getCrossSectionTrack(river.getName(),
109 Integer.parseInt(kind));
110 } else if (kind != null) {
111 qps = CrossSectionTrack.getCrossSectionTrack(river.getName(),
112 getName(), Integer.parseInt(kind));
113 } else {
114 qps = CrossSectionTrack.getCrossSectionTrack(river.getName(),
115 getName());
116 }
117
118 Envelope max = null;
119
120 for (CrossSectionTrack qp: qps) {
121 Envelope env = qp.getGeom().getEnvelopeInternal();
122
123 if (max == null) {
124 max = env;
125 continue;
126 }
127
128 max.expandToInclude(env);
129 }
130
131 return max != null && reproject
132 ? GeometryUtils.transform(max, getSrid())
133 : max;
134 }
135
136 @Override
137 protected String getFilter() {
138 String kind = getIdPart(2);
139 if (kind != null && kind.equals("1")) {
140 // There can be several layers named qps that differ in kind
141 return "river_id=" + String.valueOf(getRiverId()) +
142 " AND kind_id=" + kind;
143 } else if (kind != null) {
144 return "river_id=" + String.valueOf(getRiverId()) +
145 " AND kind_id=" + kind +
146 " AND name='" + getName() + "'";
147 }
148 return "river_id=" + String.valueOf(getRiverId()) +
149 " AND name='" + getName() + "'";
150 }
151
152 @Override
153 protected String getDataString() {
154 String srid = getSrid();
155
156 if (FLYSUtils.isUsingOracle()) {
157 return "geom FROM cross_section_tracks USING SRID " + srid;
158 }
159 else {
160 return "geom FROM cross_section_tracks " +
161 "USING UNIQUE id USING SRID " + srid;
162 }
163 }
164
165 @Override
166 protected String getGeometryType() {
167 return "LINE";
168 }
169 } // end of WMSQPSState
170 }
171 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org