Mercurial > dive4elements > gnv-client
comparison gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVProductArtifactFactory.java @ 789:0dc115cbef0d
Added javadoc for artifact package.
gnv-artifacts/trunk@871 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 31 Mar 2010 09:09:05 +0000 |
parents | c4156275c1e1 |
children | 22c18083225e |
comparison
equal
deleted
inserted
replaced
788:e8a9e84a0328 | 789:0dc115cbef0d |
---|---|
25 import org.w3c.dom.Document; | 25 import org.w3c.dom.Document; |
26 import org.w3c.dom.Node; | 26 import org.w3c.dom.Node; |
27 import org.w3c.dom.NodeList; | 27 import org.w3c.dom.NodeList; |
28 | 28 |
29 /** | 29 /** |
30 * This factory is called to create a {@link | |
31 * de.intevation.gnv.artifacts.fis.SelectProductArtifact} which lets the user | |
32 * select a product supported by the selected fis. | |
33 * | |
30 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> | 34 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
31 */ | 35 */ |
32 public class GNVProductArtifactFactory extends DefaultArtifactFactory { | 36 public class GNVProductArtifactFactory extends DefaultArtifactFactory { |
33 | 37 |
38 /** | |
39 * | |
40 */ | |
34 public static final String XPATH_REPLACE_NAME = "IDENTIFIER"; | 41 public static final String XPATH_REPLACE_NAME = "IDENTIFIER"; |
35 | 42 |
43 /** | |
44 * | |
45 */ | |
36 public static final String XPATH_PRODUCT_ARTIFACT = | 46 public static final String XPATH_PRODUCT_ARTIFACT = |
37 "artifact-database/artifacts/artifact[@name='"+XPATH_REPLACE_NAME+"']"; | 47 "artifact-database/artifacts/artifact[@name='"+XPATH_REPLACE_NAME+"']"; |
38 | 48 |
49 /** | |
50 * | |
51 */ | |
39 public static final String XPATH_PRODUCT = "products/product"; | 52 public static final String XPATH_PRODUCT = "products/product"; |
40 | 53 |
54 /** | |
55 * | |
56 */ | |
41 public static final String XPATH_PRODUCT_NAME = "@name"; | 57 public static final String XPATH_PRODUCT_NAME = "@name"; |
42 | 58 |
59 /** | |
60 * | |
61 */ | |
43 public static final String XPATH_PRODUCT_FACTORY = "artifact-factory"; | 62 public static final String XPATH_PRODUCT_FACTORY = "artifact-factory"; |
44 | 63 |
64 /** | |
65 * | |
66 */ | |
45 public static final String XPATH_PRODUCT_PARAMETER = "parameters/parameter"; | 67 public static final String XPATH_PRODUCT_PARAMETER = "parameters/parameter"; |
46 | 68 |
47 private Logger logger = Logger.getLogger(GNVProductArtifactFactory.class); | 69 private Logger logger = Logger.getLogger(GNVProductArtifactFactory.class); |
48 | 70 |
49 private Map productFactories; | 71 private Map productFactories; |
50 private Map products; | 72 private Map products; |
51 | 73 |
52 | 74 |
75 /** | |
76 * Constructor. | |
77 */ | |
53 public GNVProductArtifactFactory() { | 78 public GNVProductArtifactFactory() { |
54 } | 79 } |
55 | 80 |
81 /** | |
82 * Method to create an artifact. If the created artifact is from type | |
83 * <code>ProxyArtifact</code>, a further ProductSelectArtifact is created | |
84 * which becomes embedded into the <code>ProxyArtifact</code>. | |
85 * @param identifier UUID. | |
86 * @param context CallContext. | |
87 * @param data Some data. | |
88 * @return The created artifact. | |
89 */ | |
56 @Override | 90 @Override |
57 public Artifact createArtifact(String identifier, Object context, Document data) { | 91 public Artifact createArtifact(String identifier, Object context, Document data) { |
58 | 92 |
59 // create a SelectProductArtifact for initial product selection | 93 // create a SelectProductArtifact for initial product selection |
60 Artifact artifact = super.createArtifact(identifier, context, data); | 94 Artifact artifact = super.createArtifact(identifier, context, data); |
69 } | 103 } |
70 | 104 |
71 return artifact; | 105 return artifact; |
72 } | 106 } |
73 | 107 |
108 /** | |
109 * | |
110 * @param document | |
111 * @param factoryNode | |
112 */ | |
74 @Override | 113 @Override |
75 public void setup(Document document, Node factoryNode) { | 114 public void setup(Document document, Node factoryNode) { |
76 super.setup(document, factoryNode); | 115 super.setup(document, factoryNode); |
77 | 116 |
78 String xpath = XPATH_PRODUCT_ARTIFACT.replace(XPATH_REPLACE_NAME, name); | 117 String xpath = XPATH_PRODUCT_ARTIFACT.replace(XPATH_REPLACE_NAME, name); |
96 parseProductFactories(document, productNodes); | 135 parseProductFactories(document, productNodes); |
97 } | 136 } |
98 } | 137 } |
99 | 138 |
100 | 139 |
140 /** | |
141 * | |
142 * @param name | |
143 * @return | |
144 */ | |
101 public ArtifactFactory getArtifactFactoryByName(String name) { | 145 public ArtifactFactory getArtifactFactoryByName(String name) { |
102 return (ArtifactFactory) productFactories.get(name); | 146 return (ArtifactFactory) productFactories.get(name); |
103 } | 147 } |
104 | 148 |
105 | 149 |
150 /** | |
151 * | |
152 * @param document | |
153 * @param products | |
154 */ | |
106 protected void parseProductFactories(Document document, NodeList products) { | 155 protected void parseProductFactories(Document document, NodeList products) { |
107 int items = products.getLength(); | 156 int items = products.getLength(); |
108 | 157 |
109 for(int i = 0; i < items; i++) { | 158 for(int i = 0; i < items; i++) { |
110 | 159 |
142 } | 191 } |
143 } | 192 } |
144 } | 193 } |
145 | 194 |
146 | 195 |
196 /** | |
197 * Initialize all products supported by the current fis. | |
198 * @param productNode | |
199 */ | |
147 protected void initializeProducts(Node productNode) { | 200 protected void initializeProducts(Node productNode) { |
148 String productName = (String) XMLUtils.xpath( | 201 String productName = (String) XMLUtils.xpath( |
149 productNode, "@name", XPathConstants.STRING); | 202 productNode, "@name", XPathConstants.STRING); |
150 | 203 |
151 NodeList parameterNodes = (NodeList) XMLUtils.xpath( | 204 NodeList parameterNodes = (NodeList) XMLUtils.xpath( |
171 new DefaultProduct(productName, inputParameter, this.name) | 224 new DefaultProduct(productName, inputParameter, this.name) |
172 ); | 225 ); |
173 } | 226 } |
174 } | 227 } |
175 } | 228 } |
229 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |