diff flys-client/src/main/java/de/intevation/flys/client/server/ArtifactServiceImpl.java @ 845:4db672cdacb2

Added outs/facet filters when creation new artifacts. flys-client/trunk@2569 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 24 Aug 2011 16:06:48 +0000
parents 78ef14dc1877
children 478a571f1f94
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/server/ArtifactServiceImpl.java	Wed Aug 24 14:31:13 2011 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/server/ArtifactServiceImpl.java	Wed Aug 24 16:06:48 2011 +0000
@@ -2,10 +2,14 @@
 
 import org.w3c.dom.Document;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
 
 import com.google.gwt.user.server.rpc.RemoteServiceServlet;
 
 import de.intevation.artifacts.common.utils.ClientProtocolUtils;
+import de.intevation.artifacts.common.utils.CreationFilter;
 
 import de.intevation.artifacts.httpclient.exceptions.ConnectionException;
 import de.intevation.artifacts.httpclient.http.HttpClient;
@@ -36,27 +40,30 @@
         String         serverUrl,
         String         locale,
         String         factory,
-        String         uuid,
         Recommendation recommendation
     )
     throws ServerException
     {
         System.out.println("ArtifactServiceImpl.create");
 
-        Document create = null;
+        String         uuid;
+        String         ids;
+        CreationFilter filter;
 
-        if (uuid != null && uuid.length() > 0) {
-            String ids = recommendation != null
-                ? recommendation.getIDs()
-                : null;
-
-            create = ClientProtocolUtils.newCreateDocument(
-                factory, uuid, ids);
+        if (recommendation != null) {
+            uuid   = recommendation.getMasterArtifact();
+            ids    = recommendation.getIDs();
+            filter = convertFilter(recommendation.getFilter());
         }
         else {
-            create = ClientProtocolUtils.newCreateDocument(factory);
+            uuid   = null;
+            ids    = null;
+            filter = null;
         }
 
+        Document create = ClientProtocolUtils.newCreateDocument(
+            factory, uuid, ids, filter);
+
         HttpClient client = new HttpClientImpl(serverUrl, locale);
 
         try {
@@ -68,5 +75,29 @@
 
         throw new ServerException(ERROR_CREATE_ARTIFACT);
     }
+
+    public static CreationFilter convertFilter(Recommendation.Filter filter) {
+
+        if (filter == null) {
+            return null;
+        }
+
+        CreationFilter cf = new CreationFilter();
+
+        Map<String, List<Recommendation.Facet>> outs = filter.getOuts();
+
+        for (Map.Entry<String, List<Recommendation.Facet>> entry:
+            outs.entrySet()) {
+            List<Recommendation.Facet> rfs = entry.getValue();
+            List<CreationFilter.Facet> cfs =
+                new ArrayList<CreationFilter.Facet>(rfs.size());
+            for (Recommendation.Facet rf: rfs) {
+                cfs.add(new CreationFilter.Facet(rf.getName(), rf.getIndex()));
+            }
+            cf.add(entry.getKey(), cfs);
+        }
+
+        return cf;
+    }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org