comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/WMSGaugeLocationArtifact.java @ 2684:14188f8daefb

Added support for WMS gauges in floodmaps and maps. flys-artifacts/trunk@4385 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Thu, 10 May 2012 11:56:40 +0000
parents
children 0ca00d547f35
comparison
equal deleted inserted replaced
2683:f5af3adb3b95 2684:14188f8daefb
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 import com.vividsolutions.jts.geom.Geometry;
11
12 import de.intevation.artifacts.ArtifactFactory;
13 import de.intevation.artifacts.CallMeta;
14
15 import de.intevation.artifactdatabase.state.Facet;
16 import de.intevation.artifactdatabase.state.DefaultOutput;
17 import de.intevation.artifactdatabase.state.State;
18
19 import de.intevation.flys.model.River;
20 import de.intevation.flys.model.GaugeLocation;
21
22 import de.intevation.flys.artifacts.WMSDBArtifact.WMSDBState;
23 import de.intevation.flys.artifacts.model.FacetTypes;
24 import de.intevation.flys.artifacts.model.RiverFactory;
25 import de.intevation.flys.artifacts.resources.Resources;
26 import de.intevation.flys.utils.FLYSUtils;
27
28
29 public class WMSGaugeLocationArtifact extends WMSDBArtifact {
30
31 public static final String NAME = "wmsgaugelocation";
32
33
34 private static final Logger logger =
35 Logger.getLogger(WMSGaugeLocationArtifact.class);
36
37
38 @Override
39 public void setup(
40 String identifier,
41 ArtifactFactory factory,
42 Object context,
43 CallMeta callMeta,
44 Document data)
45 {
46 logger.debug("WMSGaugeLocationArtifact.setup");
47
48 super.setup(identifier, factory, context, callMeta, data);
49 }
50
51
52 @Override
53 public String getName() {
54 return NAME;
55 }
56
57
58 @Override
59 public State getCurrentState(Object cc) {
60 State s = new WMSGaugeLocationState(this);
61
62 List<Facet> fs = facets.get(getCurrentStateId());
63
64 DefaultOutput o = new DefaultOutput(
65 "floodmap",
66 "floodmap",
67 "image/png",
68 fs,
69 "map");
70
71 s.getOutputs().add(o);
72
73 return s;
74 }
75
76
77
78 public static class WMSGaugeLocationState extends WMSDBState implements FacetTypes {
79
80 private static final Logger logger =
81 Logger.getLogger(WMSGaugeLocationState.class);
82
83 protected Geometry geom;
84
85 public WMSGaugeLocationState(WMSDBArtifact artifact) {
86 super(artifact);
87 }
88
89 @Override
90 protected String getFacetType() {
91 return FLOODMAP_GAUGE_LOCATION;
92 }
93
94 @Override
95 protected String getUrl() {
96 return FLYSUtils.getUserWMSUrl(artifact.identifier());
97 }
98
99 @Override
100 protected String getSrid() {
101 River river = RiverFactory.getRiver(getRiverId());
102 return FLYSUtils.getRiverSrid(river.getName());
103 }
104
105 @Override
106 protected Envelope getExtent() {
107 List<GaugeLocation> gauges =
108 GaugeLocation.getGaugeLocations(getRiverId(), getName());
109
110 Envelope max = null;
111
112 for (GaugeLocation gauge: gauges) {
113 Envelope env = gauge.getGeom().getEnvelopeInternal();
114
115 if (max == null) {
116 max = env;
117 continue;
118 }
119
120 max.expandToInclude(env);
121 }
122
123 return max;
124 }
125
126 @Override
127 protected String getFilter() {
128 return "river_id=" + String.valueOf(getRiverId()) +
129 " and name='" + getName() + "'";
130 }
131
132 @Override
133 protected String getDataString() {
134 String srid = getSrid();
135
136 if (FLYSUtils.isUsingOracle()) {
137 return "geom FROM gauge_location USING SRID " + srid;
138 }
139 else {
140 return "geom FROM gauge_location " +
141 "USING UNIQUE id USING SRID " + srid;
142 }
143 }
144
145 @Override
146 protected String getGeometryType() {
147 return "POINT";
148 }
149 }
150 }
151 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org