comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/RiverAxisArtifact.java @ 3318:dbe2f85bf160

merged flys-artifacts/2.8
author Thomas Arendsen Hein <thomas@intevation.de>
date Fri, 28 Sep 2012 12:14:35 +0200
parents c8f670ae96e8
children b0ba96bbf01d
comparison
equal deleted inserted replaced
2987:98c7a46ec5ae 3318:dbe2f85bf160
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.DefaultOutput;
16 import de.intevation.artifactdatabase.state.Facet;
17 import de.intevation.artifactdatabase.state.State;
18
19 import de.intevation.flys.model.River;
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 RiverAxisArtifact extends WMSDBArtifact {
28
29 public static final String NAME = "riveraxis";
30
31
32 private static final Logger logger =
33 Logger.getLogger(RiverAxisArtifact.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("RiverAxisArtifact.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 RiverAxisState(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 RiverAxisState extends WMSDBState implements FacetTypes
76 {
77 private static final Logger logger =
78 Logger.getLogger(RiverAxisState.class);
79
80 protected Geometry geom;
81 protected int riverId;
82
83 public RiverAxisState(){}
84
85 public RiverAxisState(FLYSArtifact artifact) {
86 super(artifact);
87 riverId = 0;
88 }
89
90 public int getRiverId() {
91 if (riverId == 0) {
92 String ids = artifact.getDataAsString("ids");
93
94 try {
95 riverId = Integer.valueOf(ids);
96 }
97 catch (NumberFormatException nfe) {
98 logger.error("Cannot parse river id from '" + ids + "'");
99 }
100 }
101
102 return riverId;
103 }
104
105 @Override
106 protected String getFacetType() {
107 return FLOODMAP_RIVERAXIS;
108 }
109
110 @Override
111 protected String getUrl() {
112 return FLYSUtils.getUserWMSUrl(artifact.identifier());
113 }
114
115 @Override
116 protected String getSrid() {
117 River river = RiverFactory.getRiver(getRiverId());
118 return FLYSUtils.getRiverSrid(river.getName());
119 }
120
121 @Override
122 protected Envelope getExtent() {
123 River river = RiverFactory.getRiver(getRiverId());
124 return GeometryUtils.transform(
125 GeometryUtils.getRiverBoundary(river.getName()),
126 getSrid());
127 }
128
129 @Override
130 protected String getFilter() {
131 return "river_id=" + String.valueOf(getRiverId());
132 }
133
134 @Override
135 protected String getDataString() {
136 String srid = getSrid();
137
138 if (FLYSUtils.isUsingOracle()) {
139 return "geom FROM river_axes USING SRID " + srid;
140 }
141 else {
142 return "geom FROM river_axes USING UNIQUE id USING SRID " + srid;
143 }
144 }
145
146 @Override
147 protected String getGeometryType() {
148 return "LINE";
149 }
150 } // end of WMSKmState
151 }
152 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org