diff flys-client/src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java @ 22:a85bac235069

Implemented code to parse the UIProvider that should be used for a current state. flys-client/trunk@1336 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 22 Feb 2011 17:29:51 +0000
parents f8a5f2c5e2b7
children 88c530c25968
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java	Tue Feb 22 17:23:47 2011 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java	Tue Feb 22 17:29:51 2011 +0000
@@ -33,6 +33,8 @@
 
     public static final String XPATH_STATE_NAME = "@art:name";
 
+    public static final String XPATH_UIPROVIDER = "@art:uiprovider";
+
     /**
      * This method creates the {@link ArtifactDescription} of the DESCRIBE
      * document <i>doc</i>.
@@ -80,8 +82,9 @@
         String   label   = ClientProtocolUtils.getLabel(data);
 
         DataItem[] dataItems = extractCurrentDataItems(choices);
+        String uiProvider    = extractUIProvider(data);
 
-        return new DefaultData(label, null, null, dataItems);
+        return new DefaultData(label, null, null, dataItems, uiProvider);
     }
 
 
@@ -115,5 +118,21 @@
 
         return (DataItem[]) dataItems.toArray(new DataItem[count]);
     }
+
+
+    /**
+     * This method extracts the UIProvider specified by the data node.
+     *
+     * @param data The data node.
+     *
+     * @return the UIProvider that is specified in the data node.
+     */
+    protected static String extractUIProvider(Node data) {
+        return (String) XMLUtils.xpath(
+            data,
+            XPATH_UIPROVIDER,
+            XPathConstants.STRING,
+            ArtifactNamespaceContext.INSTANCE);
+    }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org