comparison gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java @ 117:ef157bd2fa92

LanguageSupport integrated gnv-artifacts/trunk@178 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Fri, 02 Oct 2009 14:24:47 +0000
parents 158e89c2263b
children 5ebc059064a6
comparison
equal deleted inserted replaced
116:820238357bab 117:ef157bd2fa92
7 import java.io.OutputStream; 7 import java.io.OutputStream;
8 import java.util.ArrayList; 8 import java.util.ArrayList;
9 import java.util.Collection; 9 import java.util.Collection;
10 import java.util.HashMap; 10 import java.util.HashMap;
11 import java.util.Iterator; 11 import java.util.Iterator;
12 import java.util.Locale;
12 import java.util.Map; 13 import java.util.Map;
13 14
14 import org.apache.log4j.Logger; 15 import org.apache.log4j.Logger;
15 import org.w3c.dom.Document; 16 import org.w3c.dom.Document;
16 import org.w3c.dom.Element; 17 import org.w3c.dom.Element;
21 import de.intevation.artifactdatabase.DefaultArtifact; 22 import de.intevation.artifactdatabase.DefaultArtifact;
22 import de.intevation.artifactdatabase.XMLUtils; 23 import de.intevation.artifactdatabase.XMLUtils;
23 import de.intevation.artifacts.Artifact; 24 import de.intevation.artifacts.Artifact;
24 import de.intevation.artifacts.ArtifactFactory; 25 import de.intevation.artifacts.ArtifactFactory;
25 import de.intevation.artifacts.CallContext; 26 import de.intevation.artifacts.CallContext;
27 import de.intevation.artifacts.CallMeta;
26 import de.intevation.gnv.artifacts.GNVArtifactBase; 28 import de.intevation.gnv.artifacts.GNVArtifactBase;
27 import de.intevation.gnv.artifacts.context.GNVArtifactContext; 29 import de.intevation.gnv.artifacts.context.GNVArtifactContext;
28 import de.intevation.gnv.artifacts.fis.product.DefaultProduct; 30 import de.intevation.gnv.artifacts.fis.product.DefaultProduct;
29 import de.intevation.gnv.artifacts.fis.product.Product; 31 import de.intevation.gnv.artifacts.fis.product.Product;
32 import de.intevation.gnv.artifacts.ressource.RessourceFactory;
30 import de.intevation.gnv.transition.DefaultInputData; 33 import de.intevation.gnv.transition.DefaultInputData;
31 import de.intevation.gnv.transition.InputData; 34 import de.intevation.gnv.transition.InputData;
32 import de.intevation.gnv.utils.ArtifactFactoryUtilities; 35 import de.intevation.gnv.utils.ArtifactFactoryUtilities;
33 import de.intevation.gnv.utils.ArtifactXMLUtilities; 36 import de.intevation.gnv.utils.ArtifactXMLUtilities;
34 37
166 * @see de.intevation.artifactdatabase.DefaultArtifact#describe(java.lang.Object) 169 * @see de.intevation.artifactdatabase.DefaultArtifact#describe(java.lang.Object)
167 */ 170 */
168 @Override 171 @Override
169 public Document describe(CallContext context) { 172 public Document describe(CallContext context) {
170 if (this.productArtifact == null){ 173 if (this.productArtifact == null){
171 return this.createDescibeOutput(); 174 return this.createDescibeOutput(context.getMeta());
172 }else{ 175 }else{
173 Document document = this.productArtifact.describe(context); 176 Document document = this.productArtifact.describe(context);
174 document = new ArtifactXMLUtilities().reInitDocument(document); 177 document = new ArtifactXMLUtilities().reInitDocument(document);
175 Node staticNode = Config.getNodeXPath(document, "/result/ui/static"); 178 Node staticNode = Config.getNodeXPath(document, "/result/ui/static");
176 if (staticNode != null){ 179 if (staticNode != null){
177 Node staticUI = this.createSelectBox(document); 180 Node staticUI = this.createSelectBox(document, context.getMeta());
178 staticNode.insertBefore(staticUI, staticNode.getFirstChild()); 181 staticNode.insertBefore(staticUI, staticNode.getFirstChild());
179 } 182 }
180 return document; 183 return document;
181 } 184 }
182 } 185 }
266 String xpathQuery = XPATH_ARTIFACT_CONFIGURATION.replaceAll(XPATH_IDENTIFIER_REPLACE, this.name); 269 String xpathQuery = XPATH_ARTIFACT_CONFIGURATION.replaceAll(XPATH_IDENTIFIER_REPLACE, this.name);
267 log.debug(xpathQuery); 270 log.debug(xpathQuery);
268 return Config.getNodeXPath(document,xpathQuery); 271 return Config.getNodeXPath(document,xpathQuery);
269 } 272 }
270 273
271 protected Document createDescibeOutput(){ 274 protected Document createDescibeOutput(CallMeta callMeta){
272 log.debug("GNVArtifactBase.createDescibeOutput"); 275 log.debug("GNVArtifactBase.createDescibeOutput");
273 Document document = XMLUtils.newDocument(); 276 Document document = XMLUtils.newDocument();
274 Element rootNode = this.createRootNode(document); 277 Element rootNode = this.createRootNode(document);
275 this.createHeader(rootNode, document, "describe"); 278 this.createHeader(rootNode, document, "describe");
276 this.createOutputs(rootNode, document); 279 this.createOutputs(rootNode, document);
277 this.createCurrentState(rootNode, document); 280 this.createCurrentState(rootNode, document);
278 this.createReachableStates(rootNode, document); 281 this.createReachableStates(rootNode, document);
279 this.createModel(rootNode, document); 282 this.createModel(rootNode, document);
280 this.createUserInterface(rootNode, document); 283 this.createUserInterface(rootNode, document, callMeta);
281 284
282 return document; 285 return document;
283 } 286 }
284 287
285 protected Element createRootNode(Document document){ 288 protected Element createRootNode(Document document){
335 modelNode.appendChild(inputNode); 338 modelNode.appendChild(inputNode);
336 339
337 parent.appendChild(modelNode); 340 parent.appendChild(modelNode);
338 } 341 }
339 342
340 protected void createUserInterface(Element parent, Document document){ 343 protected void createUserInterface(Element parent, Document document, CallMeta callMeta){
341 Element uiNode = xmlUtilities.createArtifactElement(document,"ui"); 344 Element uiNode = xmlUtilities.createArtifactElement(document,"ui");
342 ArtifactXMLUtilities xmlUtilities = new ArtifactXMLUtilities(); 345 ArtifactXMLUtilities xmlUtilities = new ArtifactXMLUtilities();
343 Node dynamic = xmlUtilities.createArtifactElement(document, "dynamic"); 346 Node dynamic = xmlUtilities.createArtifactElement(document, "dynamic");
344 uiNode.appendChild(dynamic); 347 uiNode.appendChild(dynamic);
345 if (this.products != null && !this.products.isEmpty()){ 348 if (this.products != null && !this.products.isEmpty()){
346 Element selectNode = createSelectBox(document); 349 Element selectNode = createSelectBox(document,callMeta);
347 350
348 dynamic.appendChild(selectNode); 351 dynamic.appendChild(selectNode);
349 } 352 }
350 353
351 parent.appendChild(uiNode); 354 parent.appendChild(uiNode);
353 /** 356 /**
354 * @param document 357 * @param document
355 * @param xmlUtilities 358 * @param xmlUtilities
356 * @return 359 * @return
357 */ 360 */
358 private Element createSelectBox(Document document) { 361 private Element createSelectBox(Document document, CallMeta callMeta) {
362 Locale locale = callMeta.getPreferredLocale(RessourceFactory.getInstance().getSupportedLocales());
359 ArtifactXMLUtilities xmlUtilities = new ArtifactXMLUtilities(); 363 ArtifactXMLUtilities xmlUtilities = new ArtifactXMLUtilities();
360 String selectboxName = "product"; 364 String selectboxName = "product";
361 Iterator<Product> it = this.products.values().iterator(); 365 Iterator<Product> it = this.products.values().iterator();
362 Element selectNode = xmlUtilities.createXFormElement(document,"select1"); 366 Element selectNode = xmlUtilities.createXFormElement(document,"select1");
363 selectNode.setAttribute("ref", selectboxName); 367 selectNode.setAttribute("ref", selectboxName);
364 368
365 369
366 Element lableNode = xmlUtilities.createXFormElement(document, "label"); 370 Element lableNode = xmlUtilities.createXFormElement(document, "label");
367 lableNode.setTextContent(selectboxName); 371 lableNode.setTextContent(RessourceFactory.getInstance().getRessource(locale, selectboxName, selectboxName));
368 selectNode.appendChild(lableNode); 372 selectNode.appendChild(lableNode);
369 Element choiceNode = xmlUtilities.createXFormElement(document, "choices"); 373 Element choiceNode = xmlUtilities.createXFormElement(document, "choices");
370 selectNode.appendChild(choiceNode); 374 selectNode.appendChild(choiceNode);
371 while (it.hasNext()){ 375 while (it.hasNext()){
372 Product p = it.next(); 376 Product p = it.next();
375 if (this.current != null && this.current.getName().equals(p.getName())){ 379 if (this.current != null && this.current.getName().equals(p.getName())){
376 itemNode.setAttribute("selected", "true"); 380 itemNode.setAttribute("selected", "true");
377 } 381 }
378 382
379 Element choiceLableNode = xmlUtilities.createXFormElement(document, "label"); 383 Element choiceLableNode = xmlUtilities.createXFormElement(document, "label");
380 choiceLableNode.setTextContent(p.getName()); 384 choiceLableNode.setTextContent(RessourceFactory.getInstance().getRessource(locale, p.getName(), p.getName()));
381 itemNode.appendChild(choiceLableNode); 385 itemNode.appendChild(choiceLableNode);
382 386
383 Element choicValueNode = xmlUtilities.createXFormElement(document, "value"); 387 Element choicValueNode = xmlUtilities.createXFormElement(document, "value");
384 choicValueNode.setTextContent(p.getName()); 388 choicValueNode.setTextContent(p.getName());
385 itemNode.appendChild(choicValueNode); 389 itemNode.appendChild(choicValueNode);

http://dive4elements.wald.intevation.org