comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/WMSQPSArtifact.java @ 2793:6310b1582f2d

merged flys-artifacts/2.7
author Thomas Arendsen Hein <thomas@intevation.de>
date Fri, 28 Sep 2012 12:14:30 +0200
parents 0ca00d547f35
children c8f670ae96e8
comparison
equal deleted inserted replaced
2548:ada02bbd3b7f 2793:6310b1582f2d
1 package de.intevation.flys.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 de.intevation.artifacts.ArtifactFactory;
12 import de.intevation.artifacts.CallMeta;
13
14 import de.intevation.artifactdatabase.state.DefaultOutput;
15 import de.intevation.artifactdatabase.state.Facet;
16 import de.intevation.artifactdatabase.state.State;
17
18 import de.intevation.flys.model.River;
19 import de.intevation.flys.model.CrossSectionTrack;
20
21 import de.intevation.flys.artifacts.model.FacetTypes;
22 import de.intevation.flys.artifacts.model.RiverFactory;
23 import de.intevation.flys.utils.FLYSUtils;
24
25
26 public class WMSQPSArtifact extends WMSDBArtifact {
27
28 public static final String NAME = "qps";
29
30
31 private static final Logger logger =
32 Logger.getLogger(WMSQPSArtifact.class);
33
34
35 @Override
36 public void setup(
37 String identifier,
38 ArtifactFactory factory,
39 Object context,
40 CallMeta callMeta,
41 Document data)
42 {
43 logger.debug("WMSQPSArtifact.setup");
44
45 super.setup(identifier, factory, context, callMeta, data);
46 }
47
48
49 @Override
50 public String getName() {
51 return NAME;
52 }
53
54
55 @Override
56 public State getCurrentState(Object cc) {
57 State s = new WMSQPSState(this);
58
59 List<Facet> fs = facets.get(getCurrentStateId());
60
61 DefaultOutput o = new DefaultOutput(
62 "floodmap",
63 "floodmap",
64 "image/png",
65 fs,
66 "map");
67
68 s.getOutputs().add(o);
69
70 return s;
71 }
72
73
74 public static class WMSQPSState extends WMSDBState implements FacetTypes {
75
76 private static final Logger logger =
77 Logger.getLogger(WMSQPSState.class);
78
79 protected int riverId;
80
81 public WMSQPSState(WMSDBArtifact artifact) {
82 super(artifact);
83 riverId = 0;
84 }
85
86 public int getRiverId() {
87 if (riverId == 0) {
88 String ids = artifact.getDataAsString("ids");
89
90 try {
91 riverId = Integer.valueOf(ids);
92 }
93 catch (NumberFormatException nfe) {
94 logger.error("Cannot parse river id from '" + ids + "'");
95 }
96 }
97
98 return riverId;
99 }
100
101 @Override
102 protected String getFacetType() {
103 return FLOODMAP_QPS;
104 }
105
106 @Override
107 protected String getUrl() {
108 return FLYSUtils.getUserWMSUrl(artifact.identifier());
109 }
110
111 @Override
112 protected String getSrid() {
113 River river = RiverFactory.getRiver(getRiverId());
114 return FLYSUtils.getRiverSrid(river.getName());
115 }
116
117 @Override
118 protected Envelope getExtent() {
119 River river = RiverFactory.getRiver(getRiverId());
120
121 List<CrossSectionTrack> qps =
122 CrossSectionTrack.getCrossSectionTrack(river.getName());
123
124 Envelope max = null;
125
126 for (CrossSectionTrack qp: qps) {
127 Envelope env = qp.getGeom().getEnvelopeInternal();
128
129 if (max == null) {
130 max = env;
131 continue;
132 }
133
134 max.expandToInclude(env);
135 }
136
137 return max;
138 }
139
140 @Override
141 protected String getFilter() {
142 return "river_id=" + String.valueOf(getRiverId());
143 }
144
145 @Override
146 protected String getDataString() {
147 String srid = getSrid();
148
149 if (FLYSUtils.isUsingOracle()) {
150 return "geom FROM cross_section_tracks USING SRID " + srid;
151 }
152 else {
153 return "geom FROM cross_section_tracks " +
154 "USING UNIQUE id USING SRID " + srid;
155 }
156 }
157
158 @Override
159 protected String getGeometryType() {
160 return "LINE";
161 }
162 } // end of WMSQPSState
163 }
164 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org