diff 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
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java	Wed Jul 20 13:31:20 2011 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java	Thu Jul 21 15:23:03 2011 +0000
@@ -21,7 +21,9 @@
 import de.intevation.flys.client.shared.model.DefaultData;
 import de.intevation.flys.client.shared.model.DefaultDataItem;
 import de.intevation.flys.client.shared.model.DefaultOutputMode;
+import de.intevation.flys.client.shared.model.DefaultRecommendation;
 import de.intevation.flys.client.shared.model.OutputMode;
+import de.intevation.flys.client.shared.model.Recommendation;
 import de.intevation.flys.client.shared.model.WQDataItem;
 
 
@@ -48,7 +50,7 @@
     public static final String XPATH_STATIC_ITEM_NODE = "art:item";
 
     public static final String XPATH_RECOMMENDED_ARTIFACTS =
-        "/art:result/art:recommended-artifacts/art:artifact-factory";
+        "/art:result/art:recommended-artifacts/*[@factory]";
 
     /**
      * This method creates the {@link ArtifactDescription} of the DESCRIBE
@@ -78,7 +80,7 @@
         DataList[] old       = extractOldData(staticNode);
         String[] states      = extractReachableStates(reachable);
         OutputMode[] outs    = extractOutputModes(outputs);
-        String[] recommended = extractRecommendedArtifacts(doc);
+        Recommendation[] rec = extractRecommendedArtifacts(doc);
 
         return new DefaultArtifactDescription(
             old,
@@ -86,7 +88,7 @@
             state,
             states,
             outs,
-            recommended);
+            rec);
     }
 
 
@@ -472,7 +474,7 @@
     }
 
 
-    protected static String[] extractRecommendedArtifacts(Document doc) {
+    protected static Recommendation[] extractRecommendedArtifacts(Document doc){
         System.out.println("ArtifactDescriptionFactory - extract recommended.");
 
         NodeList list = (NodeList) XMLUtils.xpath(
@@ -483,18 +485,19 @@
 
         int num = list != null ? list.getLength() : 0;
 
-        String[] factories = new String[num];
+        Recommendation[] rec = new Recommendation[num];
 
         for (int i = 0; i < num; i++) {
-            Element e = (Element) list.item(i);
-            String  f = e.getAttribute("name");
+            Element e       = (Element) list.item(i);
+            String  factory = e.getAttribute("factory");
+            String  index   = e.getAttribute("db-ids");
 
-            if (f != null && f.length() > 0) {
-                factories[i] = f;
+            if (factory != null && factory.length() > 0) {
+                rec[i] = new DefaultRecommendation(factory, index);
             }
         }
 
-        return factories;
+        return rec;
     }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org