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 :

http://dive4elements.wald.intevation.org