annotate gwt-client/src/main/java/org/dive4elements/river/client/test/SinfoProof.java @ 9027:274ddafb719b

S-Info-Proof-Init Testing
author gernotbelger
date Thu, 26 Apr 2018 10:46:12 +0200
parents 679b1442c886
children
rev   line source
9026
679b1442c886 local backup
gernotbelger
parents:
diff changeset
1 /*
679b1442c886 local backup
gernotbelger
parents:
diff changeset
2 * Copyright (c) 2010 by Intevation GmbH
679b1442c886 local backup
gernotbelger
parents:
diff changeset
3 *
679b1442c886 local backup
gernotbelger
parents:
diff changeset
4 * This program is free software under the LGPL (>=v2.1)
679b1442c886 local backup
gernotbelger
parents:
diff changeset
5 * Read the file LGPL.txt coming with the software for details
679b1442c886 local backup
gernotbelger
parents:
diff changeset
6 * or visit http://www.gnu.org/licenses/ if it does not exist.
679b1442c886 local backup
gernotbelger
parents:
diff changeset
7 */
679b1442c886 local backup
gernotbelger
parents:
diff changeset
8
679b1442c886 local backup
gernotbelger
parents:
diff changeset
9 package org.dive4elements.river.client.test;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
10
679b1442c886 local backup
gernotbelger
parents:
diff changeset
11 import java.io.File;
9027
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
12 import java.io.FileOutputStream;
9026
679b1442c886 local backup
gernotbelger
parents:
diff changeset
13 import java.io.IOException;
9027
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
14 import java.io.InputStreamReader;
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
15 import java.io.OutputStream;
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
16 import java.io.OutputStreamWriter;
9026
679b1442c886 local backup
gernotbelger
parents:
diff changeset
17 import java.util.ArrayList;
9027
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
18 import java.util.HashMap;
9026
679b1442c886 local backup
gernotbelger
parents:
diff changeset
19
679b1442c886 local backup
gernotbelger
parents:
diff changeset
20 import org.dive4elements.artifacts.common.ArtifactNamespaceContext;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
21 import org.dive4elements.artifacts.common.utils.ClientProtocolUtils;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
22 import org.dive4elements.artifacts.httpclient.exceptions.ConnectionException;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
23 import org.dive4elements.artifacts.httpclient.http.HttpClient;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
24 import org.dive4elements.artifacts.httpclient.http.HttpClientImpl;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
25 import org.dive4elements.artifacts.httpclient.http.response.DocumentResponseHandler;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
26 import org.dive4elements.artifacts.httpclient.utils.XMLUtils;
9027
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
27 import org.dive4elements.river.client.client.ui.NilDatacageTwinPanelInfo;
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
28 import org.dive4elements.river.client.client.ui.RecommandationUtils;
9026
679b1442c886 local backup
gernotbelger
parents:
diff changeset
29 import org.dive4elements.river.client.server.AdvanceServiceImpl;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
30 import org.dive4elements.river.client.server.ArtifactHelper;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
31 import org.dive4elements.river.client.server.CollectionHelper;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
32 import org.dive4elements.river.client.server.CreateCollectionServiceImpl;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
33 import org.dive4elements.river.client.server.FLYSArtifactCreator;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
34 import org.dive4elements.river.client.server.FeedServiceImpl;
9027
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
35 import org.dive4elements.river.client.server.LoadArtifactServiceImpl;
9026
679b1442c886 local backup
gernotbelger
parents:
diff changeset
36 import org.dive4elements.river.client.server.auth.DefaultUser;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
37 import org.dive4elements.river.client.server.auth.User;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
38 import org.dive4elements.river.client.server.auth.UserClient;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
39 import org.dive4elements.river.client.shared.exceptions.ServerException;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
40 import org.dive4elements.river.client.shared.model.Artifact;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
41 import org.dive4elements.river.client.shared.model.Collection;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
42 import org.dive4elements.river.client.shared.model.Data;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
43 import org.dive4elements.river.client.shared.model.DataItem;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
44 import org.dive4elements.river.client.shared.model.DataList;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
45 import org.dive4elements.river.client.shared.model.DefaultCollection;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
46 import org.dive4elements.river.client.shared.model.DefaultDataItem;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
47 import org.dive4elements.river.client.shared.model.OutputMode;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
48 import org.dive4elements.river.client.shared.model.Recommendation;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
49 import org.dive4elements.river.client.shared.model.StringOptionsData;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
50 import org.w3c.dom.Document;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
51 import org.w3c.dom.Element;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
52
679b1442c886 local backup
gernotbelger
parents:
diff changeset
53 /**
679b1442c886 local backup
gernotbelger
parents:
diff changeset
54 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
679b1442c886 local backup
gernotbelger
parents:
diff changeset
55 */
679b1442c886 local backup
gernotbelger
parents:
diff changeset
56 public class SinfoProof {
679b1442c886 local backup
gernotbelger
parents:
diff changeset
57
679b1442c886 local backup
gernotbelger
parents:
diff changeset
58 private static final String serverUrl = "http://localhost:8181";
679b1442c886 local backup
gernotbelger
parents:
diff changeset
59 private static final String locale = "de";
679b1442c886 local backup
gernotbelger
parents:
diff changeset
60
679b1442c886 local backup
gernotbelger
parents:
diff changeset
61 public static void main(final String[] args) throws ServerException, IOException {
9027
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
62 // logger.info("Starting console client.");
9026
679b1442c886 local backup
gernotbelger
parents:
diff changeset
63
679b1442c886 local backup
gernotbelger
parents:
diff changeset
64 final User user = new DefaultUser("belger", "belger", null, false, new ArrayList<String>(), new ArrayList<String>());
679b1442c886 local backup
gernotbelger
parents:
diff changeset
65 final UserClient userClient = new UserClient(serverUrl);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
66 final Element userElement = userClient.findUser(user);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
67 final String userUuid = userElement.getAttributeNS(ArtifactNamespaceContext.NAMESPACE_URI, "uuid");
679b1442c886 local backup
gernotbelger
parents:
diff changeset
68
679b1442c886 local backup
gernotbelger
parents:
diff changeset
69 /* Init Collection */
679b1442c886 local backup
gernotbelger
parents:
diff changeset
70 final Collection collection = createCollection(serverUrl, locale, userUuid);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
71 final org.dive4elements.river.client.shared.model.Artifact sinfoArtifact = ArtifactHelper.createArtifact(serverUrl, locale, "sinfo", null);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
72 final Collection newColl = CollectionHelper.addArtifact(collection, sinfoArtifact, serverUrl, locale); // wichtig; sorgt für Persistenz
679b1442c886 local backup
gernotbelger
parents:
diff changeset
73
679b1442c886 local backup
gernotbelger
parents:
diff changeset
74 /* Select River */
679b1442c886 local backup
gernotbelger
parents:
diff changeset
75 final Data data = new StringOptionsData("river", "river", new DataItem[] { new DefaultDataItem("Beispielfluss", "Beispielfluss", "Beispielfluss") });
679b1442c886 local backup
gernotbelger
parents:
diff changeset
76 final Artifact calcModeArtifact = feedAndGo(sinfoArtifact, new Data[] { data }, 0);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
77
679b1442c886 local backup
gernotbelger
parents:
diff changeset
78 /* Select CalcMode */
679b1442c886 local backup
gernotbelger
parents:
diff changeset
79 final DataList calcModes = calcModeArtifact.getArtifactDescription().getCurrentData(); // AUSWAHL-Möglichkeiten
679b1442c886 local backup
gernotbelger
parents:
diff changeset
80 final DataItem minMaxFlowdepth = calcModes.get(0).getItems()[2];
679b1442c886 local backup
gernotbelger
parents:
diff changeset
81 final Data dataCalcMode = new StringOptionsData("calculation_mode", "calculation_mode", new DataItem[] { minMaxFlowdepth });
679b1442c886 local backup
gernotbelger
parents:
diff changeset
82 final Artifact rangeArtifact = feedAndGo(calcModeArtifact, new Data[] { dataCalcMode }, 0);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
83
9027
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
84 /* Select Range */
9026
679b1442c886 local backup
gernotbelger
parents:
diff changeset
85
679b1442c886 local backup
gernotbelger
parents:
diff changeset
86 // entweder eine bestimmte Range
9027
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
87 final Data dataFrom = new StringOptionsData("ld_from", "ld_from", new DataItem[] { new DefaultDataItem("10", "10", "10") });
9026
679b1442c886 local backup
gernotbelger
parents:
diff changeset
88 final Data dataTo = new StringOptionsData("ld_to", "ld_to", new DataItem[] { new DefaultDataItem("100", "100", "100") });
679b1442c886 local backup
gernotbelger
parents:
diff changeset
89 final Data[] rangeFromToDetermined = new Data[] { dataFrom, dataTo };
679b1442c886 local backup
gernotbelger
parents:
diff changeset
90
679b1442c886 local backup
gernotbelger
parents:
diff changeset
91 // oder die maxRange
679b1442c886 local backup
gernotbelger
parents:
diff changeset
92 final DataList list = rangeArtifact.getArtifactDescription().getCurrentData();
679b1442c886 local backup
gernotbelger
parents:
diff changeset
93 final Data[] rangeMax = new Data[] { list.get(0), list.get(1) };
9027
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
94
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
95 final Artifact dataChoiceArtifact = feedAndGo(rangeArtifact, rangeFromToDetermined, 0);
9026
679b1442c886 local backup
gernotbelger
parents:
diff changeset
96
679b1442c886 local backup
gernotbelger
parents:
diff changeset
97 /* Select Fixpunkte */
9027
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
98 final Recommendation rec1 = new Recommendation("staticwqkms", "additionals-wstv-0-103", "sinfo_flowdepth_waterlevels");
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
99 final Recommendation rec2 = new Recommendation("bedheight", "bedheight-single-36-2015-FP-2015_0-502", "sinfo_flowdepthminmax_heights");
9026
679b1442c886 local backup
gernotbelger
parents:
diff changeset
100
9027
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
101 final Artifact[] artifacts = loadMany(collection, new Recommendation[] { rec1, rec2 }, null);
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
102
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
103 // rec1.getDisplayName() TODO: makeDisplayName
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
104 final String rec1String = RecommandationUtils.createDataString(artifacts[0].getUuid(), rec1, new NilDatacageTwinPanelInfo("xxxx"));
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
105 final String rec2String = RecommandationUtils.createDataString(artifacts[1].getUuid(), rec2, new NilDatacageTwinPanelInfo("xxxx"));
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
106 // TODO: check display name
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
107 final String combinedIdNeu = rec1String + "#" + rec2String;
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
108
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
109 final Data pair = new StringOptionsData("diffids", "diffids", new DataItem[] { new DefaultDataItem(combinedIdNeu, combinedIdNeu, combinedIdNeu) });
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
110 final Artifact exportArtifact = feedAndGo(dataChoiceArtifact, new Data[] { pair }, 0);
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
111
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
112 // Describe collection
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
113 describeCollection(collection); // wichtig, damit die Facets erzeugt werden
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
114
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
115 // /* Export calculation */
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
116 final OutputMode[] modes = exportArtifact.getArtifactDescription().getOutputModes();
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
117 if (modes != null) {
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
118 final OutputMode mode = modes[1]; // output.sinfo_flowdepthminmax_export
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
119 doGet(mode.getName(), collection.identifier());
9026
679b1442c886 local backup
gernotbelger
parents:
diff changeset
120 }
9027
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
121 }
9026
679b1442c886 local backup
gernotbelger
parents:
diff changeset
122
9027
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
123 private static Collection describeCollection(final Collection collection) throws ConnectionException {
9026
679b1442c886 local backup
gernotbelger
parents:
diff changeset
124
9027
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
125 final String uuid = collection.identifier();
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
126
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
127 final Document describe = ClientProtocolUtils.newDescribeCollectionDocument(uuid);
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
128
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
129 final HttpClient client = new HttpClientImpl(serverUrl, locale);
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
130
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
131 final Document response = (Document) client.doCollectionAction(describe, uuid, new DocumentResponseHandler());
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
132
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
133 final Collection c = CollectionHelper.parseCollection(response);
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
134
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
135 return c;
9026
679b1442c886 local backup
gernotbelger
parents:
diff changeset
136 }
679b1442c886 local backup
gernotbelger
parents:
diff changeset
137
679b1442c886 local backup
gernotbelger
parents:
diff changeset
138 private static Artifact feedAndGo(final Artifact inputArtifact, final Data[] data, final int reachableStateIndex)
679b1442c886 local backup
gernotbelger
parents:
diff changeset
139 throws ConnectionException, ServerException {
679b1442c886 local backup
gernotbelger
parents:
diff changeset
140 final Artifact artifact = feed(serverUrl, locale, inputArtifact, data);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
141 return advance(serverUrl, locale, artifact, getReachableStateByIndex(artifact, reachableStateIndex));
679b1442c886 local backup
gernotbelger
parents:
diff changeset
142 }
679b1442c886 local backup
gernotbelger
parents:
diff changeset
143
679b1442c886 local backup
gernotbelger
parents:
diff changeset
144 private static String getReachableStateByIndex(final Artifact artifact, final int index) {
679b1442c886 local backup
gernotbelger
parents:
diff changeset
145
679b1442c886 local backup
gernotbelger
parents:
diff changeset
146 final String[] states = artifact.getArtifactDescription().getReachableStates();
679b1442c886 local backup
gernotbelger
parents:
diff changeset
147 if (states != null) {
679b1442c886 local backup
gernotbelger
parents:
diff changeset
148 if (states.length > index) {
679b1442c886 local backup
gernotbelger
parents:
diff changeset
149 return states[index];
679b1442c886 local backup
gernotbelger
parents:
diff changeset
150 } else {
679b1442c886 local backup
gernotbelger
parents:
diff changeset
151 return states[0];
679b1442c886 local backup
gernotbelger
parents:
diff changeset
152 }
679b1442c886 local backup
gernotbelger
parents:
diff changeset
153 } else {
679b1442c886 local backup
gernotbelger
parents:
diff changeset
154 return "";
679b1442c886 local backup
gernotbelger
parents:
diff changeset
155 }
679b1442c886 local backup
gernotbelger
parents:
diff changeset
156 }
679b1442c886 local backup
gernotbelger
parents:
diff changeset
157
679b1442c886 local backup
gernotbelger
parents:
diff changeset
158 public static Collection createCollection(final String url, final String locale, final String ownerId) throws ConnectionException {
679b1442c886 local backup
gernotbelger
parents:
diff changeset
159 final Document create = ClientProtocolUtils.newCreateCollectionDocument(null);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
160 final HttpClient client = new HttpClientImpl(url, locale);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
161 final Document doc = (Document) client.createCollection(create, ownerId, new DocumentResponseHandler());
679b1442c886 local backup
gernotbelger
parents:
diff changeset
162 final String uuid = XMLUtils.xpathString(doc, CreateCollectionServiceImpl.XPATH_COLLECTION_UUID, ArtifactNamespaceContext.INSTANCE);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
163 final String ttlStr = XMLUtils.xpathString(doc, CreateCollectionServiceImpl.XPATH_COLLECTION_TTL, ArtifactNamespaceContext.INSTANCE);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
164
679b1442c886 local backup
gernotbelger
parents:
diff changeset
165 return new DefaultCollection(uuid, Long.valueOf(ttlStr), uuid);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
166 }
679b1442c886 local backup
gernotbelger
parents:
diff changeset
167
679b1442c886 local backup
gernotbelger
parents:
diff changeset
168 public static Artifact feed(final String url, final String locale, final Artifact artifact, final Data[] data) throws ServerException, ConnectionException {
679b1442c886 local backup
gernotbelger
parents:
diff changeset
169 final Document feed = ClientProtocolUtils.newFeedDocument(artifact.getUuid(), artifact.getHash(), createKVP(data));
679b1442c886 local backup
gernotbelger
parents:
diff changeset
170
679b1442c886 local backup
gernotbelger
parents:
diff changeset
171 final HttpClient client = new HttpClientImpl(url, locale);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
172
679b1442c886 local backup
gernotbelger
parents:
diff changeset
173 final Document description = (Document) client.feed(new org.dive4elements.artifacts.httpclient.objects.Artifact(artifact.getUuid(), artifact.getHash()),
679b1442c886 local backup
gernotbelger
parents:
diff changeset
174 feed, new DocumentResponseHandler());
679b1442c886 local backup
gernotbelger
parents:
diff changeset
175
679b1442c886 local backup
gernotbelger
parents:
diff changeset
176 final String result = XMLUtils.xpathString(description, FeedServiceImpl.XPATH_RESULT, ArtifactNamespaceContext.INSTANCE);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
177
679b1442c886 local backup
gernotbelger
parents:
diff changeset
178 if (result == null || !result.equals(FeedServiceImpl.OPERATION_FAILURE)) {
679b1442c886 local backup
gernotbelger
parents:
diff changeset
179 return (Artifact) new FLYSArtifactCreator().create(description);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
180 } else if (result != null && result.equals(FeedServiceImpl.OPERATION_FAILURE)) {
679b1442c886 local backup
gernotbelger
parents:
diff changeset
181 final String msg = XMLUtils.xpathString(description, FeedServiceImpl.XPATH_RESULT_MSG, ArtifactNamespaceContext.INSTANCE);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
182 throw new ServerException(msg);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
183 }
679b1442c886 local backup
gernotbelger
parents:
diff changeset
184
679b1442c886 local backup
gernotbelger
parents:
diff changeset
185 throw new ServerException(FeedServiceImpl.ERROR_FEED_DATA);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
186 }
679b1442c886 local backup
gernotbelger
parents:
diff changeset
187
679b1442c886 local backup
gernotbelger
parents:
diff changeset
188 protected static String[][] createKVP(final Data[] data) {
679b1442c886 local backup
gernotbelger
parents:
diff changeset
189 if (data != null) {
679b1442c886 local backup
gernotbelger
parents:
diff changeset
190 final String[][] kvp = new String[data.length][];
679b1442c886 local backup
gernotbelger
parents:
diff changeset
191
679b1442c886 local backup
gernotbelger
parents:
diff changeset
192 int i = 0;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
193
679b1442c886 local backup
gernotbelger
parents:
diff changeset
194 for (final Data d : data) {
679b1442c886 local backup
gernotbelger
parents:
diff changeset
195 final DataItem[] items = d.getItems();
679b1442c886 local backup
gernotbelger
parents:
diff changeset
196 final String key = d.getLabel();
679b1442c886 local backup
gernotbelger
parents:
diff changeset
197 final String value = d.getStringValue();
679b1442c886 local backup
gernotbelger
parents:
diff changeset
198
679b1442c886 local backup
gernotbelger
parents:
diff changeset
199 kvp[i++] = new String[] { key, value };
679b1442c886 local backup
gernotbelger
parents:
diff changeset
200 }
679b1442c886 local backup
gernotbelger
parents:
diff changeset
201
679b1442c886 local backup
gernotbelger
parents:
diff changeset
202 return kvp;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
203 }
679b1442c886 local backup
gernotbelger
parents:
diff changeset
204 return null;
679b1442c886 local backup
gernotbelger
parents:
diff changeset
205 }
679b1442c886 local backup
gernotbelger
parents:
diff changeset
206
679b1442c886 local backup
gernotbelger
parents:
diff changeset
207 public static Artifact advance(final String url, final String locale, final Artifact artifact, final String target)
679b1442c886 local backup
gernotbelger
parents:
diff changeset
208 throws ConnectionException, ServerException {
679b1442c886 local backup
gernotbelger
parents:
diff changeset
209 final Document advance = ClientProtocolUtils.newAdvanceDocument(artifact.getUuid(), artifact.getHash(), target);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
210 final HttpClient client = new HttpClientImpl(url, locale);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
211
679b1442c886 local backup
gernotbelger
parents:
diff changeset
212 final Document description = (Document) client.advance(
679b1442c886 local backup
gernotbelger
parents:
diff changeset
213 new org.dive4elements.artifacts.httpclient.objects.Artifact(artifact.getUuid(), artifact.getHash()), advance, new DocumentResponseHandler());
679b1442c886 local backup
gernotbelger
parents:
diff changeset
214
679b1442c886 local backup
gernotbelger
parents:
diff changeset
215 if (description == null) {
679b1442c886 local backup
gernotbelger
parents:
diff changeset
216 throw new ServerException(AdvanceServiceImpl.ERROR_ADVANCE_ARTIFACT);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
217 }
679b1442c886 local backup
gernotbelger
parents:
diff changeset
218
679b1442c886 local backup
gernotbelger
parents:
diff changeset
219 final String result = XMLUtils.xpathString(description, AdvanceServiceImpl.XPATH_RESULT, ArtifactNamespaceContext.INSTANCE);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
220
679b1442c886 local backup
gernotbelger
parents:
diff changeset
221 if (result == null || !result.equals(AdvanceServiceImpl.OPERATION_FAILURE)) {
679b1442c886 local backup
gernotbelger
parents:
diff changeset
222 return (Artifact) new FLYSArtifactCreator().create(description);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
223 }
679b1442c886 local backup
gernotbelger
parents:
diff changeset
224
679b1442c886 local backup
gernotbelger
parents:
diff changeset
225 throw new ServerException(AdvanceServiceImpl.ERROR_ADVANCE_ARTIFACT);
679b1442c886 local backup
gernotbelger
parents:
diff changeset
226 }
679b1442c886 local backup
gernotbelger
parents:
diff changeset
227
9027
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
228 public static Artifact[] loadMany(final Collection parent, final Recommendation[] recoms, final String factory) throws ServerException {
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
229
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
230 final ArrayList<Artifact> artifacts = new ArrayList<Artifact>();
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
231 final HashMap<Recommendation, Artifact> cloneMap = new HashMap<Recommendation, Artifact>();
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
232
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
233 for (final Recommendation recom : recoms) {
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
234
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
235 final Artifact prevClone = cloneMap.get(recom);
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
236 if (prevClone != null) {
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
237
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
238 artifacts.add(prevClone);
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
239 } else {
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
240 // Not already cloned.
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
241 final String realFactory = factory != null ? factory : recom.getFactory();
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
242
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
243 final Artifact clone = ArtifactHelper.createArtifact(serverUrl, locale, realFactory, recom);
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
244
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
245 if (clone != null) {
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
246 final Collection c = CollectionHelper.addArtifact(parent, clone, serverUrl, locale);
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
247
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
248 if (c != null) {
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
249 artifacts.add(clone);
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
250 // Remember we cloned a recommendation like this.
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
251 cloneMap.put(recom, clone);
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
252 } else {
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
253 throw new ServerException(LoadArtifactServiceImpl.ERROR_LOAD_ARTIFACT);
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
254 }
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
255 }
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
256 }
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
257 }
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
258 return artifacts.toArray(new Artifact[artifacts.size()]);
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
259 }
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
260
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
261 /// ExportServiceImpl
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
262
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
263 public static void doGet(final String mode, final String collectionId) {
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
264
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
265 try {
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
266
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
267 final String name = mode;
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
268 final String type = "csv";
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
269
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
270 final String fn = name + "." + type; // TODO: make filename unique
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
271 final String enc = "windows-1252";// req.getParameter("encoding");
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
272
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
273 final OutputStream out = new FileOutputStream(new File("D:" + File.separator + fn));
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
274 final Document attr = null;
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
275 final Document request = ClientProtocolUtils.newOutCollectionDocument(collectionId, mode, type, attr);
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
276 final HttpClient client = new HttpClientImpl(serverUrl, locale);
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
277
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
278 if (enc != null) {
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
279 final InputStreamReader in = new InputStreamReader(client.collectionOut(request, collectionId, mode), "UTF-8");
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
280 try {
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
281 final OutputStreamWriter encOut = new OutputStreamWriter(out, enc);
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
282 final char buf[] = new char[4096];
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
283 int c;
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
284 while ((c = in.read(buf, 0, buf.length)) >= 0) {
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
285 encOut.write(buf, 0, c);
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
286 }
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
287 encOut.flush();
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
288 encOut.close();
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
289 } finally {
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
290 in.close();
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
291 }
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
292 }
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
293 }
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
294 catch (final IOException ioe) {
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
295 ioe.printStackTrace();
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
296 }
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
297 }
274ddafb719b S-Info-Proof-Init
gernotbelger
parents: 9026
diff changeset
298
9026
679b1442c886 local backup
gernotbelger
parents:
diff changeset
299 }

http://dive4elements.wald.intevation.org