annotate src/de/mpiwg/itgroup/eSciDoc/Tools/EScidocBasicHandler.java @ 4:cb5668b07bfc

neuer check ob datei schon existiert.
author dwinter
date Wed, 12 Jan 2011 16:34:42 +0100
parents 58b52df9763c
children 4b1ae52418c1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
1 package de.mpiwg.itgroup.eSciDoc.Tools;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
2 import java.io.BufferedReader;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
3 import java.io.ByteArrayInputStream;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
4 import java.io.File;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
5 import java.io.FileWriter;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
6 import java.io.IOException;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
7 import java.io.InputStream;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
8 import java.io.InputStreamReader;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
9 import java.io.UnsupportedEncodingException;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
10 import java.net.URI;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
11 import java.net.URL;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
12 import java.net.URLEncoder;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
13 import java.util.ArrayList;
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
14 import java.util.HashMap;
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
15 import java.util.List;
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
16 import java.util.Map;
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
17 import java.util.StringTokenizer;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
18 import java.util.regex.Matcher;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
19 import java.util.regex.Pattern;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
20
c6929e63b0b8 first import
dwinter
parents:
diff changeset
21 import javax.swing.text.html.HTMLDocument.HTMLReader.IsindexAction;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
22
c6929e63b0b8 first import
dwinter
parents:
diff changeset
23
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
24 import org.apache.commons.codec.EncoderException;
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
25 import org.apache.http.HttpEntity;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
26 import org.apache.http.HttpResponse;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
27 import org.apache.http.client.ClientProtocolException;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
28 import org.apache.http.client.HttpClient;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
29 import org.apache.http.client.methods.HttpDelete;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
30 import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
31 import org.apache.http.client.methods.HttpGet;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
32 import org.apache.http.client.methods.HttpPost;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
33 import org.apache.http.client.methods.HttpPut;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
34 import org.apache.http.client.methods.HttpRequestBase;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
35 import org.apache.http.client.params.ClientPNames;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
36 import org.apache.http.client.params.CookiePolicy;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
37 import org.apache.http.entity.InputStreamEntity;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
38 import org.apache.http.impl.client.DefaultHttpClient;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
39 import org.apache.http.impl.conn.SingleClientConnManager;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
40 import org.apache.http.protocol.BasicHttpContext;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
41 import org.apache.http.protocol.HttpContext;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
42 import org.apache.log4j.Logger;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
43 import org.jdom.Attribute;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
44 import org.jdom.Document;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
45 import org.jdom.Element;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
46 import org.jdom.JDOMException;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
47 import org.jdom.Text;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
48 import org.jdom.input.SAXBuilder;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
49 import org.jdom.xpath.XPath;
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
50 import org.w3c.dom.Node;
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
51
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
52 import de.mpiwg.itgroup.eSciDoc.echoObjects.ECHOObject;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
53 import de.mpiwg.itgroup.eSciDoc.echoObjects.ECHORessource;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
54 import de.mpiwg.itgroup.eSciDoc.exceptions.ConnectorException;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
55 import de.mpiwg.itgroup.eSciDoc.exceptions.ESciDocXmlObjectException;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
56 import de.mpiwg.itgroup.eSciDoc.exceptions.ObjectNotUniqueError;
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
57 import de.mpiwg.itgroup.eSciDoc.utils.eSciDocXmlObject;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
58
c6929e63b0b8 first import
dwinter
parents:
diff changeset
59
c6929e63b0b8 first import
dwinter
parents:
diff changeset
60
c6929e63b0b8 first import
dwinter
parents:
diff changeset
61
c6929e63b0b8 first import
dwinter
parents:
diff changeset
62
c6929e63b0b8 first import
dwinter
parents:
diff changeset
63 /**
c6929e63b0b8 first import
dwinter
parents:
diff changeset
64 * Handler to create a connection with an eScidoc server
c6929e63b0b8 first import
dwinter
parents:
diff changeset
65 * @author dwinter
c6929e63b0b8 first import
dwinter
parents:
diff changeset
66 *
c6929e63b0b8 first import
dwinter
parents:
diff changeset
67 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
68 public class EScidocBasicHandler {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
69
c6929e63b0b8 first import
dwinter
parents:
diff changeset
70 private Logger logger;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
71 private String eScidocServer;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
72 private int eScidocPort;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
73 private String user;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
74 private String password;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
75 public String eScidocUrl;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
76 private HttpClient httpclient=null;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
77
c6929e63b0b8 first import
dwinter
parents:
diff changeset
78 /**
c6929e63b0b8 first import
dwinter
parents:
diff changeset
79 * @param eScidocServer
c6929e63b0b8 first import
dwinter
parents:
diff changeset
80 * @param eScidocPort
c6929e63b0b8 first import
dwinter
parents:
diff changeset
81 * @param user
c6929e63b0b8 first import
dwinter
parents:
diff changeset
82 * @param password
c6929e63b0b8 first import
dwinter
parents:
diff changeset
83 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
84 public EScidocBasicHandler(String eScidocServer, int eScidocPort,String user, String password){
c6929e63b0b8 first import
dwinter
parents:
diff changeset
85 this.eScidocServer=eScidocServer;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
86 this.eScidocPort=eScidocPort;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
87 this.user=user;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
88 this.password=password;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
89 this.eScidocUrl="http://"+eScidocServer+":"+String.valueOf(eScidocPort);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
90
c6929e63b0b8 first import
dwinter
parents:
diff changeset
91 logger = Logger.getRootLogger();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
92
c6929e63b0b8 first import
dwinter
parents:
diff changeset
93 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
94
c6929e63b0b8 first import
dwinter
parents:
diff changeset
95
c6929e63b0b8 first import
dwinter
parents:
diff changeset
96
c6929e63b0b8 first import
dwinter
parents:
diff changeset
97 /**
c6929e63b0b8 first import
dwinter
parents:
diff changeset
98 * Logs you into escidoc and sets the httpclient field to the current client for this session
c6929e63b0b8 first import
dwinter
parents:
diff changeset
99 * @return gives you the httpclient for further usage.
c6929e63b0b8 first import
dwinter
parents:
diff changeset
100 * @throws HttpException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
101 * @throws ClientProtocolException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
102 * @throws IOException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
103 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
104 public HttpClient login() throws IOException {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
105 httpclient = new DefaultHttpClient();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
106
c6929e63b0b8 first import
dwinter
parents:
diff changeset
107 HttpContext localContext = new BasicHttpContext();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
108
c6929e63b0b8 first import
dwinter
parents:
diff changeset
109 httpclient.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
110
c6929e63b0b8 first import
dwinter
parents:
diff changeset
111 HttpPost httppost = new HttpPost(eScidocUrl+"/aa/login?target=/");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
112
c6929e63b0b8 first import
dwinter
parents:
diff changeset
113 logger.debug("executing request");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
114
c6929e63b0b8 first import
dwinter
parents:
diff changeset
115 HttpResponse response = httpclient.execute(httppost);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
116 //HttpEntity entity = httppost.getRes
c6929e63b0b8 first import
dwinter
parents:
diff changeset
117
c6929e63b0b8 first import
dwinter
parents:
diff changeset
118 System.out.println("----------------------------------------");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
119 System.out.println(response.getStatusLine());
c6929e63b0b8 first import
dwinter
parents:
diff changeset
120
c6929e63b0b8 first import
dwinter
parents:
diff changeset
121 HttpEntity entity = response.getEntity();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
122 if (entity != null) { entity.consumeContent();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
123 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
124
c6929e63b0b8 first import
dwinter
parents:
diff changeset
125 HttpGet httpget = new HttpGet(eScidocUrl+"/aa/j_spring_security_check?j_username="+user+"&j_password="+password);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
126
c6929e63b0b8 first import
dwinter
parents:
diff changeset
127 response = httpclient.execute(httpget);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
128 //entity = response.getEntity();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
129
c6929e63b0b8 first import
dwinter
parents:
diff changeset
130 System.out.println("----------------------------------------");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
131 System.out.println(response.getStatusLine());
c6929e63b0b8 first import
dwinter
parents:
diff changeset
132
c6929e63b0b8 first import
dwinter
parents:
diff changeset
133 entity = response.getEntity();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
134 if (entity != null) { entity.consumeContent();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
135 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
136
c6929e63b0b8 first import
dwinter
parents:
diff changeset
137 //entity.consumeContent();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
138 return httpclient;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
139 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
140
c6929e63b0b8 first import
dwinter
parents:
diff changeset
141 /**
c6929e63b0b8 first import
dwinter
parents:
diff changeset
142 * Sends a PUT request to the escidoc client. performs a login if not done before.
c6929e63b0b8 first import
dwinter
parents:
diff changeset
143 * @param command
c6929e63b0b8 first import
dwinter
parents:
diff changeset
144 * @param body
c6929e63b0b8 first import
dwinter
parents:
diff changeset
145 * @return
c6929e63b0b8 first import
dwinter
parents:
diff changeset
146 * @throws ClientProtocolException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
147 * @throws IOException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
148 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
149 public HttpResponse eScidocPut(String command, InputStream body) throws IOException {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
150 HttpPut httpput = new HttpPut(eScidocUrl+command);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
151 return eScidocRequestBase(httpput,command,body);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
152
c6929e63b0b8 first import
dwinter
parents:
diff changeset
153 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
154
c6929e63b0b8 first import
dwinter
parents:
diff changeset
155 /**
c6929e63b0b8 first import
dwinter
parents:
diff changeset
156 * Sends a PUT request to the escidoc client. performs a login if not done before.
c6929e63b0b8 first import
dwinter
parents:
diff changeset
157 * @param command
c6929e63b0b8 first import
dwinter
parents:
diff changeset
158 * @param url
c6929e63b0b8 first import
dwinter
parents:
diff changeset
159 * @return
c6929e63b0b8 first import
dwinter
parents:
diff changeset
160 * @throws ClientProtocolException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
161 * @throws IOException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
162 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
163 public HttpResponse eScidocPut(String command, URL url) throws IOException{
c6929e63b0b8 first import
dwinter
parents:
diff changeset
164
c6929e63b0b8 first import
dwinter
parents:
diff changeset
165 HttpPut httpput = new HttpPut(eScidocUrl+command);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
166 return eScidocRequestBase(httpput,command,url.openStream());
c6929e63b0b8 first import
dwinter
parents:
diff changeset
167 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
168 /**
c6929e63b0b8 first import
dwinter
parents:
diff changeset
169 * Sends a POST request to the escidoc client. performs a login if not done before.
c6929e63b0b8 first import
dwinter
parents:
diff changeset
170 * @param command
c6929e63b0b8 first import
dwinter
parents:
diff changeset
171 * @param body
c6929e63b0b8 first import
dwinter
parents:
diff changeset
172 * @return
c6929e63b0b8 first import
dwinter
parents:
diff changeset
173 * @throws ClientProtocolException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
174 * @throws IOException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
175 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
176 public HttpResponse eScidocPost(String command, InputStream body) throws IOException{
c6929e63b0b8 first import
dwinter
parents:
diff changeset
177 HttpPost httppost = new HttpPost(eScidocUrl+command);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
178 return eScidocRequestBase(httppost,command,body);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
179 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
180
c6929e63b0b8 first import
dwinter
parents:
diff changeset
181 /** Sends a POST request to the escidoc client. performs a login if not done before.
c6929e63b0b8 first import
dwinter
parents:
diff changeset
182 * @param command
c6929e63b0b8 first import
dwinter
parents:
diff changeset
183 * @param url
c6929e63b0b8 first import
dwinter
parents:
diff changeset
184 * @return
c6929e63b0b8 first import
dwinter
parents:
diff changeset
185 * @throws ClientProtocolException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
186 * @throws IOException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
187 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
188 public HttpResponse eScidocPost(String command, URL url) throws IOException{
c6929e63b0b8 first import
dwinter
parents:
diff changeset
189 HttpPost httppost = new HttpPost(eScidocUrl+command);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
190
c6929e63b0b8 first import
dwinter
parents:
diff changeset
191
c6929e63b0b8 first import
dwinter
parents:
diff changeset
192 return eScidocRequestBase(httppost,command,url.openStream());
c6929e63b0b8 first import
dwinter
parents:
diff changeset
193 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
194 /**
c6929e63b0b8 first import
dwinter
parents:
diff changeset
195 * Sends a GET request to the escidoc client. performs a login if not done before.
c6929e63b0b8 first import
dwinter
parents:
diff changeset
196 * @param command
c6929e63b0b8 first import
dwinter
parents:
diff changeset
197 * @return
c6929e63b0b8 first import
dwinter
parents:
diff changeset
198 * @throws ClientProtocolException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
199 * @throws IOException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
200 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
201 public HttpResponse eScidocGet(String command) throws IOException{
c6929e63b0b8 first import
dwinter
parents:
diff changeset
202 HttpGet httpget = new HttpGet(eScidocUrl+command);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
203 return eScidocRequestBase(httpget,command,null);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
204
c6929e63b0b8 first import
dwinter
parents:
diff changeset
205 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
206
c6929e63b0b8 first import
dwinter
parents:
diff changeset
207 /** Send a delete command to the escidoc client. performs a login if necessara
c6929e63b0b8 first import
dwinter
parents:
diff changeset
208 * @param command
c6929e63b0b8 first import
dwinter
parents:
diff changeset
209 * @return
c6929e63b0b8 first import
dwinter
parents:
diff changeset
210 * @throws ClientProtocolException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
211 * @throws IOException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
212 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
213 public HttpResponse eScidocDelete(String command) throws IOException{
c6929e63b0b8 first import
dwinter
parents:
diff changeset
214 HttpDelete httpdelete = new HttpDelete(eScidocUrl+command);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
215 return eScidocRequestBase(httpdelete,command,null);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
216
c6929e63b0b8 first import
dwinter
parents:
diff changeset
217 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
218 /**
c6929e63b0b8 first import
dwinter
parents:
diff changeset
219 * Generates and sends a general request to escidoc, used by escidocPUT, POST and GET.
c6929e63b0b8 first import
dwinter
parents:
diff changeset
220 * @param httpBase
c6929e63b0b8 first import
dwinter
parents:
diff changeset
221 * @param command
c6929e63b0b8 first import
dwinter
parents:
diff changeset
222 * @param body
c6929e63b0b8 first import
dwinter
parents:
diff changeset
223 * @return
c6929e63b0b8 first import
dwinter
parents:
diff changeset
224 * @throws ClientProtocolException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
225 * @throws IOException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
226 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
227 private HttpResponse eScidocRequestBase(HttpRequestBase httpBase, String command, InputStream body) throws IOException {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
228
c6929e63b0b8 first import
dwinter
parents:
diff changeset
229
c6929e63b0b8 first import
dwinter
parents:
diff changeset
230
c6929e63b0b8 first import
dwinter
parents:
diff changeset
231 if (httpclient==null)
c6929e63b0b8 first import
dwinter
parents:
diff changeset
232 login();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
233
c6929e63b0b8 first import
dwinter
parents:
diff changeset
234
c6929e63b0b8 first import
dwinter
parents:
diff changeset
235
c6929e63b0b8 first import
dwinter
parents:
diff changeset
236 if (HttpEntityEnclosingRequestBase.class.isInstance(httpBase)){
c6929e63b0b8 first import
dwinter
parents:
diff changeset
237
c6929e63b0b8 first import
dwinter
parents:
diff changeset
238
c6929e63b0b8 first import
dwinter
parents:
diff changeset
239 if (body!=null){
c6929e63b0b8 first import
dwinter
parents:
diff changeset
240
c6929e63b0b8 first import
dwinter
parents:
diff changeset
241
c6929e63b0b8 first import
dwinter
parents:
diff changeset
242
c6929e63b0b8 first import
dwinter
parents:
diff changeset
243 HttpEntity entity = new InputStreamEntity(body, -1);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
244 ((HttpEntityEnclosingRequestBase)httpBase).setEntity(entity);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
245 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
246 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
247
2
dwinter
parents: 0
diff changeset
248 //logger.debug("executing request:"+httpBase.getRequestLine());
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
249
c6929e63b0b8 first import
dwinter
parents:
diff changeset
250
c6929e63b0b8 first import
dwinter
parents:
diff changeset
251 HttpResponse status = httpclient.execute(httpBase);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
252 //HttpEntity responseEntity = response.getEntity();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
253
c6929e63b0b8 first import
dwinter
parents:
diff changeset
254 logger.debug("----------------------------------------");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
255 logger.debug(status);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
256
c6929e63b0b8 first import
dwinter
parents:
diff changeset
257
c6929e63b0b8 first import
dwinter
parents:
diff changeset
258 return status;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
259 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
260
c6929e63b0b8 first import
dwinter
parents:
diff changeset
261 /**
c6929e63b0b8 first import
dwinter
parents:
diff changeset
262 *
c6929e63b0b8 first import
dwinter
parents:
diff changeset
263 * To convert the InputStream to String we use the BufferedReader.readLine()
c6929e63b0b8 first import
dwinter
parents:
diff changeset
264 * method. We iterate until the BufferedReader return null which means
c6929e63b0b8 first import
dwinter
parents:
diff changeset
265 * there's no more data to read. Each line will appended to a StringBuilder
c6929e63b0b8 first import
dwinter
parents:
diff changeset
266 * and returned as String.
c6929e63b0b8 first import
dwinter
parents:
diff changeset
267
c6929e63b0b8 first import
dwinter
parents:
diff changeset
268 * @param is
c6929e63b0b8 first import
dwinter
parents:
diff changeset
269 * @return
c6929e63b0b8 first import
dwinter
parents:
diff changeset
270 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
271 public static String convertStreamToString(InputStream is) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
272
c6929e63b0b8 first import
dwinter
parents:
diff changeset
273 BufferedReader reader = new BufferedReader(new InputStreamReader(is));
c6929e63b0b8 first import
dwinter
parents:
diff changeset
274 StringBuilder sb = new StringBuilder();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
275
c6929e63b0b8 first import
dwinter
parents:
diff changeset
276 String line = null;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
277 try {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
278 while ((line = reader.readLine()) != null) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
279 sb.append(line + "\n");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
280 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
281 } catch (IOException e) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
282 e.printStackTrace();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
283 } finally {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
284 try {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
285 is.close();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
286 } catch (IOException e) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
287 e.printStackTrace();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
288 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
289 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
290
c6929e63b0b8 first import
dwinter
parents:
diff changeset
291 return sb.toString();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
292 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
293
c6929e63b0b8 first import
dwinter
parents:
diff changeset
294 /** converts a stream to a string
c6929e63b0b8 first import
dwinter
parents:
diff changeset
295 * @param string
c6929e63b0b8 first import
dwinter
parents:
diff changeset
296 * @return
c6929e63b0b8 first import
dwinter
parents:
diff changeset
297 * @throws UnsupportedEncodingException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
298 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
299 public static InputStream convertStringToStream(String string) throws UnsupportedEncodingException{
c6929e63b0b8 first import
dwinter
parents:
diff changeset
300 return new ByteArrayInputStream(string.getBytes("utf-8"));
c6929e63b0b8 first import
dwinter
parents:
diff changeset
301 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
302
c6929e63b0b8 first import
dwinter
parents:
diff changeset
303 /**
c6929e63b0b8 first import
dwinter
parents:
diff changeset
304 * Find the last-modification-date from an escidoc xml-file (item/container/context)
c6929e63b0b8 first import
dwinter
parents:
diff changeset
305 * @param ret
c6929e63b0b8 first import
dwinter
parents:
diff changeset
306 * @return
c6929e63b0b8 first import
dwinter
parents:
diff changeset
307 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
308 public static String getDateStamp(String ret) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
309 Pattern p = Pattern.compile("last-modification-date=\"([^\"]*)\"");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
310
c6929e63b0b8 first import
dwinter
parents:
diff changeset
311 Matcher m = p.matcher(ret);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
312
c6929e63b0b8 first import
dwinter
parents:
diff changeset
313 m.find();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
314
c6929e63b0b8 first import
dwinter
parents:
diff changeset
315 String txt;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
316 try {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
317 txt = m.group(1);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
318 } catch (IllegalStateException e) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
319
c6929e63b0b8 first import
dwinter
parents:
diff changeset
320 e.printStackTrace();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
321 System.out.println(ret);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
322 throw new IllegalStateException();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
323 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
324 return txt;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
325 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
326
c6929e63b0b8 first import
dwinter
parents:
diff changeset
327 /**
c6929e63b0b8 first import
dwinter
parents:
diff changeset
328 * Find the content-modell (item)
c6929e63b0b8 first import
dwinter
parents:
diff changeset
329 * @param ret
c6929e63b0b8 first import
dwinter
parents:
diff changeset
330 * @return
c6929e63b0b8 first import
dwinter
parents:
diff changeset
331 * @throws IOException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
332 * @throws JDOMException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
333 * @throws UnsupportedEncodingException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
334 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
335 public static String getContentModel(InputStream escidocstream) throws UnsupportedEncodingException, JDOMException, IOException {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
336 SAXBuilder builder = new SAXBuilder();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
337 Document doc = builder.build(escidocstream);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
338
c6929e63b0b8 first import
dwinter
parents:
diff changeset
339 Element root= doc.getRootElement();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
340 XPath xpath = EScidocTools.getESciDocXpath("escidocItem:properties/srel:content-model/@xlink:href");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
341
c6929e63b0b8 first import
dwinter
parents:
diff changeset
342 Attribute node = (Attribute) xpath.selectSingleNode(root);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
343
c6929e63b0b8 first import
dwinter
parents:
diff changeset
344 return node.getValue();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
345
c6929e63b0b8 first import
dwinter
parents:
diff changeset
346 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
347
c6929e63b0b8 first import
dwinter
parents:
diff changeset
348
c6929e63b0b8 first import
dwinter
parents:
diff changeset
349 /**
c6929e63b0b8 first import
dwinter
parents:
diff changeset
350 * Find the escidoc:id from an escidoc xml (item/container/context)
c6929e63b0b8 first import
dwinter
parents:
diff changeset
351 * @param ret
c6929e63b0b8 first import
dwinter
parents:
diff changeset
352 * @return
c6929e63b0b8 first import
dwinter
parents:
diff changeset
353 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
354 public static String getId(String ret) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
355 Pattern p = Pattern.compile("xlink:href=\"([^\"]*)\"");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
356
c6929e63b0b8 first import
dwinter
parents:
diff changeset
357 Matcher m = p.matcher(ret);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
358
c6929e63b0b8 first import
dwinter
parents:
diff changeset
359 m.find();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
360 String txt = m.group(1);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
361 String[] splitted = txt.split("/");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
362
c6929e63b0b8 first import
dwinter
parents:
diff changeset
363 String id = splitted[splitted.length-1];
c6929e63b0b8 first import
dwinter
parents:
diff changeset
364 return id;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
365 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
366
c6929e63b0b8 first import
dwinter
parents:
diff changeset
367
c6929e63b0b8 first import
dwinter
parents:
diff changeset
368 /**
c6929e63b0b8 first import
dwinter
parents:
diff changeset
369 * Get the pid from an escidoc xml-file (item/container/context)
c6929e63b0b8 first import
dwinter
parents:
diff changeset
370 * @param retTxt
c6929e63b0b8 first import
dwinter
parents:
diff changeset
371 * @return
c6929e63b0b8 first import
dwinter
parents:
diff changeset
372 * @throws JDOMException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
373 * @throws IOException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
374 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
375 public static String getPID(String retTxt) throws JDOMException, IOException {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
376 SAXBuilder builder = new SAXBuilder();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
377
c6929e63b0b8 first import
dwinter
parents:
diff changeset
378
c6929e63b0b8 first import
dwinter
parents:
diff changeset
379 Document doc = builder.build(EScidocBasicHandler.convertStringToStream(retTxt));
c6929e63b0b8 first import
dwinter
parents:
diff changeset
380
c6929e63b0b8 first import
dwinter
parents:
diff changeset
381 XPath xpath = XPath.newInstance("//prop:pid");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
382 xpath.addNamespace("prop", EScidocTools.prop);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
383
c6929e63b0b8 first import
dwinter
parents:
diff changeset
384 Element node = (Element) xpath.selectSingleNode(doc);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
385
c6929e63b0b8 first import
dwinter
parents:
diff changeset
386 return node.getTextTrim();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
387
c6929e63b0b8 first import
dwinter
parents:
diff changeset
388 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
389
c6929e63b0b8 first import
dwinter
parents:
diff changeset
390
c6929e63b0b8 first import
dwinter
parents:
diff changeset
391 /**
c6929e63b0b8 first import
dwinter
parents:
diff changeset
392 * get the number of the last version from an escidoc xml-file (item/container/context)
c6929e63b0b8 first import
dwinter
parents:
diff changeset
393 * @param retTxt
c6929e63b0b8 first import
dwinter
parents:
diff changeset
394 * @return
c6929e63b0b8 first import
dwinter
parents:
diff changeset
395 * @throws JDOMException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
396 * @throws IOException
c6929e63b0b8 first import
dwinter
parents:
diff changeset
397 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
398 public static String getLastVersionNumber(String retTxt) throws JDOMException, IOException {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
399 SAXBuilder builder = new SAXBuilder();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
400
c6929e63b0b8 first import
dwinter
parents:
diff changeset
401 Document doc = builder.build(EScidocBasicHandler.convertStringToStream(retTxt));
c6929e63b0b8 first import
dwinter
parents:
diff changeset
402
c6929e63b0b8 first import
dwinter
parents:
diff changeset
403
c6929e63b0b8 first import
dwinter
parents:
diff changeset
404 XPath xpath = XPath.newInstance("//prop:version[@xlink:title='This Version']/version:number");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
405 xpath.addNamespace("prop", EScidocTools.prop);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
406 xpath.addNamespace("xlink", EScidocTools.xlink);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
407 xpath.addNamespace("version", EScidocTools.version);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
408
c6929e63b0b8 first import
dwinter
parents:
diff changeset
409 Element node = (Element) xpath.selectSingleNode(doc);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
410
c6929e63b0b8 first import
dwinter
parents:
diff changeset
411 return node.getText();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
412 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
413
c6929e63b0b8 first import
dwinter
parents:
diff changeset
414 public static Object getXPath(Element node, String string,boolean single) throws JDOMException {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
415 XPath xpath= XPath.newInstance(string);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
416 xpath.addNamespace("dc",EScidocTools.DC);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
417 xpath.addNamespace("escidocComponents",EScidocTools.escidocComponents);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
418 xpath.addNamespace("prop",EScidocTools.prop);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
419 xpath.addNamespace("xlink",EScidocTools.xlink);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
420 xpath.addNamespace("mpiwg",EScidocTools.MPIWG);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
421 xpath.addNamespace("version",EScidocTools.version);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
422
c6929e63b0b8 first import
dwinter
parents:
diff changeset
423 if (single)
c6929e63b0b8 first import
dwinter
parents:
diff changeset
424 return xpath.selectSingleNode(node);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
425 else
c6929e63b0b8 first import
dwinter
parents:
diff changeset
426 return xpath.selectNodes(node);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
427 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
428
c6929e63b0b8 first import
dwinter
parents:
diff changeset
429
c6929e63b0b8 first import
dwinter
parents:
diff changeset
430
c6929e63b0b8 first import
dwinter
parents:
diff changeset
431 public Long writeItem(eSciDocXmlObject escidocItem) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
432 // TODO Auto-generated method stub
c6929e63b0b8 first import
dwinter
parents:
diff changeset
433 return null;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
434 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
435
c6929e63b0b8 first import
dwinter
parents:
diff changeset
436
c6929e63b0b8 first import
dwinter
parents:
diff changeset
437
c6929e63b0b8 first import
dwinter
parents:
diff changeset
438 public Boolean createItem(eSciDocXmlObject escidocItem) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
439 String cmd="/ir/item";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
440
c6929e63b0b8 first import
dwinter
parents:
diff changeset
441 try {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
442 String retStr = escidocItem.printXML();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
443 String newObj = createObject(cmd, retStr);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
444 return escidocItem.upDateFromXML(newObj);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
445 } catch (Exception e) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
446 // TODO Auto-generated catch block
c6929e63b0b8 first import
dwinter
parents:
diff changeset
447 e.printStackTrace();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
448 return false;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
449 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
450
c6929e63b0b8 first import
dwinter
parents:
diff changeset
451
c6929e63b0b8 first import
dwinter
parents:
diff changeset
452 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
453
c6929e63b0b8 first import
dwinter
parents:
diff changeset
454 public String createObject (String command,String xml) throws Exception {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
455
c6929e63b0b8 first import
dwinter
parents:
diff changeset
456
c6929e63b0b8 first import
dwinter
parents:
diff changeset
457 InputStream stream = new ByteArrayInputStream(xml.getBytes("utf-8"));
c6929e63b0b8 first import
dwinter
parents:
diff changeset
458
c6929e63b0b8 first import
dwinter
parents:
diff changeset
459
c6929e63b0b8 first import
dwinter
parents:
diff changeset
460
c6929e63b0b8 first import
dwinter
parents:
diff changeset
461 //DefaultHttpClient httpclient = login();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
462
c6929e63b0b8 first import
dwinter
parents:
diff changeset
463
c6929e63b0b8 first import
dwinter
parents:
diff changeset
464
c6929e63b0b8 first import
dwinter
parents:
diff changeset
465 HttpResponse eScidocPut = eScidocPut(command, stream);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
466
c6929e63b0b8 first import
dwinter
parents:
diff changeset
467
c6929e63b0b8 first import
dwinter
parents:
diff changeset
468 //HttpEntity responseEntity = eScidocPut.getEntity();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
469
c6929e63b0b8 first import
dwinter
parents:
diff changeset
470 System.out.println("----------------------------------------");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
471 System.out.println(eScidocPut.getStatusLine());
c6929e63b0b8 first import
dwinter
parents:
diff changeset
472
c6929e63b0b8 first import
dwinter
parents:
diff changeset
473 int code = eScidocPut.getStatusLine().getStatusCode();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
474
c6929e63b0b8 first import
dwinter
parents:
diff changeset
475 InputStream st = eScidocPut.getEntity().getContent();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
476 //System.out.println(EScidocBasicHandler.convertStreamToString(st));
c6929e63b0b8 first import
dwinter
parents:
diff changeset
477 String xmlret = EScidocBasicHandler.convertStreamToString(st);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
478 if (code !=200){
c6929e63b0b8 first import
dwinter
parents:
diff changeset
479 logger.error(xmlret);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
480 throw (new Exception("CAN not DO error:"+code));
c6929e63b0b8 first import
dwinter
parents:
diff changeset
481
c6929e63b0b8 first import
dwinter
parents:
diff changeset
482 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
483 return xmlret;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
484
c6929e63b0b8 first import
dwinter
parents:
diff changeset
485 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
486
c6929e63b0b8 first import
dwinter
parents:
diff changeset
487
c6929e63b0b8 first import
dwinter
parents:
diff changeset
488
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
489 public String getIDfromPID(String pid, String context) throws ConnectorException {
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
490
c6929e63b0b8 first import
dwinter
parents:
diff changeset
491
c6929e63b0b8 first import
dwinter
parents:
diff changeset
492 String filter = "<param><filter name=\"http://escidoc.de/core/01/properties/pid\">";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
493
c6929e63b0b8 first import
dwinter
parents:
diff changeset
494 filter += pid;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
495 filter += "</filter></param>";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
496
c6929e63b0b8 first import
dwinter
parents:
diff changeset
497 String command = context
c6929e63b0b8 first import
dwinter
parents:
diff changeset
498 + "/resources/members/filter";
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
499 HttpResponse result;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
500 try {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
501 result = eScidocPost(command,
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
502 new ByteArrayInputStream(filter.getBytes()));
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
503 } catch (IOException e) {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
504 // TODO Auto-generated catch block
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
505 e.printStackTrace();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
506 throw new ConnectorException();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
507 }
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
508
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
509 try {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
510 Document dom = new SAXBuilder().build(result.getEntity().getContent());
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
511
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
512 XPath xp = EScidocTools.getESciDocXpath("//escidocItem:item/@xlink:href");
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
513
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
514 Attribute attr = (Attribute)xp.selectSingleNode(dom);
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
515
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
516 if (attr!=null){
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
517 return attr.getValue();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
518 }
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
519
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
520 return null;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
521 //return convertStreamToString(result.getEntity().getContent());
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
522 } catch (IllegalStateException e) {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
523 // TODO Auto-generated catch block
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
524 e.printStackTrace();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
525 throw new ConnectorException();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
526 } catch (JDOMException e) {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
527 // TODO Auto-generated catch block
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
528 e.printStackTrace();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
529 throw new ConnectorException();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
530 } catch (IOException e) {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
531 // TODO Auto-generated catch block
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
532 e.printStackTrace();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
533 throw new ConnectorException();
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
534 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
535
c6929e63b0b8 first import
dwinter
parents:
diff changeset
536
c6929e63b0b8 first import
dwinter
parents:
diff changeset
537 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
538
c6929e63b0b8 first import
dwinter
parents:
diff changeset
539
c6929e63b0b8 first import
dwinter
parents:
diff changeset
540
c6929e63b0b8 first import
dwinter
parents:
diff changeset
541 public HttpResponse submitAnObject(eSciDocXmlObject obj, String comment) throws ClientProtocolException, IOException, JDOMException {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
542 try {
2
dwinter
parents: 0
diff changeset
543 //addVersionPid(obj);
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
544 } catch (Exception e) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
545 // TODO: handle exception
c6929e63b0b8 first import
dwinter
parents:
diff changeset
546 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
547
c6929e63b0b8 first import
dwinter
parents:
diff changeset
548 String retTxt = obj.printXML();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
549 String dateStamp = EScidocBasicHandler.getDateStamp(retTxt);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
550
c6929e63b0b8 first import
dwinter
parents:
diff changeset
551 String param = "<param last-modification-date=\""+dateStamp+"\">";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
552 param+="<comment>"+comment+"</comment>";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
553 param+="</param>";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
554
c6929e63b0b8 first import
dwinter
parents:
diff changeset
555 String command=obj.getESciDocId()+"/submit";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
556 HttpResponse result = eScidocPost(command, EScidocBasicHandler.convertStringToStream(param));
c6929e63b0b8 first import
dwinter
parents:
diff changeset
557
c6929e63b0b8 first import
dwinter
parents:
diff changeset
558 return result;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
559
c6929e63b0b8 first import
dwinter
parents:
diff changeset
560 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
561
4
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
562 public List<eSciDocXmlObject> getObjectsFromFilterResult(String command, String objectXpath) throws IOException, IllegalStateException, JDOMException,ESciDocXmlObjectException {
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
563 //String filter = "<param><filter></filter></param>";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
564 //
c6929e63b0b8 first import
dwinter
parents:
diff changeset
565 //String command = context
c6929e63b0b8 first import
dwinter
parents:
diff changeset
566 // + "/resources/members/filter";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
567 //HttpResponse result =eScidocPost(command,
c6929e63b0b8 first import
dwinter
parents:
diff changeset
568 //new ByteArrayInputStream(filter.getBytes()));
c6929e63b0b8 first import
dwinter
parents:
diff changeset
569
c6929e63b0b8 first import
dwinter
parents:
diff changeset
570 //String command = context+"/resources/members";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
571
c6929e63b0b8 first import
dwinter
parents:
diff changeset
572 HttpResponse result =eScidocGet(command);
2
dwinter
parents: 0
diff changeset
573 //InputStream text=result.getEntity().getContent();
dwinter
parents: 0
diff changeset
574 //String tmtxt = convertStreamToString(text);
dwinter
parents: 0
diff changeset
575 //System.out.println(tmtxt);
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
576 Document dom = new SAXBuilder().build(result.getEntity().getContent());
c6929e63b0b8 first import
dwinter
parents:
diff changeset
577 XPath xp = EScidocTools.getESciDocXpath(objectXpath);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
578
2
dwinter
parents: 0
diff changeset
579
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
580 List<Element> attr = (List<Element>)xp.selectNodes(dom);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
581 ArrayList<eSciDocXmlObject> ret = new ArrayList<eSciDocXmlObject>();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
582 for (Element el: attr){
c6929e63b0b8 first import
dwinter
parents:
diff changeset
583 ret.add(new eSciDocXmlObject(el));
c6929e63b0b8 first import
dwinter
parents:
diff changeset
584 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
585 return ret;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
586 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
587
2
dwinter
parents: 0
diff changeset
588 public Integer getNumberOfHitsFromFilterResult(String command,
dwinter
parents: 0
diff changeset
589 String objectXPath, int mode) throws IOException, IllegalStateException, JDOMException {
dwinter
parents: 0
diff changeset
590 String query="";
dwinter
parents: 0
diff changeset
591 if(mode==0 | mode==2){
dwinter
parents: 0
diff changeset
592 query="query=%22/properties/version/status%22=pending";
dwinter
parents: 0
diff changeset
593 } else {
dwinter
parents: 0
diff changeset
594 query="query=%22/properties/version/status%22=submitted";
dwinter
parents: 0
diff changeset
595 }
dwinter
parents: 0
diff changeset
596
dwinter
parents: 0
diff changeset
597 HttpResponse result =eScidocGet(command+"?maximumRecords=1&"+query);
dwinter
parents: 0
diff changeset
598 //InputStream text=result.getEntity().getContent();
dwinter
parents: 0
diff changeset
599 //String tmtxt = convertStreamToString(text);
dwinter
parents: 0
diff changeset
600 //System.out.println(tmtxt);
dwinter
parents: 0
diff changeset
601 Document dom = new SAXBuilder().build(result.getEntity().getContent());
dwinter
parents: 0
diff changeset
602 XPath xp = EScidocTools.getESciDocXpath("//srw:numberOfRecords");
dwinter
parents: 0
diff changeset
603
dwinter
parents: 0
diff changeset
604 Element attr = (Element)xp.selectSingleNode(dom);
dwinter
parents: 0
diff changeset
605
dwinter
parents: 0
diff changeset
606 Integer tmpInt = Integer.valueOf(attr.getText());
dwinter
parents: 0
diff changeset
607 return tmpInt;
dwinter
parents: 0
diff changeset
608 }
dwinter
parents: 0
diff changeset
609
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
610 public boolean addVersionPid(eSciDocXmlObject obj) throws ClientProtocolException, IOException, JDOMException{
c6929e63b0b8 first import
dwinter
parents:
diff changeset
611 //HttpResponse ret = eScidocGet(href);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
612 //String retTxt = EScidocBasicHandler.convertStreamToString(ret.getEntity().getContent());
c6929e63b0b8 first import
dwinter
parents:
diff changeset
613
c6929e63b0b8 first import
dwinter
parents:
diff changeset
614 String retTxt = obj.printXML();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
615 String dateStamp = EScidocBasicHandler.getDateStamp(retTxt);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
616 String pid=EScidocBasicHandler.getPID(retTxt);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
617 String versionNumber = EScidocBasicHandler.getLastVersionNumber(retTxt);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
618
c6929e63b0b8 first import
dwinter
parents:
diff changeset
619 String vpid=pid+":"+versionNumber;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
620
c6929e63b0b8 first import
dwinter
parents:
diff changeset
621 String param = "<param last-modification-date=\""+dateStamp+"\">";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
622 param+="<pid>"+vpid+"</pid>";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
623 param+="</param>";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
624 String command=obj.getESciDocId()+"/assign-version-pid";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
625
c6929e63b0b8 first import
dwinter
parents:
diff changeset
626 HttpResponse result = eScidocPost(command, EScidocBasicHandler.convertStringToStream(param));
c6929e63b0b8 first import
dwinter
parents:
diff changeset
627
c6929e63b0b8 first import
dwinter
parents:
diff changeset
628 int code = result.getStatusLine().getStatusCode();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
629 result.getEntity().consumeContent();
2
dwinter
parents: 0
diff changeset
630 if (code!=200){
dwinter
parents: 0
diff changeset
631 if(code==450)
dwinter
parents: 0
diff changeset
632 return false;
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
633 return false;
2
dwinter
parents: 0
diff changeset
634 }
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
635 return true;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
636
c6929e63b0b8 first import
dwinter
parents:
diff changeset
637
c6929e63b0b8 first import
dwinter
parents:
diff changeset
638 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
639
c6929e63b0b8 first import
dwinter
parents:
diff changeset
640
c6929e63b0b8 first import
dwinter
parents:
diff changeset
641
c6929e63b0b8 first import
dwinter
parents:
diff changeset
642 public HttpResponse releaseAnObject(eSciDocXmlObject obj, String comment) throws IOException, JDOMException {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
643 //HttpResponse ret = getEsciDocHandler().eScidocGet(href);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
644 //String retTxt = EScidocBasicHandler.convertStreamToString(ret.getEntity().getContent());
c6929e63b0b8 first import
dwinter
parents:
diff changeset
645
c6929e63b0b8 first import
dwinter
parents:
diff changeset
646 String retTxt = obj.printXML();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
647 String dateStamp = EScidocBasicHandler.getDateStamp(retTxt);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
648
c6929e63b0b8 first import
dwinter
parents:
diff changeset
649 String param = "<param last-modification-date=\""+dateStamp+"\">";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
650 param+="<comment>"+comment+"</comment>";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
651 param+="</param>";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
652
c6929e63b0b8 first import
dwinter
parents:
diff changeset
653 String command=obj.getESciDocId()+"/release";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
654 HttpResponse result = eScidocPost(command, EScidocBasicHandler.convertStringToStream(param));
c6929e63b0b8 first import
dwinter
parents:
diff changeset
655
c6929e63b0b8 first import
dwinter
parents:
diff changeset
656 return result;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
657
c6929e63b0b8 first import
dwinter
parents:
diff changeset
658
c6929e63b0b8 first import
dwinter
parents:
diff changeset
659
c6929e63b0b8 first import
dwinter
parents:
diff changeset
660
c6929e63b0b8 first import
dwinter
parents:
diff changeset
661 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
662
c6929e63b0b8 first import
dwinter
parents:
diff changeset
663
c6929e63b0b8 first import
dwinter
parents:
diff changeset
664
c6929e63b0b8 first import
dwinter
parents:
diff changeset
665 public boolean upDateObject(eSciDocXmlObject obj) throws Exception {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
666 HttpResponse result = eScidocGet(obj.getESciDocId());
c6929e63b0b8 first import
dwinter
parents:
diff changeset
667 if (result.getStatusLine().getStatusCode()!=200){
c6929e63b0b8 first import
dwinter
parents:
diff changeset
668 logger.debug(result.getEntity().getContent());
c6929e63b0b8 first import
dwinter
parents:
diff changeset
669 return false;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
670 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
671
c6929e63b0b8 first import
dwinter
parents:
diff changeset
672 String xml = convertStreamToString(result.getEntity().getContent());
c6929e63b0b8 first import
dwinter
parents:
diff changeset
673 obj.upDateFromXML(xml);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
674 return true;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
675 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
676
c6929e63b0b8 first import
dwinter
parents:
diff changeset
677
c6929e63b0b8 first import
dwinter
parents:
diff changeset
678
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
679 public ECHOObject alreadyExists(String indexField, String testString, String context) throws ConnectorException, ObjectNotUniqueError {
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
680
c6929e63b0b8 first import
dwinter
parents:
diff changeset
681 String[] ct = context.split("/"); // gebraucht wird hier nur die id, dh ohne /ir/...
c6929e63b0b8 first import
dwinter
parents:
diff changeset
682
c6929e63b0b8 first import
dwinter
parents:
diff changeset
683 String contextId=ct[ct.length-1];
c6929e63b0b8 first import
dwinter
parents:
diff changeset
684
c6929e63b0b8 first import
dwinter
parents:
diff changeset
685
c6929e63b0b8 first import
dwinter
parents:
diff changeset
686 String searchString = String.format("\"%s\"=\"%s\"",indexField,testString);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
687 searchString += " and "+String.format("\"%s\"=\"%s\"","/properties/context/id",contextId);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
688
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
689 HttpResponse ret;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
690 try{
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
691 searchString = URLEncoder.encode(searchString,"utf-8");
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
692 ret = eScidocGet("/ir/items?operation=searchRetrieve&version=1.1&query="+searchString);
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
693 } catch (UnsupportedEncodingException e) {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
694 throw new ConnectorException();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
695 } catch (IOException e) {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
696 // TODO Auto-generated catch block
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
697 e.printStackTrace();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
698 throw new ConnectorException();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
699 }
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
700
c6929e63b0b8 first import
dwinter
parents:
diff changeset
701 if (ret.getStatusLine().getStatusCode()!=200)
c6929e63b0b8 first import
dwinter
parents:
diff changeset
702 {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
703 logger.debug("alreadyExists: error searchstring:"+searchString);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
704 HttpEntity ent = ret.getEntity();
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
705 if (ent!=null) {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
706 try {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
707 ent.consumeContent();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
708 } catch (IOException e) {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
709 // TODO Auto-generated catch block
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
710 e.printStackTrace();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
711 throw new ConnectorException();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
712 }
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
713 throw new ConnectorException();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
714 }
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
715 }
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
716
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
717 try{
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
718 Document doc = new SAXBuilder().build(ret.getEntity().getContent());
c6929e63b0b8 first import
dwinter
parents:
diff changeset
719
c6929e63b0b8 first import
dwinter
parents:
diff changeset
720 XPath xp = EScidocTools.getESciDocXpath("//zs:numberOfRecords/text()");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
721 String hitsStr = ((Text)xp.selectSingleNode(doc)).getText();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
722 Integer hits = Integer.valueOf(hitsStr);
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
723 if (hits>0){
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
724 if (hits>1)
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
725 throw new ObjectNotUniqueError();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
726 return getOldObjectFromESciDoc(doc);
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
727 }
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
728 return null;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
729 } catch (IOException e) {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
730 e.printStackTrace();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
731 throw new ConnectorException();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
732 } catch (IllegalStateException e) {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
733 // TODO Auto-generated catch block
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
734 e.printStackTrace();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
735 throw new ConnectorException();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
736 } catch (JDOMException e) {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
737 // TODO Auto-generated catch block
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
738 e.printStackTrace();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
739 throw new ConnectorException();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
740 }
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
741 }
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
742
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
743
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
744
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
745 private ECHOObject getOldObjectFromESciDoc(Document doc) {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
746 Map<String,String>retMap = new HashMap<String,String>();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
747 XPath md5Nodes;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
748 XPath itemId;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
749 XPath lastModificationDate;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
750 try {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
751 md5Nodes= EScidocTools.getESciDocXpath(".//escidocComponents:component/escidocComponents:properties[prop:content-category[text()='index_meta']]/prop:checksum");
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
752 itemId= EScidocTools.getESciDocXpath(".//escidocItem:item/@xlink:href");
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
753 lastModificationDate = EScidocTools.getESciDocXpath(".//escidocItem:item/@last-modification-date");
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
754 } catch (JDOMException e) {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
755 // TODO Auto-generated catch block
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
756 e.printStackTrace();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
757 return null;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
758 }
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
759 Element node;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
760 Attribute idNode;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
761 Attribute lastModificationDateNode;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
762 try {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
763 node = (Element)md5Nodes.selectSingleNode(doc);
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
764 idNode = (Attribute)itemId.selectSingleNode(doc);
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
765 lastModificationDateNode =(Attribute)lastModificationDate.selectSingleNode(doc);
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
766
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
767 } catch (JDOMException e) {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
768 // TODO Auto-generated catch block
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
769 e.printStackTrace();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
770 return null;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
771 }
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
772 String md5= node.getTextTrim();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
773 String escidocId= idNode.getValue();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
774 ECHORessource er;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
775 try {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
776 er = new ECHORessource();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
777 er.eScidocId=escidocId;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
778 er.indexMetaMD5stored=md5;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
779 er.lastModificationDate= lastModificationDateNode.getValue();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
780 } catch (IOException e) {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
781 // TODO Auto-generated catch block
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
782 e.printStackTrace();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
783 return null;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
784 }
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
785 return er;
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
786 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
787
c6929e63b0b8 first import
dwinter
parents:
diff changeset
788
c6929e63b0b8 first import
dwinter
parents:
diff changeset
789
c6929e63b0b8 first import
dwinter
parents:
diff changeset
790 public ArrayList<String> getAllLinksOfContext(String string, String context) throws IOException, IllegalStateException, JDOMException {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
791
c6929e63b0b8 first import
dwinter
parents:
diff changeset
792 HttpResponse result = eScidocGet(context+"/resources/members");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
793 Document doc = new SAXBuilder().build(result.getEntity().getContent());
c6929e63b0b8 first import
dwinter
parents:
diff changeset
794 XPath xp = EScidocTools.getESciDocXpath("//escidocItem:item");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
795 XPath id = EScidocTools.getESciDocXpath("./@xlink:href");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
796
c6929e63b0b8 first import
dwinter
parents:
diff changeset
797 XPath url= EScidocTools.getESciDocXpath(".//escidocComponents:component[escidocComponents:properties/prop:content-category[text()='"+string+"']]/escidocComponents:content/@xlink:href");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
798
c6929e63b0b8 first import
dwinter
parents:
diff changeset
799 ArrayList<String> ret = new ArrayList<String>();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
800 List<Element> items = xp.selectNodes(doc);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
801
c6929e63b0b8 first import
dwinter
parents:
diff changeset
802 File fl = new File("/tmp/linksofcontext.out");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
803 FileWriter fw = new FileWriter(fl);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
804
c6929e63b0b8 first import
dwinter
parents:
diff changeset
805 for (Element item: items){
c6929e63b0b8 first import
dwinter
parents:
diff changeset
806
c6929e63b0b8 first import
dwinter
parents:
diff changeset
807 Attribute idAttribute = (Attribute)id.selectSingleNode(item);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
808 String idStr = idAttribute.getValue();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
809
c6929e63b0b8 first import
dwinter
parents:
diff changeset
810 Attribute urlAttribute = (Attribute)url.selectSingleNode(item);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
811 String urlStr = urlAttribute.getValue();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
812 ret.add(idStr+","+urlStr);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
813 logger.debug("getALLLinksOfContex:"+idStr+","+urlStr);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
814 fw.write(idStr+","+urlStr+"\n");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
815 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
816 fw.close();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
817 return ret;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
818 }
2
dwinter
parents: 0
diff changeset
819
dwinter
parents: 0
diff changeset
820
dwinter
parents: 0
diff changeset
821
4
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
822 public List<eSciDocXmlObject> getObjectsFromSearch(String field, String value) throws ESciDocXmlObjectException {
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
823 String query = "/srw/search/escidoc_all?operation=searchRetrieve&version=1.1&query=";
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
824 query+=field+"%3d";
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
825 try {
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
826 query+=URLEncoder.encode(value, "utf-8");
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
827 } catch (UnsupportedEncodingException e) {
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
828 // TODO Auto-generated catch block
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
829 e.printStackTrace();
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
830 throw new ESciDocXmlObjectException();
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
831 }
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
832
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
833 try {
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
834 return getObjectsFromFilterResult(query, "//escidocItem:item");
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
835 } catch (IllegalStateException e) {
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
836 // TODO Auto-generated catch block
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
837 e.printStackTrace();
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
838 } catch (IOException e) {
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
839 // TODO Auto-generated catch block
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
840 e.printStackTrace();
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
841 } catch (JDOMException e) {
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
842 // TODO Auto-generated catch block
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
843 e.printStackTrace();
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
844 }
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
845
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
846 throw new ESciDocXmlObjectException(); // fehler wenn kein return
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
847 }
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
848
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
849
cb5668b07bfc neuer check ob datei schon existiert.
dwinter
parents: 3
diff changeset
850
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
851
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
852
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 2
diff changeset
853
2
dwinter
parents: 0
diff changeset
854
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
855 }