Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/org/dive4elements/river/artifacts/MapArtifact.java @ 5831:bd047b71ab37
Repaired internal references
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 12:06:39 +0200 |
parents | flys-artifacts/src/main/java/de/intevation/flys/artifacts/MapArtifact.java@da3101abc9da |
children |
comparison
equal
deleted
inserted
replaced
5830:160f53ee0870 | 5831:bd047b71ab37 |
---|---|
1 package org.dive4elements.river.artifacts; | |
2 | |
3 import org.dive4elements.artifactdatabase.ProtocolUtils; | |
4 import org.dive4elements.artifactdatabase.state.Facet; | |
5 import org.dive4elements.artifactdatabase.state.Output; | |
6 import org.dive4elements.artifactdatabase.state.State; | |
7 import org.dive4elements.artifactdatabase.state.StateEngine; | |
8 import org.dive4elements.artifacts.ArtifactFactory; | |
9 import org.dive4elements.artifacts.CallContext; | |
10 import org.dive4elements.artifacts.CallMeta; | |
11 import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator; | |
12 import org.dive4elements.river.artifacts.RiverAxisArtifact.RiverAxisState; | |
13 import org.dive4elements.river.artifacts.context.FLYSContext; | |
14 import org.dive4elements.river.artifacts.model.map.WMSDBLayerFacet; | |
15 import org.dive4elements.river.artifacts.states.DefaultState; | |
16 import org.dive4elements.river.model.River; | |
17 import org.dive4elements.river.utils.FLYSUtils; | |
18 import org.dive4elements.river.utils.MapUtils; | |
19 | |
20 import java.util.List; | |
21 | |
22 import org.apache.log4j.Logger; | |
23 import org.w3c.dom.Document; | |
24 import org.w3c.dom.Element; | |
25 | |
26 | |
27 public class MapArtifact extends FLYSArtifact { | |
28 | |
29 private static final Logger logger = | |
30 Logger.getLogger(MapArtifact.class); | |
31 | |
32 @Override | |
33 public void setup( | |
34 String identifier, | |
35 ArtifactFactory factory, | |
36 Object context, | |
37 CallMeta callmeta, | |
38 Document data) | |
39 { | |
40 logger.debug("MapArtifact.setup"); | |
41 this.identifier = identifier; | |
42 name = "new_map"; | |
43 | |
44 List<State> states = getStates(context); | |
45 | |
46 setCurrentState(states.get(0)); | |
47 } | |
48 | |
49 | |
50 @Override | |
51 protected void appendBackgroundActivity( | |
52 ElementCreator cr, | |
53 Element root, | |
54 CallContext context | |
55 ) { | |
56 Element inBackground = cr.create("background-processing"); | |
57 root.appendChild(inBackground); | |
58 | |
59 cr.addAttr( | |
60 inBackground, | |
61 "value", | |
62 String.valueOf(context.isInBackground()), | |
63 true); | |
64 } | |
65 | |
66 | |
67 /** | |
68 * Append output mode nodes to a document. | |
69 */ | |
70 @Override | |
71 protected void appendOutputModes( | |
72 Document doc, | |
73 Element outs, | |
74 CallContext context, | |
75 String uuid) | |
76 { | |
77 List<String> stateIds = getPreviousStateIds(); | |
78 | |
79 FLYSContext flysContext = FLYSUtils.getFlysContext(context); | |
80 StateEngine engine = (StateEngine) flysContext.get( | |
81 FLYSContext.STATE_ENGINE_KEY); | |
82 | |
83 for (String stateId: stateIds) { | |
84 logger.debug("Append output modes for state: " + stateId); | |
85 DefaultState state = (DefaultState) engine.getState(stateId); | |
86 | |
87 List<Output> list = state.getOutputs(); | |
88 if (list == null || list.isEmpty()) { | |
89 logger.debug("-> No output modes for this state."); | |
90 continue; | |
91 } | |
92 | |
93 List<Facet> fs = getFacets(stateId); | |
94 | |
95 if (fs == null || fs.isEmpty()) { | |
96 logger.debug("No facets for previous state found."); | |
97 continue; | |
98 } | |
99 | |
100 logger.debug("Found " + fs.size() + " facets in previous states."); | |
101 | |
102 List<Output> generated = generateOutputs(list, fs); | |
103 | |
104 ProtocolUtils.appendOutputModes(doc, outs, generated); | |
105 } | |
106 | |
107 try { | |
108 DefaultState cur = (DefaultState) getCurrentState(context); | |
109 if (cur.validate(this)) { | |
110 List<Output> list = cur.getOutputs(); | |
111 if (list != null && list.size() > 0) { | |
112 logger.debug( | |
113 "Append output modes for current state: " + cur.getID()); | |
114 | |
115 List<Facet> fs = getFacets(cur.getID()); | |
116 | |
117 if (fs != null && fs.size() > 0) { | |
118 List<Output> generated = generateOutputs(list, fs); | |
119 | |
120 logger.debug("Found " + fs.size() + " current facets."); | |
121 if (!generated.isEmpty()) { | |
122 ProtocolUtils.appendOutputModes( | |
123 doc, outs, generated); | |
124 } | |
125 } | |
126 else { | |
127 logger.debug("No facets found for the current state."); | |
128 } | |
129 } | |
130 } | |
131 } | |
132 catch (IllegalArgumentException iae) { | |
133 // state is not valid, so we do not append its outputs. | |
134 } | |
135 } | |
136 | |
137 public static class MapState extends RiverAxisState { | |
138 | |
139 @Override | |
140 public Object computeAdvance( | |
141 FLYSArtifact artifact, | |
142 String hash, | |
143 CallContext context, | |
144 List<Facet> facets, | |
145 Object old) | |
146 { | |
147 logger.debug("MapState.computeAdvance"); | |
148 | |
149 this.artifact = artifact; | |
150 | |
151 String type = getFacetType(); | |
152 | |
153 WMSDBLayerFacet facet = new WMSDBLayerFacet( | |
154 0, | |
155 type, | |
156 getTitle(context.getMeta()), | |
157 ComputeType.ADVANCE, | |
158 getID(), hash, | |
159 getUrl()); | |
160 | |
161 String name = artifact.getDataAsString("river"); | |
162 | |
163 facet.addLayer(name); | |
164 facet.setExtent(getExtent(false)); | |
165 facet.setOriginalExtent(getExtent(true)); | |
166 facet.setSrid(getSrid()); | |
167 facet.setData(getDataString()); | |
168 facet.setFilter(getFilter()); | |
169 facet.setGeometryType(getGeometryType()); | |
170 facet.setConnection(MapUtils.getConnection()); | |
171 facet.setConnectionType(MapUtils.getConnectionType()); | |
172 facet.setLabelItem(getLabelItem()); | |
173 | |
174 facets.add(facet); | |
175 | |
176 return null; | |
177 } | |
178 | |
179 @Override | |
180 public int getRiverId() { | |
181 River r = FLYSUtils.getRiver(artifact); | |
182 int riverId = r.getId(); | |
183 | |
184 return riverId; | |
185 } | |
186 } | |
187 } | |
188 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |