annotate src/de/mpiwg/itgroup/nimanager/persons/PersonByNameService.java @ 6:290d859f036b

ID search
author dwinter
date Thu, 29 Dec 2011 15:20:37 +0100
parents cdc4c12262b1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1384a0d382fa first input
dwinter
parents:
diff changeset
1 package de.mpiwg.itgroup.nimanager.persons;
1384a0d382fa first input
dwinter
parents:
diff changeset
2
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
3 import java.io.IOException;
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
4 import java.io.InputStream;
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
5 import java.io.StringWriter;
0
1384a0d382fa first input
dwinter
parents:
diff changeset
6 import java.io.UnsupportedEncodingException;
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
7 import java.io.Writer;
0
1384a0d382fa first input
dwinter
parents:
diff changeset
8 import java.net.URLDecoder;
1384a0d382fa first input
dwinter
parents:
diff changeset
9 import java.sql.SQLException;
1384a0d382fa first input
dwinter
parents:
diff changeset
10 import java.util.ArrayList;
1384a0d382fa first input
dwinter
parents:
diff changeset
11 import java.util.HashMap;
1384a0d382fa first input
dwinter
parents:
diff changeset
12 import java.util.List;
1384a0d382fa first input
dwinter
parents:
diff changeset
13 import java.util.Map;
1384a0d382fa first input
dwinter
parents:
diff changeset
14
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
15 import org.apache.commons.io.IOUtils;
0
1384a0d382fa first input
dwinter
parents:
diff changeset
16 import org.json.JSONArray;
1384a0d382fa first input
dwinter
parents:
diff changeset
17 import org.openrdf.model.Statement;
1384a0d382fa first input
dwinter
parents:
diff changeset
18 import org.openrdf.repository.RepositoryException;
1384a0d382fa first input
dwinter
parents:
diff changeset
19 import org.openrdf.repository.RepositoryResult;
1384a0d382fa first input
dwinter
parents:
diff changeset
20 import org.restlet.Context;
2
e3ecb88314a5 minor bugs
dwinter
parents: 0
diff changeset
21 import org.restlet.data.ClientInfo;
0
1384a0d382fa first input
dwinter
parents:
diff changeset
22 import org.restlet.data.Form;
1384a0d382fa first input
dwinter
parents:
diff changeset
23 import org.restlet.data.MediaType;
1384a0d382fa first input
dwinter
parents:
diff changeset
24 import org.restlet.data.Status;
1384a0d382fa first input
dwinter
parents:
diff changeset
25 import org.restlet.engine.component.ChildContext;
1384a0d382fa first input
dwinter
parents:
diff changeset
26 import org.restlet.ext.json.JsonRepresentation;
1384a0d382fa first input
dwinter
parents:
diff changeset
27 import org.restlet.representation.Representation;
1384a0d382fa first input
dwinter
parents:
diff changeset
28 import org.restlet.representation.StringRepresentation;
1384a0d382fa first input
dwinter
parents:
diff changeset
29 import org.restlet.resource.Get;
1384a0d382fa first input
dwinter
parents:
diff changeset
30 import org.restlet.resource.Options;
1384a0d382fa first input
dwinter
parents:
diff changeset
31 import org.restlet.resource.ServerResource;
1384a0d382fa first input
dwinter
parents:
diff changeset
32
4
f986e74583eb removed triplestorehandler componentes
dwinter
parents: 2
diff changeset
33 import de.mpiwg.itgroup.triplestoremanager.exceptions.TripleStoreHandlerException;
f986e74583eb removed triplestorehandler componentes
dwinter
parents: 2
diff changeset
34 import de.mpiwg.itgroup.triplestoremanager.owl.TripleStoreHandler;
f986e74583eb removed triplestorehandler componentes
dwinter
parents: 2
diff changeset
35
0
1384a0d382fa first input
dwinter
parents:
diff changeset
36 import virtuoso.jdbc4.VirtuosoResultSet;
4
f986e74583eb removed triplestorehandler componentes
dwinter
parents: 2
diff changeset
37
0
1384a0d382fa first input
dwinter
parents:
diff changeset
38
1384a0d382fa first input
dwinter
parents:
diff changeset
39 public class PersonByNameService extends ServerResource {
1384a0d382fa first input
dwinter
parents:
diff changeset
40
1384a0d382fa first input
dwinter
parents:
diff changeset
41 private String VIRTUOSO_PW;
1384a0d382fa first input
dwinter
parents:
diff changeset
42 private String VIRTUOSO_USER;
1384a0d382fa first input
dwinter
parents:
diff changeset
43 private String virtuoso_server_url;
1384a0d382fa first input
dwinter
parents:
diff changeset
44 private String RELATION_FOR_NAME_SEARCH = "http://xmlns.com/foaf/0.1/name";
1384a0d382fa first input
dwinter
parents:
diff changeset
45 private String PERSONS_CONTEXT;
1384a0d382fa first input
dwinter
parents:
diff changeset
46 private TripleStoreHandler th;
1384a0d382fa first input
dwinter
parents:
diff changeset
47
1384a0d382fa first input
dwinter
parents:
diff changeset
48 public PersonByNameService() {
1384a0d382fa first input
dwinter
parents:
diff changeset
49 ChildContext context = (ChildContext)Context.getCurrent();
1384a0d382fa first input
dwinter
parents:
diff changeset
50 virtuoso_server_url = context.getParameters().getFirstValue("de.mpwig.itgroup.personSearch.virtuoso.url");
1384a0d382fa first input
dwinter
parents:
diff changeset
51 VIRTUOSO_PW = context.getParameters().getFirstValue("de.mpwig.itgroup.personSearch.virtuoso.pw");
1384a0d382fa first input
dwinter
parents:
diff changeset
52 VIRTUOSO_USER = context.getParameters().getFirstValue("de.mpwig.itgroup.personSearch.virtuoso.user");
1384a0d382fa first input
dwinter
parents:
diff changeset
53 PERSONS_CONTEXT = context.getParameters().getFirstValue("de.mpwig.itgroup.personSearch.virtuoso.personsGraphURI");
1384a0d382fa first input
dwinter
parents:
diff changeset
54 //th = TripleStoreHandler.getInstance("jdbc:virtuoso://virtuoso.mpiwg-berlin.mpg.de:1111", "dba", "dba");
1384a0d382fa first input
dwinter
parents:
diff changeset
55 try {
1384a0d382fa first input
dwinter
parents:
diff changeset
56 th = new TripleStoreHandler(virtuoso_server_url, VIRTUOSO_USER, VIRTUOSO_PW);
1384a0d382fa first input
dwinter
parents:
diff changeset
57 } catch (TripleStoreHandlerException e) {
1384a0d382fa first input
dwinter
parents:
diff changeset
58 // TODO Auto-generated catch block
1384a0d382fa first input
dwinter
parents:
diff changeset
59 e.printStackTrace();
1384a0d382fa first input
dwinter
parents:
diff changeset
60 }
1384a0d382fa first input
dwinter
parents:
diff changeset
61 }
1384a0d382fa first input
dwinter
parents:
diff changeset
62
1384a0d382fa first input
dwinter
parents:
diff changeset
63 @Options
1384a0d382fa first input
dwinter
parents:
diff changeset
64 public void doOptions(Representation entity) {
1384a0d382fa first input
dwinter
parents:
diff changeset
65 Form responseHeaders = (Form) getResponse().getAttributes().get(
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
66 "org.restlet.http.headers");
0
1384a0d382fa first input
dwinter
parents:
diff changeset
67 if (responseHeaders == null) {
1384a0d382fa first input
dwinter
parents:
diff changeset
68 responseHeaders = new Form();
1384a0d382fa first input
dwinter
parents:
diff changeset
69 getResponse().getAttributes().put("org.restlet.http.headers",
1384a0d382fa first input
dwinter
parents:
diff changeset
70 responseHeaders);
1384a0d382fa first input
dwinter
parents:
diff changeset
71 }
1384a0d382fa first input
dwinter
parents:
diff changeset
72 responseHeaders.add("Access-Control-Allow-Origin", "*");
1384a0d382fa first input
dwinter
parents:
diff changeset
73 responseHeaders.add("Access-Control-Allow-Methods", "POST,OPTIONS,GET");
1384a0d382fa first input
dwinter
parents:
diff changeset
74 responseHeaders.add("Access-Control-Allow-Headers", "Content-Type");
1384a0d382fa first input
dwinter
parents:
diff changeset
75 responseHeaders.add("Access-Control-Allow-Credentials", "false");
1384a0d382fa first input
dwinter
parents:
diff changeset
76 responseHeaders.add("Access-Control-Max-Age", "60");
1384a0d382fa first input
dwinter
parents:
diff changeset
77 }
1384a0d382fa first input
dwinter
parents:
diff changeset
78
1384a0d382fa first input
dwinter
parents:
diff changeset
79 public Representation getTest() {
1384a0d382fa first input
dwinter
parents:
diff changeset
80 return new StringRepresentation("TEST");
1384a0d382fa first input
dwinter
parents:
diff changeset
81 }
1384a0d382fa first input
dwinter
parents:
diff changeset
82
1384a0d382fa first input
dwinter
parents:
diff changeset
83 @Get("json")
1384a0d382fa first input
dwinter
parents:
diff changeset
84 public Representation getJson() {
1384a0d382fa first input
dwinter
parents:
diff changeset
85 Form responseHeaders = (Form) getResponse().getAttributes().get(
1384a0d382fa first input
dwinter
parents:
diff changeset
86 "org.restlet.http.headers");
1384a0d382fa first input
dwinter
parents:
diff changeset
87 if (responseHeaders == null) {
1384a0d382fa first input
dwinter
parents:
diff changeset
88 responseHeaders = new Form();
1384a0d382fa first input
dwinter
parents:
diff changeset
89 getResponse().getAttributes().put("org.restlet.http.headers",
1384a0d382fa first input
dwinter
parents:
diff changeset
90 responseHeaders);
1384a0d382fa first input
dwinter
parents:
diff changeset
91 }
1384a0d382fa first input
dwinter
parents:
diff changeset
92 responseHeaders.add("Access-Control-Allow-Origin", "*");
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
93
0
1384a0d382fa first input
dwinter
parents:
diff changeset
94 JSONArray resultsJsonArray = new JSONArray();
1384a0d382fa first input
dwinter
parents:
diff changeset
95 try {
1384a0d382fa first input
dwinter
parents:
diff changeset
96 String id = (String) getRequest().getAttributes().get("name");
1384a0d382fa first input
dwinter
parents:
diff changeset
97 id = URLDecoder.decode(id, "utf-8");
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
98
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
99 //InputStream is = getClass().getResourceAsStream("de/mpiwg/itgroup/nimanager/persons/personQueryString");
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
100 InputStream is = getClass().getResourceAsStream("personQueryString");
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
101 Writer sw = new StringWriter();
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
102 IOUtils.copy(is, sw,"utf-8");
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
103
6
290d859f036b ID search
dwinter
parents: 5
diff changeset
104 String queryPersonWPMD=String.format(sw.toString(), id,id);
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
105
0
1384a0d382fa first input
dwinter
parents:
diff changeset
106 java.sql.Statement smt = th.sqlCon.createStatement();
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
107
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
108
0
1384a0d382fa first input
dwinter
parents:
diff changeset
109 smt.execute(queryPersonWPMD);
1384a0d382fa first input
dwinter
parents:
diff changeset
110 VirtuosoResultSet rs = (VirtuosoResultSet) smt.getResultSet();
1384a0d382fa first input
dwinter
parents:
diff changeset
111 Map<String,String> resultMap = new HashMap<String, String>();
1384a0d382fa first input
dwinter
parents:
diff changeset
112 while(rs.next()){
1384a0d382fa first input
dwinter
parents:
diff changeset
113 if (rs.getString("person")!=null){
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
114 resultMap.put("person",rs.getString("person"));
0
1384a0d382fa first input
dwinter
parents:
diff changeset
115 }else {
1384a0d382fa first input
dwinter
parents:
diff changeset
116 resultMap.put("person","");
1384a0d382fa first input
dwinter
parents:
diff changeset
117 }
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
118 if (rs.getString("objects")!=null){
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
119 resultMap.put("wikipedia",rs.getString("objects"));
0
1384a0d382fa first input
dwinter
parents:
diff changeset
120 } else {
1384a0d382fa first input
dwinter
parents:
diff changeset
121 resultMap.put("wikipedia","");
1384a0d382fa first input
dwinter
parents:
diff changeset
122 }
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
123 if (rs.getString("gnd")!=null){
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
124 resultMap.put("gnd",rs.getString("gnd"));
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
125 } else {
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
126 resultMap.put("gnd","");
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
127 }
0
1384a0d382fa first input
dwinter
parents:
diff changeset
128 if (rs.getString("birthDate")!=null){
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
129 resultMap.put("birthDate",rs.getString("birthDate"));
0
1384a0d382fa first input
dwinter
parents:
diff changeset
130 } else {
1384a0d382fa first input
dwinter
parents:
diff changeset
131 resultMap.put("birthDate","");
1384a0d382fa first input
dwinter
parents:
diff changeset
132 }
1384a0d382fa first input
dwinter
parents:
diff changeset
133 if (rs.getString("deathDate")!=null){
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
134 resultMap.put("deathDate",rs.getString("deathDate"));
0
1384a0d382fa first input
dwinter
parents:
diff changeset
135 } else {
1384a0d382fa first input
dwinter
parents:
diff changeset
136 resultMap.put("deathDate","");
1384a0d382fa first input
dwinter
parents:
diff changeset
137 }
1384a0d382fa first input
dwinter
parents:
diff changeset
138 resultMap.put("name",id);
1384a0d382fa first input
dwinter
parents:
diff changeset
139 resultsJsonArray.put(resultMap);
1384a0d382fa first input
dwinter
parents:
diff changeset
140 }
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
141
0
1384a0d382fa first input
dwinter
parents:
diff changeset
142 return new JsonRepresentation(resultsJsonArray);
1384a0d382fa first input
dwinter
parents:
diff changeset
143
1384a0d382fa first input
dwinter
parents:
diff changeset
144 } catch (UnsupportedEncodingException e) {
1384a0d382fa first input
dwinter
parents:
diff changeset
145 e.printStackTrace();
1384a0d382fa first input
dwinter
parents:
diff changeset
146 setStatus(Status.SERVER_ERROR_INTERNAL, "REPOSITORY ERROR");
1384a0d382fa first input
dwinter
parents:
diff changeset
147 return new JsonRepresentation(new JSONArray());
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
148
0
1384a0d382fa first input
dwinter
parents:
diff changeset
149 } catch (SQLException e) {
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
150
0
1384a0d382fa first input
dwinter
parents:
diff changeset
151 e.printStackTrace();
1384a0d382fa first input
dwinter
parents:
diff changeset
152 setStatus(Status.SERVER_ERROR_INTERNAL, "REPOSITORY SQL ERROR");
1384a0d382fa first input
dwinter
parents:
diff changeset
153 return new JsonRepresentation(new JSONArray());
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
154
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
155 } catch (IOException e) {
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
156 // TODO Auto-generated catch block
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
157 e.printStackTrace();
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
158 setStatus(Status.SERVER_ERROR_INTERNAL);
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
159 return new JsonRepresentation(new JSONArray());
0
1384a0d382fa first input
dwinter
parents:
diff changeset
160 }
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
161
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
162
0
1384a0d382fa first input
dwinter
parents:
diff changeset
163 }
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
164
0
1384a0d382fa first input
dwinter
parents:
diff changeset
165 @Get("xml")
1384a0d382fa first input
dwinter
parents:
diff changeset
166 public Representation getXML() {
1384a0d382fa first input
dwinter
parents:
diff changeset
167 List<MediaType> supported=new ArrayList<MediaType>();
1384a0d382fa first input
dwinter
parents:
diff changeset
168 supported.add(MediaType.APPLICATION_JSON);
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
169
2
e3ecb88314a5 minor bugs
dwinter
parents: 0
diff changeset
170 ClientInfo ci = getRequest().getClientInfo();
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
171
2
e3ecb88314a5 minor bugs
dwinter
parents: 0
diff changeset
172 if(ci==null){ //don't know why this can happen, but sometimes does
e3ecb88314a5 minor bugs
dwinter
parents: 0
diff changeset
173 setStatus(Status.SERVER_ERROR_INTERNAL);
e3ecb88314a5 minor bugs
dwinter
parents: 0
diff changeset
174 return null;
e3ecb88314a5 minor bugs
dwinter
parents: 0
diff changeset
175 }
0
1384a0d382fa first input
dwinter
parents:
diff changeset
176 MediaType types = getRequest().getClientInfo().getPreferredMediaType(supported);
1384a0d382fa first input
dwinter
parents:
diff changeset
177 if (types.equals(MediaType.APPLICATION_JSON))
1384a0d382fa first input
dwinter
parents:
diff changeset
178 return getJson();
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
179
0
1384a0d382fa first input
dwinter
parents:
diff changeset
180 try {
1384a0d382fa first input
dwinter
parents:
diff changeset
181 String id = (String) getRequest().getAttributes().get("name");
1384a0d382fa first input
dwinter
parents:
diff changeset
182 id = URLDecoder.decode(id, "utf-8");
1384a0d382fa first input
dwinter
parents:
diff changeset
183 RepositoryResult<Statement> statements = th.getStatements(null,
1384a0d382fa first input
dwinter
parents:
diff changeset
184 th.createUri(RELATION_FOR_NAME_SEARCH),
1384a0d382fa first input
dwinter
parents:
diff changeset
185 th.createLiteral(id, "en"), PERSONS_CONTEXT);
1384a0d382fa first input
dwinter
parents:
diff changeset
186 String ret = "<results>";
1384a0d382fa first input
dwinter
parents:
diff changeset
187 while (statements.hasNext()) {
1384a0d382fa first input
dwinter
parents:
diff changeset
188 Statement statement = statements.next();
1384a0d382fa first input
dwinter
parents:
diff changeset
189 ret += "<result subj=\"" + statement.getSubject().stringValue()
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
190 + "\"/>";
0
1384a0d382fa first input
dwinter
parents:
diff changeset
191 }
1384a0d382fa first input
dwinter
parents:
diff changeset
192 ret += "</results>";
1384a0d382fa first input
dwinter
parents:
diff changeset
193
1384a0d382fa first input
dwinter
parents:
diff changeset
194 return new StringRepresentation(ret, MediaType.TEXT_XML);
1384a0d382fa first input
dwinter
parents:
diff changeset
195
1384a0d382fa first input
dwinter
parents:
diff changeset
196 } catch (RepositoryException e) {
1384a0d382fa first input
dwinter
parents:
diff changeset
197
1384a0d382fa first input
dwinter
parents:
diff changeset
198 e.printStackTrace();
1384a0d382fa first input
dwinter
parents:
diff changeset
199 setStatus(Status.SERVER_ERROR_INTERNAL, "REPOSITORY ERROR");
1384a0d382fa first input
dwinter
parents:
diff changeset
200 return new StringRepresentation(
1384a0d382fa first input
dwinter
parents:
diff changeset
201 "<xml><error>Repository Error</error></xml>",
1384a0d382fa first input
dwinter
parents:
diff changeset
202 MediaType.TEXT_XML);
1384a0d382fa first input
dwinter
parents:
diff changeset
203 } catch (UnsupportedEncodingException e) {
1384a0d382fa first input
dwinter
parents:
diff changeset
204 e.printStackTrace();
1384a0d382fa first input
dwinter
parents:
diff changeset
205 setStatus(Status.SERVER_ERROR_INTERNAL, "REPOSITORY ERROR");
1384a0d382fa first input
dwinter
parents:
diff changeset
206 return new StringRepresentation(
1384a0d382fa first input
dwinter
parents:
diff changeset
207 "<xml><error>Unsupported encoding</error></xml>",
1384a0d382fa first input
dwinter
parents:
diff changeset
208 MediaType.TEXT_XML);
1384a0d382fa first input
dwinter
parents:
diff changeset
209 }
1384a0d382fa first input
dwinter
parents:
diff changeset
210 }
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
211
0
1384a0d382fa first input
dwinter
parents:
diff changeset
212 @Get("html")
1384a0d382fa first input
dwinter
parents:
diff changeset
213 public Representation getHTML() {
1384a0d382fa first input
dwinter
parents:
diff changeset
214
1384a0d382fa first input
dwinter
parents:
diff changeset
215 List<MediaType> supported=new ArrayList<MediaType>();
1384a0d382fa first input
dwinter
parents:
diff changeset
216 supported.add(MediaType.APPLICATION_JSON);
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
217
2
e3ecb88314a5 minor bugs
dwinter
parents: 0
diff changeset
218 ClientInfo ci = getRequest().getClientInfo();
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
219
2
e3ecb88314a5 minor bugs
dwinter
parents: 0
diff changeset
220 if(ci==null){ //don't know why this can happen, but sometimes does
e3ecb88314a5 minor bugs
dwinter
parents: 0
diff changeset
221 setStatus(Status.SERVER_ERROR_INTERNAL);
e3ecb88314a5 minor bugs
dwinter
parents: 0
diff changeset
222 return null;
e3ecb88314a5 minor bugs
dwinter
parents: 0
diff changeset
223 }
e3ecb88314a5 minor bugs
dwinter
parents: 0
diff changeset
224 MediaType types = ci.getPreferredMediaType(supported);
e3ecb88314a5 minor bugs
dwinter
parents: 0
diff changeset
225 if (types!=null)
e3ecb88314a5 minor bugs
dwinter
parents: 0
diff changeset
226 if (types.equals(MediaType.APPLICATION_JSON))
e3ecb88314a5 minor bugs
dwinter
parents: 0
diff changeset
227 return getJson();
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
228
0
1384a0d382fa first input
dwinter
parents:
diff changeset
229 Form responseHeaders = (Form) getResponse().getAttributes().get(
1384a0d382fa first input
dwinter
parents:
diff changeset
230 "org.restlet.http.headers");
1384a0d382fa first input
dwinter
parents:
diff changeset
231 if (responseHeaders == null) {
1384a0d382fa first input
dwinter
parents:
diff changeset
232 responseHeaders = new Form();
1384a0d382fa first input
dwinter
parents:
diff changeset
233 getResponse().getAttributes().put("org.restlet.http.headers",
1384a0d382fa first input
dwinter
parents:
diff changeset
234 responseHeaders);
1384a0d382fa first input
dwinter
parents:
diff changeset
235 }
1384a0d382fa first input
dwinter
parents:
diff changeset
236 responseHeaders.add("Access-Control-Allow-Origin", "*");
1384a0d382fa first input
dwinter
parents:
diff changeset
237 try {
1384a0d382fa first input
dwinter
parents:
diff changeset
238 String id = (String) getRequest().getAttributes().get("name");
1384a0d382fa first input
dwinter
parents:
diff changeset
239 id = URLDecoder.decode(id, "utf-8");
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
240
6
290d859f036b ID search
dwinter
parents: 5
diff changeset
241 InputStream is = getClass().getResourceAsStream("personQueryStringFull");
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
242 Writer sw = new StringWriter();
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
243 IOUtils.copy(is, sw,"utf-8");
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
244
6
290d859f036b ID search
dwinter
parents: 5
diff changeset
245 String queryPersonWPMD=String.format(sw.toString(), id,id);
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
246
0
1384a0d382fa first input
dwinter
parents:
diff changeset
247 java.sql.Statement smt = th.sqlCon.createStatement();
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
248
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
249
0
1384a0d382fa first input
dwinter
parents:
diff changeset
250 smt.execute(queryPersonWPMD);
1384a0d382fa first input
dwinter
parents:
diff changeset
251 VirtuosoResultSet rs = (VirtuosoResultSet) smt.getResultSet();
1384a0d382fa first input
dwinter
parents:
diff changeset
252
6
290d859f036b ID search
dwinter
parents: 5
diff changeset
253
290d859f036b ID search
dwinter
parents: 5
diff changeset
254 String person="";
290d859f036b ID search
dwinter
parents: 5
diff changeset
255 String bd="";
290d859f036b ID search
dwinter
parents: 5
diff changeset
256 String dd="";
290d859f036b ID search
dwinter
parents: 5
diff changeset
257
290d859f036b ID search
dwinter
parents: 5
diff changeset
258 String ret = "";
290d859f036b ID search
dwinter
parents: 5
diff changeset
259
290d859f036b ID search
dwinter
parents: 5
diff changeset
260 List<String> alternateMPIWGAdresses = new ArrayList<String>();
290d859f036b ID search
dwinter
parents: 5
diff changeset
261
0
1384a0d382fa first input
dwinter
parents:
diff changeset
262 while(rs.next()){
6
290d859f036b ID search
dwinter
parents: 5
diff changeset
263 person= rs.getString("person");
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
264 String gnd= rs.getString("gnd");
6
290d859f036b ID search
dwinter
parents: 5
diff changeset
265
290d859f036b ID search
dwinter
parents: 5
diff changeset
266
290d859f036b ID search
dwinter
parents: 5
diff changeset
267 String bdNew= rs.getString("birthDate"); // setzte Geburtsdatum, falls noch nicht geschehen
290d859f036b ID search
dwinter
parents: 5
diff changeset
268 if (bdNew!=null && bd.equals("")){
290d859f036b ID search
dwinter
parents: 5
diff changeset
269 bd=bdNew;
290d859f036b ID search
dwinter
parents: 5
diff changeset
270 }
290d859f036b ID search
dwinter
parents: 5
diff changeset
271 String ddNew= rs.getString("deathDate"); // setzte Todesdatum, falls noch nicht geschehen
290d859f036b ID search
dwinter
parents: 5
diff changeset
272 if (ddNew!=null && dd.equals("")){
290d859f036b ID search
dwinter
parents: 5
diff changeset
273 dd=ddNew;
290d859f036b ID search
dwinter
parents: 5
diff changeset
274 }
290d859f036b ID search
dwinter
parents: 5
diff changeset
275
290d859f036b ID search
dwinter
parents: 5
diff changeset
276 String person2=rs.getString("person2"); // get alternative MPIWG ID
290d859f036b ID search
dwinter
parents: 5
diff changeset
277 if (person2!=null){
290d859f036b ID search
dwinter
parents: 5
diff changeset
278 alternateMPIWGAdresses.add(person2);
290d859f036b ID search
dwinter
parents: 5
diff changeset
279 }
290d859f036b ID search
dwinter
parents: 5
diff changeset
280 ret+=String.format("<li>external ID:<a href=\"%s\">%s </a></li>",gnd,gnd);
290d859f036b ID search
dwinter
parents: 5
diff changeset
281
290d859f036b ID search
dwinter
parents: 5
diff changeset
282 String sameID = rs.getString("gndSame");
290d859f036b ID search
dwinter
parents: 5
diff changeset
283 if (sameID!=null){
290d859f036b ID search
dwinter
parents: 5
diff changeset
284 ret+=String.format("<li>external ID: <a href=\"%s\">%s </a></li>",sameID,sameID);
290d859f036b ID search
dwinter
parents: 5
diff changeset
285 }
0
1384a0d382fa first input
dwinter
parents:
diff changeset
286 }
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
287
6
290d859f036b ID search
dwinter
parents: 5
diff changeset
288 ret = "<html><body><div id=\"resultNames\">"+
290d859f036b ID search
dwinter
parents: 5
diff changeset
289 String.format("<div>%s (%s-%s)</div>",id,bd,dd)+
290d859f036b ID search
dwinter
parents: 5
diff changeset
290 String.format("<div>MPIWG ID:<a href=\"%s\">%s </a></div><ul>",person,person)+
290d859f036b ID search
dwinter
parents: 5
diff changeset
291 ret+
290d859f036b ID search
dwinter
parents: 5
diff changeset
292 "</ul>";
290d859f036b ID search
dwinter
parents: 5
diff changeset
293 if(alternateMPIWGAdresses.size()>0){
290d859f036b ID search
dwinter
parents: 5
diff changeset
294 ret+="<div><div>Alternative MPIWG addresses (don't use)</div><ul>";
290d859f036b ID search
dwinter
parents: 5
diff changeset
295 for (String alt: alternateMPIWGAdresses){
290d859f036b ID search
dwinter
parents: 5
diff changeset
296 ret+=String.format("<li><a href=\"%s\">%s </a></li>",alt,alt);
290d859f036b ID search
dwinter
parents: 5
diff changeset
297 }
290d859f036b ID search
dwinter
parents: 5
diff changeset
298 ret+="</ul></div>";
290d859f036b ID search
dwinter
parents: 5
diff changeset
299 }
290d859f036b ID search
dwinter
parents: 5
diff changeset
300
290d859f036b ID search
dwinter
parents: 5
diff changeset
301 ret+="</div></body></html>";
0
1384a0d382fa first input
dwinter
parents:
diff changeset
302
1384a0d382fa first input
dwinter
parents:
diff changeset
303 return new StringRepresentation(ret, MediaType.TEXT_HTML);
1384a0d382fa first input
dwinter
parents:
diff changeset
304
1384a0d382fa first input
dwinter
parents:
diff changeset
305 } catch (UnsupportedEncodingException e) {
1384a0d382fa first input
dwinter
parents:
diff changeset
306 e.printStackTrace();
1384a0d382fa first input
dwinter
parents:
diff changeset
307 setStatus(Status.SERVER_ERROR_INTERNAL, "REPOSITORY ERROR");
1384a0d382fa first input
dwinter
parents:
diff changeset
308 return new StringRepresentation(
1384a0d382fa first input
dwinter
parents:
diff changeset
309 "<xml><error>Unsupported encoding</error></xml>",
1384a0d382fa first input
dwinter
parents:
diff changeset
310 MediaType.TEXT_HTML);
1384a0d382fa first input
dwinter
parents:
diff changeset
311 } catch (SQLException e) {
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
312
0
1384a0d382fa first input
dwinter
parents:
diff changeset
313 e.printStackTrace();
1384a0d382fa first input
dwinter
parents:
diff changeset
314 setStatus(Status.SERVER_ERROR_INTERNAL, "REPOSITORY SQL ERROR");
1384a0d382fa first input
dwinter
parents:
diff changeset
315 return new StringRepresentation(
1384a0d382fa first input
dwinter
parents:
diff changeset
316 "<xml><error>Unsupported encoding</error></xml>",
1384a0d382fa first input
dwinter
parents:
diff changeset
317 MediaType.TEXT_HTML);
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
318 } catch (IOException e) {
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
319 e.printStackTrace();
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
320 setStatus(Status.SERVER_ERROR_INTERNAL);
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
321 return null;
0
1384a0d382fa first input
dwinter
parents:
diff changeset
322 }
1384a0d382fa first input
dwinter
parents:
diff changeset
323 }
1384a0d382fa first input
dwinter
parents:
diff changeset
324
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
325 public List<Map<String,String>> getMaps(String id){
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
326 ArrayList<Map<String, String>> retList = new ArrayList<Map<String,String>>();
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
327 try {
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
328
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
329
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
330 //InputStream is = getClass().getResourceAsStream("de/mpiwg/itgroup/nimanager/persons/personQueryString");
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
331 InputStream is = getClass().getResourceAsStream("personQueryString");
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
332 Writer sw = new StringWriter();
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
333 IOUtils.copy(is, sw,"utf-8");
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
334
6
290d859f036b ID search
dwinter
parents: 5
diff changeset
335 String queryPersonWPMD=String.format(sw.toString(), id,id);
5
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
336
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
337 java.sql.Statement smt = th.sqlCon.createStatement();
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
338
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
339
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
340 smt.execute(queryPersonWPMD);
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
341 VirtuosoResultSet rs = (VirtuosoResultSet) smt.getResultSet();
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
342 Map<String,String> resultMap = new HashMap<String, String>();
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
343 while(rs.next()){
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
344 if (rs.getString("person")!=null){
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
345 resultMap.put("person",rs.getString("person"));
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
346 }else {
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
347 resultMap.put("person","");
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
348 }
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
349 if (rs.getString("objects")!=null){
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
350 resultMap.put("wikipedia",rs.getString("objects"));
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
351 } else {
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
352 resultMap.put("wikipedia","");
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
353 }
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
354 if (rs.getString("gnd")!=null){
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
355 resultMap.put("gnd",rs.getString("gnd"));
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
356 } else {
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
357 resultMap.put("gnd","");
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
358 }
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
359 if (rs.getString("birthDate")!=null){
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
360 resultMap.put("birthDate",rs.getString("birthDate"));
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
361 } else {
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
362 resultMap.put("birthDate","");
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
363 }
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
364 if (rs.getString("deathDate")!=null){
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
365 resultMap.put("deathDate",rs.getString("deathDate"));
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
366 } else {
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
367 resultMap.put("deathDate","");
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
368 }
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
369 resultMap.put("name",id);
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
370 retList.add(resultMap);
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
371 }
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
372
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
373 return retList;
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
374
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
375 } catch (UnsupportedEncodingException e) {
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
376 e.printStackTrace();
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
377
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
378 return null;
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
379
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
380 } catch (SQLException e) {
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
381
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
382 e.printStackTrace();
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
383
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
384 return null;
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
385
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
386 } catch (IOException e) {
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
387 // TODO Auto-generated catch block
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
388 e.printStackTrace();
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
389 setStatus(Status.SERVER_ERROR_INTERNAL);
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
390 return null;
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
391 }
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
392
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
393
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
394
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
395
cdc4c12262b1 minor changes
dwinter
parents: 4
diff changeset
396 }
0
1384a0d382fa first input
dwinter
parents:
diff changeset
397 }