5
|
1 package de.mpiwg.itgroup.annotationManager.drupal;
|
|
2
|
|
3 import java.io.BufferedReader;
|
|
4 import java.io.ByteArrayInputStream;
|
|
5 import java.io.IOException;
|
|
6 import java.io.InputStream;
|
|
7 import java.io.InputStreamReader;
|
|
8 import java.io.UnsupportedEncodingException;
|
|
9
|
|
10 import org.apache.http.Header;
|
|
11 import org.apache.http.HttpEntity;
|
|
12 import org.apache.http.HttpResponse;
|
|
13 import org.apache.http.client.ClientProtocolException;
|
|
14 import org.apache.http.client.methods.HttpPost;
|
|
15 import org.apache.http.entity.BasicHttpEntity;
|
|
16 import org.apache.http.impl.client.DefaultHttpClient;
|
|
17 import org.apache.http.message.BasicHeader;
|
|
18 import org.apache.log4j.Logger;
|
|
19 import org.json.JSONException;
|
|
20 import org.json.JSONObject;
|
|
21 import org.json.JSONTokener;
|
|
22 import org.restlet.Context;
|
|
23
|
|
24 public class AnnotationHandler {
|
|
25
|
|
26 //
|
|
27 public String drupalURL;
|
|
28
|
|
29 private Logger logger = Logger.getRootLogger();
|
|
30
|
|
31 public String drupalRestURL;
|
|
32
|
|
33 public AnnotationHandler(String drupalURL){
|
|
34 this.drupalURL=drupalURL;
|
|
35 drupalRestURL = drupalURL+"/rest";
|
|
36
|
|
37 };
|
|
38
|
|
39 public JSONObject createAnnotation(String title,String annot,String user, String password) throws UnknowUserException{
|
|
40 DefaultHttpClient httpclient = new DefaultHttpClient();
|
|
41 JSONObject uo;
|
|
42 try {
|
|
43 uo = new JSONObject();
|
|
44 uo.put("username", user);
|
|
45 uo.put("password", password);
|
|
46 } catch (JSONException e) {
|
|
47 // TODO Auto-generated catch block
|
|
48 e.printStackTrace();
|
|
49 return null;
|
|
50 }
|
|
51
|
|
52 HttpEntity ent = postJSON(httpclient, uo, "/user/login");
|
|
53
|
|
54
|
|
55
|
|
56 try {
|
|
57 String retString =convertStreamToString(ent.getContent());
|
|
58 if (retString==null){
|
|
59 throw new UnknowUserException();
|
|
60 }
|
|
61
|
|
62 } catch (IOException e) {
|
|
63 // TODO Auto-generated catch block
|
|
64 e.printStackTrace();
|
|
65 }
|
|
66 JSONObject annotObject=null;
|
|
67
|
|
68 try {
|
|
69 annotObject = new JSONObject();
|
|
70 annotObject.put("type", "page");
|
|
71
|
|
72
|
|
73 JSONObject body = new JSONObject();
|
|
74 JSONObject content = new JSONObject();
|
|
75
|
|
76 content.put("value", annot);
|
|
77 content.put("format", "full_html");
|
|
78 //content.put("safe_value", "<p>HELLO</p>");
|
|
79
|
|
80 JSONObject zw = new JSONObject();
|
|
81 zw.put("0", content);
|
|
82
|
|
83 body.put("und", zw);
|
|
84 body.put("name", user);
|
|
85 annotObject.put("body", body);
|
|
86 annotObject.put("title", title);
|
|
87
|
|
88 } catch (JSONException e) {
|
|
89 // TODO: handle exception
|
|
90 }
|
|
91
|
|
92 ent =postJSON(httpclient,annotObject,"/node");
|
|
93
|
|
94 try {
|
|
95 String retString =convertStreamToString(ent.getContent());
|
|
96 JSONObject retOB= new JSONObject(retString);
|
|
97
|
|
98
|
|
99 retOB.put("node_uri",drupalURL+"/node/"+retOB.get("nid"));
|
|
100 return retOB;
|
|
101 } catch (IllegalStateException e) {
|
|
102 // TODO Auto-generated catch block
|
|
103 e.printStackTrace();
|
|
104 } catch (IOException e) {
|
|
105 // TODO Auto-generated catch block
|
|
106 e.printStackTrace();
|
|
107 } catch (JSONException e) {
|
|
108 // TODO Auto-generated catch block
|
|
109 e.printStackTrace();
|
|
110 }
|
|
111
|
|
112 return null;
|
|
113 }
|
|
114
|
|
115 protected HttpEntity postJSON(DefaultHttpClient httpclient, JSONObject uo,String command) {
|
|
116 HttpPost httppost = new HttpPost(drupalRestURL+command);
|
|
117 System.out.println("executing request" + httppost.getRequestLine());
|
|
118
|
|
119 BasicHttpEntity entity= new BasicHttpEntity();
|
|
120 try {
|
|
121 entity.setContent(convertStringToStream(uo.toString()));
|
|
122 } catch (UnsupportedEncodingException e) {
|
|
123 // TODO Auto-generated catch block
|
|
124 e.printStackTrace();
|
|
125 }
|
|
126
|
|
127 httppost.setEntity(entity);
|
|
128 entity.setContentType(new BasicHeader("Content-Type","application/json"));
|
|
129
|
|
130 HttpResponse response;
|
|
131 try {
|
|
132 response = httpclient.execute(httppost);
|
|
133 } catch (ClientProtocolException e) {
|
|
134 // TODO Auto-generated catch block
|
|
135 e.printStackTrace();
|
|
136 return null;
|
|
137 } catch (IOException e) {
|
|
138 // TODO Auto-generated catch block
|
|
139 e.printStackTrace();
|
|
140 return null;
|
|
141 }
|
|
142 HttpEntity resEntity = response.getEntity();
|
|
143
|
|
144 return resEntity;
|
|
145
|
|
146 }
|
|
147
|
|
148 /** converts a stream to a string
|
|
149 * @param string
|
|
150 * @return
|
|
151 * @throws UnsupportedEncodingException
|
|
152 */
|
|
153 public static InputStream convertStringToStream(String string) throws UnsupportedEncodingException{
|
|
154 return new ByteArrayInputStream(string.getBytes("utf-8"));
|
|
155 }
|
|
156
|
|
157 /**
|
|
158 *
|
|
159 * To convert the InputStream to String we use the BufferedReader.readLine()
|
|
160 * method. We iterate until the BufferedReader return null which means
|
|
161 * there's no more data to read. Each line will appended to a StringBuilder
|
|
162 * and returned as String.
|
|
163
|
|
164 * @param is
|
|
165 * @return
|
|
166 */
|
|
167 public static String convertStreamToString(InputStream is) {
|
|
168
|
|
169 BufferedReader reader = new BufferedReader(new InputStreamReader(is));
|
|
170 StringBuilder sb = new StringBuilder();
|
|
171
|
|
172 String line = null;
|
|
173 try {
|
|
174 while ((line = reader.readLine()) != null) {
|
|
175 sb.append(line + "\n");
|
|
176 }
|
|
177 } catch (IOException e) {
|
|
178 e.printStackTrace();
|
|
179 } finally {
|
|
180 try {
|
|
181 is.close();
|
|
182 } catch (IOException e) {
|
|
183 e.printStackTrace();
|
|
184 }
|
|
185 }
|
|
186
|
|
187 return sb.toString();
|
|
188 }
|
|
189
|
|
190 }
|