comparison flys-client/src/main/java/de/intevation/flys/client/server/ArtifactServiceImpl.java @ 905:478a571f1f94

Refactored server code - HTTP related code moved to ArtifactsHelper and CollectionHelper which makes us able to combine Artifact and Collection protocol stuff in a single RPC service. flys-client/trunk@2757 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Thu, 15 Sep 2011 12:55:36 +0000
parents 4db672cdacb2
children ab8eb2f544f2
comparison
equal deleted inserted replaced
904:1e08a5b0add9 905:478a571f1f94
1 package de.intevation.flys.client.server; 1 package de.intevation.flys.client.server;
2 2
3 import org.w3c.dom.Document;
4
5 import java.util.ArrayList;
6 import java.util.List;
7 import java.util.Map;
8
9 import com.google.gwt.user.server.rpc.RemoteServiceServlet; 3 import com.google.gwt.user.server.rpc.RemoteServiceServlet;
10
11 import de.intevation.artifacts.common.utils.ClientProtocolUtils;
12 import de.intevation.artifacts.common.utils.CreationFilter;
13
14 import de.intevation.artifacts.httpclient.exceptions.ConnectionException;
15 import de.intevation.artifacts.httpclient.http.HttpClient;
16 import de.intevation.artifacts.httpclient.http.HttpClientImpl;
17 4
18 import de.intevation.flys.client.shared.exceptions.ServerException; 5 import de.intevation.flys.client.shared.exceptions.ServerException;
19 import de.intevation.flys.client.shared.model.Artifact; 6 import de.intevation.flys.client.shared.model.Artifact;
20 import de.intevation.flys.client.client.services.ArtifactService; 7 import de.intevation.flys.client.client.services.ArtifactService;
21 8
29 */ 16 */
30 public class ArtifactServiceImpl 17 public class ArtifactServiceImpl
31 extends RemoteServiceServlet 18 extends RemoteServiceServlet
32 implements ArtifactService 19 implements ArtifactService
33 { 20 {
34 /** The error message key that is thrown if an error occured while artifact 21 /**
35 * creation.*/ 22 * Creates new Artifacts based on a given Recommendation and factory.
36 public static final String ERROR_CREATE_ARTIFACT = "error_create_artifact"; 23 * <b>Note, that all the work is done in ArtifactHelper!</b>
37 24 *
38 25 * @param serverUrl The URL of the ArtifactServer.
26 * @param locale The locale used for HTTP request.
27 * @param factory The factory that is used to create the new Artifact.
28 *
29 * @return a new Artifact.
30 */
39 public Artifact create( 31 public Artifact create(
40 String serverUrl, 32 String serverUrl,
41 String locale, 33 String locale,
42 String factory, 34 String factory,
43 Recommendation recommendation 35 Recommendation recom
44 ) 36 )
45 throws ServerException 37 throws ServerException
46 { 38 {
47 System.out.println("ArtifactServiceImpl.create"); 39 System.out.println("ArtifactServiceImpl.create");
48 40
49 String uuid; 41 return ArtifactHelper.createArtifact(serverUrl, locale, factory, recom);
50 String ids;
51 CreationFilter filter;
52
53 if (recommendation != null) {
54 uuid = recommendation.getMasterArtifact();
55 ids = recommendation.getIDs();
56 filter = convertFilter(recommendation.getFilter());
57 }
58 else {
59 uuid = null;
60 ids = null;
61 filter = null;
62 }
63
64 Document create = ClientProtocolUtils.newCreateDocument(
65 factory, uuid, ids, filter);
66
67 HttpClient client = new HttpClientImpl(serverUrl, locale);
68
69 try {
70 return (Artifact) client.create(create, new FLYSArtifactCreator());
71 }
72 catch (ConnectionException ce) {
73 System.err.println(ce.getLocalizedMessage());
74 }
75
76 throw new ServerException(ERROR_CREATE_ARTIFACT);
77 }
78
79 public static CreationFilter convertFilter(Recommendation.Filter filter) {
80
81 if (filter == null) {
82 return null;
83 }
84
85 CreationFilter cf = new CreationFilter();
86
87 Map<String, List<Recommendation.Facet>> outs = filter.getOuts();
88
89 for (Map.Entry<String, List<Recommendation.Facet>> entry:
90 outs.entrySet()) {
91 List<Recommendation.Facet> rfs = entry.getValue();
92 List<CreationFilter.Facet> cfs =
93 new ArrayList<CreationFilter.Facet>(rfs.size());
94 for (Recommendation.Facet rf: rfs) {
95 cfs.add(new CreationFilter.Facet(rf.getName(), rf.getIndex()));
96 }
97 cf.add(entry.getKey(), cfs);
98 }
99
100 return cf;
101 } 42 }
102 } 43 }
103 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 44 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org