comparison flys-client/src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java @ 803:653ae84533e7

Read/create recommended Artifacts and add them to the current Collection. flys-client/trunk@2350 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 18 Jul 2011 09:52:16 +0000
parents a078ba1c139d
children 6f65e70fa11d
comparison
equal deleted inserted replaced
802:d45ad7fd3027 803:653ae84533e7
4 import java.util.List; 4 import java.util.List;
5 5
6 import javax.xml.xpath.XPathConstants; 6 import javax.xml.xpath.XPathConstants;
7 7
8 import org.w3c.dom.Document; 8 import org.w3c.dom.Document;
9 import org.w3c.dom.Element;
9 import org.w3c.dom.Node; 10 import org.w3c.dom.Node;
10 import org.w3c.dom.NodeList; 11 import org.w3c.dom.NodeList;
11 12
12 import de.intevation.artifacts.common.ArtifactNamespaceContext; 13 import de.intevation.artifacts.common.ArtifactNamespaceContext;
13 import de.intevation.artifacts.common.utils.ClientProtocolUtils; 14 import de.intevation.artifacts.common.utils.ClientProtocolUtils;
44 45
45 public static final String XPATH_STATIC_DATA_NODE = "art:data"; 46 public static final String XPATH_STATIC_DATA_NODE = "art:data";
46 47
47 public static final String XPATH_STATIC_ITEM_NODE = "art:item"; 48 public static final String XPATH_STATIC_ITEM_NODE = "art:item";
48 49
50 public static final String XPATH_RECOMMENDED_ARTIFACTS =
51 "/art:result/art:recommended-artifacts/art:artifact-factory";
52
49 /** 53 /**
50 * This method creates the {@link ArtifactDescription} of the DESCRIBE 54 * This method creates the {@link ArtifactDescription} of the DESCRIBE
51 * document <i>doc</i>. 55 * document <i>doc</i>.
52 * 56 *
53 * @param doc A DESCRIBE document. 57 * @param doc A DESCRIBE document.
71 System.out.println("Current state name: " + state); 75 System.out.println("Current state name: " + state);
72 76
73 DataList currentData = extractCurrentData(dynamicNode, state); 77 DataList currentData = extractCurrentData(dynamicNode, state);
74 DataList[] old = extractOldData(staticNode); 78 DataList[] old = extractOldData(staticNode);
75 String[] states = extractReachableStates(reachable); 79 String[] states = extractReachableStates(reachable);
76 OutputMode[] outs = extractOutputModes(outputs); 80 OutputMode[] outs = extractOutputModes(outputs);
81 String[] recommended = extractRecommendedArtifacts(doc);
77 82
78 return new DefaultArtifactDescription( 83 return new DefaultArtifactDescription(
79 old, 84 old,
80 currentData, 85 currentData,
81 state, 86 state,
82 states, 87 states,
83 outs); 88 outs,
89 recommended);
84 } 90 }
85 91
86 92
87 /** 93 /**
88 * This method extracts the data that the user is able to enter in the 94 * This method extracts the data that the user is able to enter in the
462 } 468 }
463 } 469 }
464 470
465 return (OutputMode[]) outs.toArray(new OutputMode[size]); 471 return (OutputMode[]) outs.toArray(new OutputMode[size]);
466 } 472 }
473
474
475 protected static String[] extractRecommendedArtifacts(Document doc) {
476 System.out.println("ArtifactDescriptionFactory - extract recommended.");
477
478 NodeList list = (NodeList) XMLUtils.xpath(
479 doc,
480 XPATH_RECOMMENDED_ARTIFACTS,
481 XPathConstants.NODESET,
482 ArtifactNamespaceContext.INSTANCE);
483
484 int num = list != null ? list.getLength() : 0;
485
486 String[] factories = new String[num];
487
488 for (int i = 0; i < num; i++) {
489 Element e = (Element) list.item(i);
490 String f = e.getAttribute("name");
491
492 if (f != null && f.length() > 0) {
493 factories[i] = f;
494 }
495 }
496
497 return factories;
498 }
467 } 499 }
468 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 500 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org