comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/WMSQPSArtifact.java @ 1836:729ba79e94a0

Added datacage configuration, loader (Artifact and State) and a theme for cross section tracks. flys-artifacts/trunk@3172 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 04 Nov 2011 14:09:05 +0000
parents
children 06c157848c8f
comparison
equal deleted inserted replaced
1835:35e38e2afb22 1836:729ba79e94a0
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.artifacts.resources.Resources;
24 import de.intevation.flys.utils.FLYSUtils;
25
26
27 public class WMSQPSArtifact extends WMSDBArtifact {
28
29 public static final String NAME = "qps";
30
31
32 private static final Logger logger =
33 Logger.getLogger(WMSQPSArtifact.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("WMSQPSArtifact.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 WMSQPSState(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 WMSQPSState extends WMSDBState implements FacetTypes {
76
77 private static final Logger logger =
78 Logger.getLogger(WMSQPSState.class);
79
80 protected int riverId;
81
82 public WMSQPSState(WMSDBArtifact artifact) {
83 super(artifact);
84 riverId = 0;
85 }
86
87 public int getRiverId() {
88 if (riverId == 0) {
89 String ids = artifact.getDataAsString("ids");
90
91 try {
92 riverId = Integer.valueOf(ids);
93 }
94 catch (NumberFormatException nfe) {
95 logger.error("Cannot parse river id from '" + ids + "'");
96 }
97 }
98
99 return riverId;
100 }
101
102 @Override
103 protected String getFacetType() {
104 return FLOODMAP_QPS;
105 }
106
107 @Override
108 protected String getTitle(CallMeta meta) {
109 return Resources.getMsg(meta, FLOODMAP_QPS, FLOODMAP_QPS);
110 }
111
112 @Override
113 protected String getUrl() {
114 return FLYSUtils.getUserWMSUrl(artifact.identifier());
115 }
116
117 @Override
118 protected String getSrid() {
119 River river = RiverFactory.getRiver(getRiverId());
120 return FLYSUtils.getRiverSrid(river.getName());
121 }
122
123 @Override
124 protected Envelope getExtent() {
125 River river = RiverFactory.getRiver(getRiverId());
126
127 List<CrossSectionTrack> qps =
128 CrossSectionTrack.getCrossSectionTrack(river.getName());
129
130 Envelope max = null;
131
132 for (CrossSectionTrack qp: qps) {
133 Envelope env = qp.getGeom().getEnvelopeInternal();
134
135 if (max == null) {
136 max = env;
137 continue;
138 }
139
140 max.expandToInclude(env);
141 }
142
143 return max;
144 }
145
146 @Override
147 protected String getFilter() {
148 return "river_id=" + String.valueOf(getRiverId());
149 }
150
151 @Override
152 protected String getDataString() {
153 // TODO SRID
154 return "geom FROM cross_section_tracks " +
155 "USING UNIQUE id USING SRID 31466";
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