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 :

http://dive4elements.wald.intevation.org