comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/WMSKmArtifact.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 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.RiverAxisKm;
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.utils.FLYSUtils;
26
27
28 public class WMSKmArtifact extends WMSDBArtifact {
29
30 public static final String NAME = "wmskm";
31
32
33 private static final Logger logger = Logger.getLogger(WMSKmArtifact.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("WMSKmArtifact.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 WMSKmState(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
76 public static class WMSKmState extends WMSDBState implements FacetTypes {
77
78 private static final Logger logger = Logger.getLogger(WMSKmState.class);
79
80 protected Geometry geom;
81 protected int riverId;
82
83 public WMSKmState(WMSDBArtifact artifact) {
84 super(artifact);
85 riverId = 0;
86 }
87
88 public int getRiverId() {
89 if (riverId == 0) {
90 String ids = artifact.getDataAsString("ids");
91
92 try {
93 riverId = Integer.valueOf(ids);
94 }
95 catch (NumberFormatException nfe) {
96 logger.error("Cannot parse river id from '" + ids + "'");
97 }
98 }
99
100 return riverId;
101 }
102
103 @Override
104 protected String getFacetType() {
105 return FLOODMAP_KMS;
106 }
107
108 @Override
109 protected String getUrl() {
110 return FLYSUtils.getUserWMSUrl(artifact.identifier());
111 }
112
113 @Override
114 protected String getSrid() {
115 River river = RiverFactory.getRiver(getRiverId());
116 return FLYSUtils.getRiverSrid(river.getName());
117 }
118
119 @Override
120 protected Envelope getExtent() {
121 List<RiverAxisKm> kms = RiverAxisKm.getRiverAxisKms(getRiverId());
122
123 Envelope max = null;
124
125 for (RiverAxisKm km: kms) {
126 Envelope env = km.getGeom().getEnvelopeInternal();
127
128 if (max == null) {
129 max = env;
130 continue;
131 }
132
133 max.expandToInclude(env);
134 }
135
136 return max;
137 }
138
139 @Override
140 protected String getFilter() {
141 return "river_id=" + String.valueOf(getRiverId());
142 }
143
144 @Override
145 protected String getDataString() {
146 String srid = getSrid();
147
148 if (FLYSUtils.isUsingOracle()) {
149 return "geom FROM river_axes_km USING SRID " + srid;
150 }
151 else {
152 return "geom FROM river_axes_km " +
153 "USING UNIQUE id USING SRID " + srid;
154 }
155 }
156
157 @Override
158 protected String getLabelItem() {
159 return "km";
160 }
161
162 @Override
163 protected String getGeometryType() {
164 return "POINT";
165 }
166 } // end of WMSKmState
167 }
168 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org