Mercurial > hg > fulltextSearchServer
comparison src/de/mpiwg/dwinter/fulltextSearchServer/ShowContentOfDocument.java @ 1:83e9a828e794
Version mit integrierter Suche ?ber XML-Volltexte
author | dwinter |
---|---|
date | Wed, 26 Jan 2011 14:41:34 +0100 |
parents | db87c1b7eb6d |
children | eef69274ef15 |
comparison
equal
deleted
inserted
replaced
0:db87c1b7eb6d | 1:83e9a828e794 |
---|---|
22 import javax.xml.transform.dom.DOMSource; | 22 import javax.xml.transform.dom.DOMSource; |
23 import javax.xml.transform.stream.StreamResult; | 23 import javax.xml.transform.stream.StreamResult; |
24 import javax.xml.transform.stream.StreamSource; | 24 import javax.xml.transform.stream.StreamSource; |
25 | 25 |
26 import org.apache.log4j.Logger; | 26 import org.apache.log4j.Logger; |
27 import org.restlet.Request; | |
28 import org.restlet.Response; | |
27 import org.restlet.data.Form; | 29 import org.restlet.data.Form; |
28 import org.restlet.data.MediaType; | 30 import org.restlet.data.MediaType; |
31 import org.restlet.data.Reference; | |
29 import org.restlet.data.Status; | 32 import org.restlet.data.Status; |
30 import org.restlet.representation.Representation; | 33 import org.restlet.representation.Representation; |
31 import org.restlet.representation.StringRepresentation; | 34 import org.restlet.representation.StringRepresentation; |
32 import org.restlet.resource.Get; | 35 import org.restlet.resource.Get; |
33 import org.restlet.resource.Options; | 36 import org.restlet.resource.Options; |
34 import org.restlet.resource.ServerResource; | 37 import org.restlet.resource.ServerResource; |
35 import org.w3c.dom.Document; | 38 import org.w3c.dom.Document; |
36 import org.xml.sax.SAXException; | 39 import org.xml.sax.SAXException; |
37 | 40 |
41 import de.mpiwg.dwinter.fulltext.search.xmlsearchadapter.XMLSearchServerAdapter; | |
38 import de.mpiwg.dwinter.fulltext.ticket.TicketWriter; | 42 import de.mpiwg.dwinter.fulltext.ticket.TicketWriter; |
39 import de.mpiwg.dwinter.fulltextSearchServer.Utils.DigilibTools; | 43 import de.mpiwg.dwinter.fulltextSearchServer.Utils.DigilibTools; |
40 import de.mpiwg.dwinter.fulltextSearchServer.Utils.XMLTools; | 44 import de.mpiwg.dwinter.fulltextSearchServer.Utils.XMLTools; |
41 | 45 |
42 /** | 46 /** |
139 String restPath = getRequest().getResourceRef().getRemainingPart(); | 143 String restPath = getRequest().getResourceRef().getRemainingPart(); |
140 logger.debug("ticket:"+ticket); | 144 logger.debug("ticket:"+ticket); |
141 logger.debug("lang:"+lang); | 145 logger.debug("lang:"+lang); |
142 logger.debug("textId:"+textId); | 146 logger.debug("textId:"+textId); |
143 logger.debug("restpath:"+restPath); | 147 logger.debug("restpath:"+restPath); |
144 String xml; | 148 String html; |
145 String txt; | 149 |
146 if (restPath.equals("")){ | 150 if (restPath.equals("")){ |
147 xml = showContent(ticket,lang,textId); | 151 html = showContent(ticket,lang,textId); |
148 if (xml==null){ | 152 if (html==null){ |
149 setStatus(Status.SUCCESS_ACCEPTED); | 153 setStatus(Status.SUCCESS_ACCEPTED); |
150 //still waiting | 154 //still waiting |
151 return new StringRepresentation("<dev>waiting</dev>",MediaType.TEXT_HTML); | 155 return new StringRepresentation("<dev>waiting</dev>",MediaType.TEXT_HTML); |
152 } | 156 } |
153 txt = XMLTools.transformToHTML(xml,"/de/mpiwg/dwinter/fulltextSearchServer/xsl/showContentOfDocumentToHTML.xsl"); | 157 html = XMLTools.transformToHTML(html,"/de/mpiwg/dwinter/fulltextSearchServer/xsl/showContentOfDocumentToHTML.xsl"); |
154 } else { | 158 } else { |
155 xml = processRestPath(ticket,lang,textId,restPath); | 159 html = processRestPath(ticket,lang,textId,restPath); |
156 if (xml==null){ | 160 if (html==null){ |
157 setStatus(Status.SUCCESS_ACCEPTED); | 161 setStatus(Status.SUCCESS_ACCEPTED); |
158 //still waiting | 162 //still waiting |
159 return new StringRepresentation("<dev>waiting</dev>",MediaType.TEXT_HTML); | 163 return new StringRepresentation("<dev>waiting</dev>",MediaType.TEXT_HTML); |
160 } | 164 } |
161 txt = XMLTools.transformToHTML(xml,"/de/mpiwg/dwinter/fulltextSearchServer/xsl/processRestPathOfDocumentToHTML.xsl"); | 165 |
162 //txt=xml; | 166 //txt=xml; |
163 } | 167 } |
164 | 168 |
165 StringRepresentation representation = new StringRepresentation(txt, | 169 StringRepresentation representation = new StringRepresentation(html, |
166 MediaType.TEXT_HTML) ; | 170 MediaType.TEXT_HTML) ; |
167 return representation; | 171 return representation; |
168 | 172 |
169 } | 173 } |
170 | 174 |
222 // TODO Auto-generated catch block | 226 // TODO Auto-generated catch block |
223 e.printStackTrace(); | 227 e.printStackTrace(); |
224 xml=null; | 228 xml=null; |
225 } | 229 } |
226 | 230 |
227 return xml; | 231 return XMLTools.transformToHTML(xml,"/de/mpiwg/dwinter/fulltextSearchServer/xsl/processRestPathOfDocumentToHTML.xsl"); |
228 | 232 |
229 } | 233 } |
230 | 234 |
231 /** | 235 /** |
232 * Rueckgabe der Treffer gemaess dem Darstellungsmode z.Z. wird nur digilib unterstuetzt, bzw. egal welcher | 236 * Rueckgabe der Treffer gemaess dem Darstellungsmode z.Z. wird nur digilib und generic unterstuetzt. |
233 * Mode angegeben wird es wird immer das gleiche gemacht, naemlich ein Link auf Digilib ausgegeben. | |
234 * Der Pfad ist in DIGIVIEWBASICSTRING festgelegt. | 237 * Der Pfad ist in DIGIVIEWBASICSTRING festgelegt. |
235 * @param ticket | 238 * @param ticket |
236 * @param lang | 239 * @param lang |
237 * @param textId | 240 * @param textId |
238 * @param pageFileName | 241 * @param pageFileName |
244 | 247 |
245 logger.debug("processRestWithMode"); | 248 logger.debug("processRestWithMode"); |
246 String ret="<xml xmlns:xlink=\"http://www.w3.org/1999/xlink\">"; | 249 String ret="<xml xmlns:xlink=\"http://www.w3.org/1999/xlink\">"; |
247 ret+="<pageFileName>"+pageFileName+"</pageFileName>"; | 250 ret+="<pageFileName>"+pageFileName+"</pageFileName>"; |
248 ArrayList<Double[]> points = new ArrayList<Double[]>(); | 251 ArrayList<Double[]> points = new ArrayList<Double[]>(); |
249 | 252 |
250 | 253 |
251 try { | 254 try { |
252 String xml = TicketWriter.getHitsOnPage(ticket,lang,textId,pageFileName); | 255 String xml = TicketWriter.getHitsOnPage(ticket,lang,textId,pageFileName); |
256 | |
253 Pattern linePattern = Pattern.compile("<line>(.*?)</line>",Pattern.MULTILINE); | 257 Pattern linePattern = Pattern.compile("<line>(.*?)</line>",Pattern.MULTILINE); |
254 Matcher m = linePattern.matcher(xml); | 258 Matcher m = linePattern.matcher(xml); |
255 | 259 |
256 while(m.find()){ | 260 // teste format des Restes wenn noch "/" dann Aufruf einer Seite direkt |
257 Double[] point = DigilibTools.calculatePoint(m.group(1)); | 261 |
258 points.add(point); | 262 |
263 if (mode.equals("digilib")){ | |
264 | |
265 String txt=handleDigilib(textId, pageFileName, ret, points, m); | |
266 return XMLTools.transformToHTML(txt,"/de/mpiwg/dwinter/fulltextSearchServer/xsl/processRestPathOfDocumentToHTML.xsl"); | |
259 } | 267 } |
260 | 268 else if (mode.equals("generic")){ |
261 String url = String.format(DigilibTools.DIGIVIEWBASICSTRING, DigilibTools.generateImagePath(textId,pageFileName),DigilibTools.generateMarksFromPoints(points)); | 269 if (m.find()){ // xmlfile ist fuer digilib ok, dann digilib |
262 | 270 String txt = handleDigilib(textId, pageFileName, ret, points, m); |
263 | 271 return XMLTools.transformToHTML(txt,"/de/mpiwg/dwinter/fulltextSearchServer/xsl/processRestPathOfDocumentToHTML.xsl"); |
264 ret+=String.format("<hitsOnPage xlink:href=\"%s\">%s</hitsOnPage>",url,textId); | 272 } else { |
273 //assume xml-treffer liste | |
274 | |
275 | |
276 String txt = handleXMLFullText(textId, pageFileName,ret, ticket, lang); | |
277 return XMLTools.transformToHTML(txt,"/de/mpiwg/dwinter/fulltextSearchServer/xsl/processRestPathOfDocumentToHTML.xsl"); | |
278 } | |
279 | |
280 | |
281 } else if (mode.equals("showXMLhits")){ | |
282 //String txt="<html><head>"+ | |
283 //"<base href=\""+XMLSearchServerAdapter.XMLServerBase+"\" />"+ | |
284 //"</head><body>"; | |
285 String txt= TicketWriter.getFileContent(ticket,lang,textId,pageFileName); | |
286 return txt; //+"</body></html>"; | |
287 } | |
288 | |
289 | |
290 } catch (FileNotFoundException e) { | |
291 // TODO Auto-generated catch block | |
292 e.printStackTrace(); | |
293 } catch (IOException e) { | |
294 // TODO Auto-generated catch block | |
295 e.printStackTrace(); | |
296 } | |
297 | |
298 return null; | |
299 } | |
300 | |
301 | |
302 | |
303 | |
304 protected String handleXMLFullText(String textId, String pageFileName, String ret, String ticket, | |
305 String lang) { | |
306 | |
307 try { | |
308 String[] morphquerySplitted=TicketWriter.getQueryString(lang,ticket).split(":"); | |
309 //string has normally the format field:query | |
310 String morphQuery= morphquerySplitted[morphquerySplitted.length-1]; | |
311 | |
312 String queryString = XMLSearchServerAdapter.XMLDocSearchBase + "document=" + textId.replace(":","/"); | |
313 //queryString += "&queryType=fulltext&query=" + morphQuery; | |
314 queryString += "&mode=text&query-type=fulltext&query=" + morphQuery; | |
315 | |
316 ret+=String.format("<hitsOnPage xlink:href=\"%s\">%s</hitsOnPage>",queryString,textId); | |
265 ret+="</xml>"; | 317 ret+="</xml>"; |
266 | |
267 | |
268 return ret; | |
269 | |
270 | |
271 } catch (FileNotFoundException e) { | 318 } catch (FileNotFoundException e) { |
272 // TODO Auto-generated catch block | 319 // TODO Auto-generated catch block |
273 e.printStackTrace(); | 320 e.printStackTrace(); |
274 } catch (IOException e) { | 321 } catch (IOException e) { |
275 // TODO Auto-generated catch block | 322 // TODO Auto-generated catch block |
276 e.printStackTrace(); | 323 e.printStackTrace(); |
277 } | 324 } |
278 | 325 return ret; |
279 return null; | 326 } |
327 | |
328 protected String handleDigilib(String textId, String pageFileName, String ret, | |
329 ArrayList<Double[]> points, Matcher m) { | |
330 while(m.find()){ | |
331 Double[] point = DigilibTools.calculatePoint(m.group(1)); | |
332 points.add(point); | |
333 } | |
334 | |
335 String url = String.format(DigilibTools.DIGIVIEWBASICSTRING, DigilibTools.generateImagePath(textId,pageFileName),DigilibTools.generateMarksFromPoints(points)); | |
336 | |
337 | |
338 ret+=String.format("<hitsOnPage xlink:href=\"%s\">%s</hitsOnPage>",url,textId); | |
339 ret+="</xml>"; | |
340 | |
341 | |
342 return ret; | |
280 } | 343 } |
281 | 344 |
282 | 345 |
283 | 346 |
284 | 347 |