Mercurial > dive4elements > gnv-client
comparison gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/fis/SelectProductArtifact.java @ 598:9681ac6b6527
Added the possibility to use the data which are send using the MapServer-Interface during the Workflow of the GNV-Artifacts.
gnv-artifacts/trunk@656 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Tim Englich <tim.englich@intevation.de> |
---|---|
date | Tue, 02 Feb 2010 13:12:11 +0000 |
parents | 5b9b74c08bbb |
children | 9a828e5a2390 |
comparison
equal
deleted
inserted
replaced
597:cf38b983d1f3 | 598:9681ac6b6527 |
---|---|
1 package de.intevation.gnv.artifacts.fis; | 1 package de.intevation.gnv.artifacts.fis; |
2 | 2 |
3 import java.io.IOException; | 3 import java.io.IOException; |
4 import java.io.OutputStream; | 4 import java.io.OutputStream; |
5 import java.util.Collection; | 5 import java.util.Collection; |
6 import java.util.HashMap; | |
6 import java.util.Iterator; | 7 import java.util.Iterator; |
7 import java.util.Map; | 8 import java.util.Map; |
9 | |
10 import javax.xml.xpath.XPathConstants; | |
8 | 11 |
9 import org.apache.log4j.Logger; | 12 import org.apache.log4j.Logger; |
10 import org.w3c.dom.Document; | 13 import org.w3c.dom.Document; |
11 import org.w3c.dom.Element; | 14 import org.w3c.dom.Element; |
12 import org.w3c.dom.Node; | 15 import org.w3c.dom.Node; |
16 import org.w3c.dom.NodeList; | |
13 | 17 |
14 import de.intevation.artifactdatabase.ProxyArtifact; | 18 import de.intevation.artifactdatabase.ProxyArtifact; |
15 import de.intevation.artifactdatabase.XMLUtils; | 19 import de.intevation.artifactdatabase.XMLUtils; |
16 import de.intevation.artifacts.Artifact; | 20 import de.intevation.artifacts.Artifact; |
17 import de.intevation.artifacts.ArtifactFactory; | 21 import de.intevation.artifacts.ArtifactFactory; |
19 import de.intevation.artifacts.CallContext; | 23 import de.intevation.artifacts.CallContext; |
20 import de.intevation.artifacts.CallMeta; | 24 import de.intevation.artifacts.CallMeta; |
21 import de.intevation.gnv.artifacts.GNVArtifactBase; | 25 import de.intevation.gnv.artifacts.GNVArtifactBase; |
22 import de.intevation.gnv.artifacts.GNVDefaultArtifact; | 26 import de.intevation.gnv.artifacts.GNVDefaultArtifact; |
23 import de.intevation.gnv.artifacts.GNVProductArtifactFactory; | 27 import de.intevation.gnv.artifacts.GNVProductArtifactFactory; |
28 import de.intevation.gnv.artifacts.PreSettingArtifact; | |
24 import de.intevation.gnv.artifacts.fis.product.Product; | 29 import de.intevation.gnv.artifacts.fis.product.Product; |
25 import de.intevation.gnv.artifacts.ressource.RessourceFactory; | 30 import de.intevation.gnv.artifacts.ressource.RessourceFactory; |
31 import de.intevation.gnv.state.DefaultInputData; | |
26 import de.intevation.gnv.state.InputData; | 32 import de.intevation.gnv.state.InputData; |
27 | 33 |
28 | 34 |
29 /** | 35 /** |
30 * @author Ingo Weinzierl <ingo.weinzierl@intevation.de> | 36 * @author Ingo Weinzierl <ingo.weinzierl@intevation.de> |
31 */ | 37 */ |
32 public class SelectProductArtifact extends GNVDefaultArtifact { | 38 public class SelectProductArtifact extends GNVDefaultArtifact { |
33 | 39 |
40 /** | |
41 * THE UID of this Class. | |
42 */ | |
43 private static final long serialVersionUID = -7952357683127758677L; | |
44 | |
34 public static final String XPATH_UUID = "art:action/art:uuid/@value"; | 45 public static final String XPATH_UUID = "art:action/art:uuid/@value"; |
35 | 46 |
36 public static final String XPATH_HASH = "art:action/art:hash/@value"; | 47 public static final String XPATH_HASH = "art:action/art:hash/@value"; |
37 | 48 |
38 public static final String XPATH_INPUT_DATA_VALUE = | 49 public static final String XPATH_INPUT_DATA_VALUE = |
39 "art:action/art:data/art:input[@name='product']/@value"; | 50 "art:action/art:data/art:input[@name='product']/@value"; |
51 | |
52 public static final String XPATH_SETUP_PARAMETER_NODES = | |
53 "/art:action/art:factory/art:parameter"; | |
40 | 54 |
41 public static final String XFORM_URL = "http://www.w3.org/2002/xforms"; | 55 public static final String XFORM_URL = "http://www.w3.org/2002/xforms"; |
42 public static final String XFORM_PREFIX = "xform"; | 56 public static final String XFORM_PREFIX = "xform"; |
43 | 57 |
44 private static Logger log = Logger.getLogger(SelectProductArtifact.class); | 58 private static Logger log = Logger.getLogger(SelectProductArtifact.class); |
45 | 59 |
46 private Map products; | 60 private Map products; |
47 private Product current; | 61 private Product current; |
48 private Artifact artifact; | 62 private Artifact artifact; |
49 private String name; | 63 private String name; |
64 | |
65 private Map<String, InputData> preSettings = null; | |
50 | 66 |
51 public SelectProductArtifact() { | 67 public SelectProductArtifact() { |
52 super(); | 68 super(); |
53 } | 69 } |
54 | 70 |
60 Object context, | 76 Object context, |
61 Document data) { | 77 Document data) { |
62 log.debug("SelectProductArtifact.setup()"); | 78 log.debug("SelectProductArtifact.setup()"); |
63 super.setup(identifier, factory, context,data); | 79 super.setup(identifier, factory, context,data); |
64 this.name = factory.getName(); | 80 this.name = factory.getName(); |
81 | |
82 // Read the Parameters that should be used for the setup from the | |
83 // Data-XML.Document. | |
84 NodeList parameterNodes = (NodeList) XMLUtils.xpath(data, | |
85 XPATH_SETUP_PARAMETER_NODES, | |
86 XPathConstants.NODESET, | |
87 ArtifactNamespaceContext.INSTANCE); | |
88 if (parameterNodes != null && parameterNodes.getLength() > 0){ | |
89 this.preSettings = new HashMap<String, InputData>(); | |
90 for (int i = 0; i < parameterNodes.getLength(); i++){ | |
91 Element parameterNode = (Element)parameterNodes.item(i); | |
92 String name = parameterNode.getAttribute("name"); | |
93 String value = parameterNode.getAttribute("value"); | |
94 log.debug("Name: "+name); | |
95 log.debug("Value: "+value); | |
96 InputData inputData = this.preSettings.get(name); | |
97 if (inputData == null){ | |
98 inputData = new DefaultInputData(name, value); | |
99 this.preSettings.put(name, inputData); | |
100 }else{ | |
101 inputData.concartValue(value); | |
102 } | |
103 } | |
104 } | |
105 | |
65 } | 106 } |
66 | 107 |
67 | 108 |
68 public void setProducts(Map products) { | 109 public void setProducts(Map products) { |
69 this.products = products; | 110 this.products = products; |
163 .getInternalArtifactFactory(this.name); | 204 .getInternalArtifactFactory(this.name); |
164 factory = ((GNVProductArtifactFactory)factory) | 205 factory = ((GNVProductArtifactFactory)factory) |
165 .getArtifactFactoryByName(current.getName()); | 206 .getArtifactFactoryByName(current.getName()); |
166 artifact = factory.createArtifact(uuid, context, null); | 207 artifact = factory.createArtifact(uuid, context, null); |
167 | 208 |
168 Document feedDocument = feedDocument(uuid, hash); | 209 |
210 if (this.preSettings != null && artifact instanceof PreSettingArtifact){ | |
211 ((PreSettingArtifact)artifact).setPreSettings(this.preSettings); | |
212 } | |
213 | |
169 artifact.feed(feedDocument(uuid, hash), context); | 214 artifact.feed(feedDocument(uuid, hash), context); |
170 | 215 |
171 result = ((GNVArtifactBase) artifact).initialize(context); | 216 result = ((GNVArtifactBase) artifact).initialize(context); |
172 if (artifact instanceof GNVArtifactBase) { | 217 if (artifact instanceof GNVArtifactBase) { |
173 ((GNVArtifactBase) artifact).setProduct(current); | 218 ((GNVArtifactBase) artifact).setProduct(current); |