Mercurial > dive4elements > river
comparison flys-client/src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java @ 807:6f65e70fa11d
Repaired broken recommendation parsing from Artifact's DESCRIBE document (which structure has changed).
flys-client/trunk@2391 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 21 Jul 2011 15:23:03 +0000 |
parents | 653ae84533e7 |
children | 3187b268b311 |
comparison
equal
deleted
inserted
replaced
806:e50da1f74e58 | 807:6f65e70fa11d |
---|---|
19 import de.intevation.flys.client.shared.model.DataList; | 19 import de.intevation.flys.client.shared.model.DataList; |
20 import de.intevation.flys.client.shared.model.DefaultArtifactDescription; | 20 import de.intevation.flys.client.shared.model.DefaultArtifactDescription; |
21 import de.intevation.flys.client.shared.model.DefaultData; | 21 import de.intevation.flys.client.shared.model.DefaultData; |
22 import de.intevation.flys.client.shared.model.DefaultDataItem; | 22 import de.intevation.flys.client.shared.model.DefaultDataItem; |
23 import de.intevation.flys.client.shared.model.DefaultOutputMode; | 23 import de.intevation.flys.client.shared.model.DefaultOutputMode; |
24 import de.intevation.flys.client.shared.model.DefaultRecommendation; | |
24 import de.intevation.flys.client.shared.model.OutputMode; | 25 import de.intevation.flys.client.shared.model.OutputMode; |
26 import de.intevation.flys.client.shared.model.Recommendation; | |
25 import de.intevation.flys.client.shared.model.WQDataItem; | 27 import de.intevation.flys.client.shared.model.WQDataItem; |
26 | 28 |
27 | 29 |
28 /** | 30 /** |
29 * This factory class helps creating an {@link ArtifactDescription} based on the | 31 * This factory class helps creating an {@link ArtifactDescription} based on the |
46 public static final String XPATH_STATIC_DATA_NODE = "art:data"; | 48 public static final String XPATH_STATIC_DATA_NODE = "art:data"; |
47 | 49 |
48 public static final String XPATH_STATIC_ITEM_NODE = "art:item"; | 50 public static final String XPATH_STATIC_ITEM_NODE = "art:item"; |
49 | 51 |
50 public static final String XPATH_RECOMMENDED_ARTIFACTS = | 52 public static final String XPATH_RECOMMENDED_ARTIFACTS = |
51 "/art:result/art:recommended-artifacts/art:artifact-factory"; | 53 "/art:result/art:recommended-artifacts/*[@factory]"; |
52 | 54 |
53 /** | 55 /** |
54 * This method creates the {@link ArtifactDescription} of the DESCRIBE | 56 * This method creates the {@link ArtifactDescription} of the DESCRIBE |
55 * document <i>doc</i>. | 57 * document <i>doc</i>. |
56 * | 58 * |
76 | 78 |
77 DataList currentData = extractCurrentData(dynamicNode, state); | 79 DataList currentData = extractCurrentData(dynamicNode, state); |
78 DataList[] old = extractOldData(staticNode); | 80 DataList[] old = extractOldData(staticNode); |
79 String[] states = extractReachableStates(reachable); | 81 String[] states = extractReachableStates(reachable); |
80 OutputMode[] outs = extractOutputModes(outputs); | 82 OutputMode[] outs = extractOutputModes(outputs); |
81 String[] recommended = extractRecommendedArtifacts(doc); | 83 Recommendation[] rec = extractRecommendedArtifacts(doc); |
82 | 84 |
83 return new DefaultArtifactDescription( | 85 return new DefaultArtifactDescription( |
84 old, | 86 old, |
85 currentData, | 87 currentData, |
86 state, | 88 state, |
87 states, | 89 states, |
88 outs, | 90 outs, |
89 recommended); | 91 rec); |
90 } | 92 } |
91 | 93 |
92 | 94 |
93 /** | 95 /** |
94 * This method extracts the data that the user is able to enter in the | 96 * This method extracts the data that the user is able to enter in the |
470 | 472 |
471 return (OutputMode[]) outs.toArray(new OutputMode[size]); | 473 return (OutputMode[]) outs.toArray(new OutputMode[size]); |
472 } | 474 } |
473 | 475 |
474 | 476 |
475 protected static String[] extractRecommendedArtifacts(Document doc) { | 477 protected static Recommendation[] extractRecommendedArtifacts(Document doc){ |
476 System.out.println("ArtifactDescriptionFactory - extract recommended."); | 478 System.out.println("ArtifactDescriptionFactory - extract recommended."); |
477 | 479 |
478 NodeList list = (NodeList) XMLUtils.xpath( | 480 NodeList list = (NodeList) XMLUtils.xpath( |
479 doc, | 481 doc, |
480 XPATH_RECOMMENDED_ARTIFACTS, | 482 XPATH_RECOMMENDED_ARTIFACTS, |
481 XPathConstants.NODESET, | 483 XPathConstants.NODESET, |
482 ArtifactNamespaceContext.INSTANCE); | 484 ArtifactNamespaceContext.INSTANCE); |
483 | 485 |
484 int num = list != null ? list.getLength() : 0; | 486 int num = list != null ? list.getLength() : 0; |
485 | 487 |
486 String[] factories = new String[num]; | 488 Recommendation[] rec = new Recommendation[num]; |
487 | 489 |
488 for (int i = 0; i < num; i++) { | 490 for (int i = 0; i < num; i++) { |
489 Element e = (Element) list.item(i); | 491 Element e = (Element) list.item(i); |
490 String f = e.getAttribute("name"); | 492 String factory = e.getAttribute("factory"); |
491 | 493 String index = e.getAttribute("db-ids"); |
492 if (f != null && f.length() > 0) { | 494 |
493 factories[i] = f; | 495 if (factory != null && factory.length() > 0) { |
494 } | 496 rec[i] = new DefaultRecommendation(factory, index); |
495 } | 497 } |
496 | 498 } |
497 return factories; | 499 |
500 return rec; | |
498 } | 501 } |
499 } | 502 } |
500 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 503 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |