comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/WMSFloodmarksArtifact.java @ 5552:559a009b3d72

Add missing classes for Floodmark, WMSFloodmarksArtifact and WMSJettiesArtifact
author Andre Heinecke <aheinecke@intevation.de>
date Thu, 04 Apr 2013 11:00:47 +0200
parents
children
comparison
equal deleted inserted replaced
5551:0e5c17c7cfc4 5552:559a009b3d72
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.Floodmark;
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 import de.intevation.flys.utils.GeometryUtils;
25
26
27 public class WMSFloodmarksArtifact extends WMSDBArtifact {
28
29 public static final String NAME = "floodmarks";
30
31
32 private static final Logger logger =
33 Logger.getLogger(WMSFloodmarksArtifact.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("WMSFloodmarksArtifact.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 FloodmarksState(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 FloodmarksState extends WMSDBState implements FacetTypes
76 {
77 private static final Logger logger =
78 Logger.getLogger(FloodmarksState.class);
79
80 protected int riverId;
81
82 public FloodmarksState(WMSDBArtifact artifact) {
83 super(artifact);
84 }
85
86 @Override
87 protected String getFacetType() {
88 return FLOODMAP_FLOODMARKS;
89 }
90
91 @Override
92 protected String getUrl() {
93 return FLYSUtils.getUserWMSUrl(artifact.identifier());
94 }
95
96 @Override
97 protected String getSrid() {
98 River river = RiverFactory.getRiver(getRiverId());
99 return FLYSUtils.getRiverSrid(river.getName());
100 }
101
102 @Override
103 protected Envelope getExtent(boolean reproject) {
104 String year = getIdPart(2);
105 List<Floodmark> floodmarks;
106 if (year != null) {
107 floodmarks = Floodmark.getFloodmarks(getRiverId(),
108 Integer.parseInt(year));
109 } else {
110 floodmarks = Floodmark.getFloodmarks(getRiverId());
111 }
112
113 Envelope max = null;
114
115 for (Floodmark f: floodmarks) {
116 Envelope env = f.getGeom().getEnvelopeInternal();
117
118 if (max == null) {
119 max = env;
120 continue;
121 }
122
123 max.expandToInclude(env);
124 }
125
126 return max != null && reproject
127 ? GeometryUtils.transform(max, getSrid())
128 : max;
129 }
130
131 @Override
132 protected String getFilter() {
133 String year = getIdPart(2);
134 if (year != null) {
135 return "river_id=" + String.valueOf(getRiverId()) +
136 " AND year=" + getIdPart(2);
137 }
138 return "river_id=" + String.valueOf(getRiverId());
139 }
140
141 @Override
142 protected String getDataString() {
143 String srid = getSrid();
144
145 if (FLYSUtils.isUsingOracle()) {
146 return "geom FROM flood_marks USING SRID " + srid;
147 }
148 else {
149 return "geom FROM flood_marks USING UNIQUE id USING SRID " + srid;
150 }
151 }
152
153 @Override
154 protected String getGeometryType() {
155 return "POINT";
156 }
157 } // end of WMSKmState
158 }
159 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org