annotate src/de/mpiwg/itgroup/eSciDoc/Tools/EScidocBasicHandler.java @ 2:fab8e78184fa

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