comparison flys-client/src/main/java/de/intevation/flys/client/server/ArtifactHelper.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
children ecd0243bc09e
comparison
equal deleted inserted replaced
904:1e08a5b0add9 905:478a571f1f94
1 package de.intevation.flys.client.server;
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 de.intevation.artifacts.common.utils.ClientProtocolUtils;
10 import de.intevation.artifacts.common.utils.CreationFilter;
11
12 import de.intevation.artifacts.httpclient.exceptions.ConnectionException;
13 import de.intevation.artifacts.httpclient.http.HttpClient;
14 import de.intevation.artifacts.httpclient.http.HttpClientImpl;
15
16 import de.intevation.flys.client.shared.exceptions.ServerException;
17 import de.intevation.flys.client.shared.model.Artifact;
18
19 import de.intevation.flys.client.shared.model.Recommendation;
20
21
22 /**
23 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
24 */
25 public class ArtifactHelper {
26
27 /** The error message key that is thrown if an error occured while artifact
28 * creation.*/
29 public static final String ERROR_CREATE_ARTIFACT = "error_create_artifact";
30
31
32 private ArtifactHelper() {
33 }
34
35
36 public static Artifact createArtifact(
37 String serverUrl,
38 String locale,
39 String factory,
40 Recommendation recommendation)
41 throws ServerException
42 {
43 System.out.println("ArtifactHelper.create");
44
45 String uuid;
46 String ids;
47 CreationFilter filter;
48
49 if (recommendation != null) {
50 uuid = recommendation.getMasterArtifact();
51 ids = recommendation.getIDs();
52 filter = convertFilter(recommendation.getFilter());
53 }
54 else {
55 uuid = null;
56 ids = null;
57 filter = null;
58 }
59
60 Document create = ClientProtocolUtils.newCreateDocument(
61 factory, uuid, ids, filter);
62
63 HttpClient client = new HttpClientImpl(serverUrl, locale);
64
65 try {
66 return (Artifact) client.create(create, new FLYSArtifactCreator());
67 }
68 catch (ConnectionException ce) {
69 System.err.println(ce.getLocalizedMessage());
70 }
71
72 throw new ServerException(ERROR_CREATE_ARTIFACT);
73 }
74
75
76 public static CreationFilter convertFilter(Recommendation.Filter filter) {
77
78 if (filter == null) {
79 return null;
80 }
81
82 CreationFilter cf = new CreationFilter();
83
84 Map<String, List<Recommendation.Facet>> outs = filter.getOuts();
85
86 for (Map.Entry<String, List<Recommendation.Facet>> entry:
87 outs.entrySet()) {
88 List<Recommendation.Facet> rfs = entry.getValue();
89 List<CreationFilter.Facet> cfs =
90 new ArrayList<CreationFilter.Facet>(rfs.size());
91 for (Recommendation.Facet rf: rfs) {
92 cfs.add(new CreationFilter.Facet(rf.getName(), rf.getIndex()));
93 }
94 cf.add(entry.getKey(), cfs);
95 }
96
97 return cf;
98 }
99 }
100 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org