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);

http://dive4elements.wald.intevation.org