comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/WMSHydrBoundaryPolyArtifact.java @ 2683:f5af3adb3b95

Improved datacage configuration for floodmaps and maps and modified the WMS layer artifacts to support names for layers. flys-artifacts/trunk@4383 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Thu, 10 May 2012 11:14:17 +0000
parents
children 0ca00d547f35
comparison
equal deleted inserted replaced
2682:0795c296f718 2683:f5af3adb3b95
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.HydrBoundaryPoly;
20
21 import de.intevation.flys.artifacts.model.FacetTypes;
22 import de.intevation.flys.artifacts.model.RiverFactory;
23 import de.intevation.flys.artifacts.resources.Resources;
24 import de.intevation.flys.utils.FLYSUtils;
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 = facets.get(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() {
105 List<HydrBoundaryPoly> boundaries = HydrBoundaryPoly.getHydrBoundaries(
106 getRiverId(), getName());
107
108 Envelope max = null;
109
110 for (HydrBoundaryPoly b: boundaries) {
111 Envelope env = b.getGeom().getEnvelopeInternal();
112
113 if (max == null) {
114 max = env;
115 continue;
116 }
117
118 max.expandToInclude(env);
119 }
120
121 return max;
122 }
123
124 @Override
125 protected String getFilter() {
126 return "river_id=" + String.valueOf(getRiverId())
127 + " AND name='" + getName() + "'";
128 }
129
130 @Override
131 protected String getDataString() {
132 String srid = getSrid();
133
134 if (FLYSUtils.isUsingOracle()) {
135 return "geom FROM hydr_boundaries USING SRID " + srid;
136 }
137 else {
138 return "geom FROM hydr_boundaries USING UNIQUE id USING SRID " + srid;
139 }
140 }
141
142 @Override
143 protected String getGeometryType() {
144 return "POLYGON";
145 }
146 } // end of HydrBoundaryState
147 }
148 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org