Mercurial > dive4elements > river
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 :