Mercurial > hg > fulltextSearchServer
diff 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 |
line wrap: on
line diff
--- a/src/de/mpiwg/dwinter/fulltextSearchServer/ShowContentOfDocument.java Wed Nov 03 12:18:46 2010 +0100 +++ b/src/de/mpiwg/dwinter/fulltextSearchServer/ShowContentOfDocument.java Wed Jan 26 14:41:34 2011 +0100 @@ -24,8 +24,11 @@ import javax.xml.transform.stream.StreamSource; import org.apache.log4j.Logger; +import org.restlet.Request; +import org.restlet.Response; import org.restlet.data.Form; import org.restlet.data.MediaType; +import org.restlet.data.Reference; import org.restlet.data.Status; import org.restlet.representation.Representation; import org.restlet.representation.StringRepresentation; @@ -35,6 +38,7 @@ import org.w3c.dom.Document; import org.xml.sax.SAXException; +import de.mpiwg.dwinter.fulltext.search.xmlsearchadapter.XMLSearchServerAdapter; import de.mpiwg.dwinter.fulltext.ticket.TicketWriter; import de.mpiwg.dwinter.fulltextSearchServer.Utils.DigilibTools; import de.mpiwg.dwinter.fulltextSearchServer.Utils.XMLTools; @@ -141,28 +145,28 @@ logger.debug("lang:"+lang); logger.debug("textId:"+textId); logger.debug("restpath:"+restPath); - String xml; - String txt; + String html; + if (restPath.equals("")){ - xml = showContent(ticket,lang,textId); - if (xml==null){ + html = showContent(ticket,lang,textId); + if (html==null){ setStatus(Status.SUCCESS_ACCEPTED); //still waiting return new StringRepresentation("<dev>waiting</dev>",MediaType.TEXT_HTML); } - txt = XMLTools.transformToHTML(xml,"/de/mpiwg/dwinter/fulltextSearchServer/xsl/showContentOfDocumentToHTML.xsl"); + html = XMLTools.transformToHTML(html,"/de/mpiwg/dwinter/fulltextSearchServer/xsl/showContentOfDocumentToHTML.xsl"); } else { - xml = processRestPath(ticket,lang,textId,restPath); - if (xml==null){ + html = processRestPath(ticket,lang,textId,restPath); + if (html==null){ setStatus(Status.SUCCESS_ACCEPTED); //still waiting return new StringRepresentation("<dev>waiting</dev>",MediaType.TEXT_HTML); } - txt = XMLTools.transformToHTML(xml,"/de/mpiwg/dwinter/fulltextSearchServer/xsl/processRestPathOfDocumentToHTML.xsl"); + //txt=xml; } - StringRepresentation representation = new StringRepresentation(txt, + StringRepresentation representation = new StringRepresentation(html, MediaType.TEXT_HTML) ; return representation; @@ -224,13 +228,12 @@ xml=null; } - return xml; + return XMLTools.transformToHTML(xml,"/de/mpiwg/dwinter/fulltextSearchServer/xsl/processRestPathOfDocumentToHTML.xsl"); } /** - * Rueckgabe der Treffer gemaess dem Darstellungsmode z.Z. wird nur digilib unterstuetzt, bzw. egal welcher - * Mode angegeben wird es wird immer das gleiche gemacht, naemlich ein Link auf Digilib ausgegeben. + * Rueckgabe der Treffer gemaess dem Darstellungsmode z.Z. wird nur digilib und generic unterstuetzt. * Der Pfad ist in DIGIVIEWBASICSTRING festgelegt. * @param ticket * @param lang @@ -246,26 +249,42 @@ String ret="<xml xmlns:xlink=\"http://www.w3.org/1999/xlink\">"; ret+="<pageFileName>"+pageFileName+"</pageFileName>"; ArrayList<Double[]> points = new ArrayList<Double[]>(); - + try { String xml = TicketWriter.getHitsOnPage(ticket,lang,textId,pageFileName); + Pattern linePattern = Pattern.compile("<line>(.*?)</line>",Pattern.MULTILINE); Matcher m = linePattern.matcher(xml); - while(m.find()){ - Double[] point = DigilibTools.calculatePoint(m.group(1)); - points.add(point); - } - - String url = String.format(DigilibTools.DIGIVIEWBASICSTRING, DigilibTools.generateImagePath(textId,pageFileName),DigilibTools.generateMarksFromPoints(points)); + // teste format des Restes wenn noch "/" dann Aufruf einer Seite direkt - ret+=String.format("<hitsOnPage xlink:href=\"%s\">%s</hitsOnPage>",url,textId); - ret+="</xml>"; + if (mode.equals("digilib")){ + String txt=handleDigilib(textId, pageFileName, ret, points, m); + return XMLTools.transformToHTML(txt,"/de/mpiwg/dwinter/fulltextSearchServer/xsl/processRestPathOfDocumentToHTML.xsl"); + } + else if (mode.equals("generic")){ + if (m.find()){ // xmlfile ist fuer digilib ok, dann digilib + String txt = handleDigilib(textId, pageFileName, ret, points, m); + return XMLTools.transformToHTML(txt,"/de/mpiwg/dwinter/fulltextSearchServer/xsl/processRestPathOfDocumentToHTML.xsl"); + } else { + //assume xml-treffer liste + + + String txt = handleXMLFullText(textId, pageFileName,ret, ticket, lang); + return XMLTools.transformToHTML(txt,"/de/mpiwg/dwinter/fulltextSearchServer/xsl/processRestPathOfDocumentToHTML.xsl"); + } + - return ret; + } else if (mode.equals("showXMLhits")){ + //String txt="<html><head>"+ + //"<base href=\""+XMLSearchServerAdapter.XMLServerBase+"\" />"+ + //"</head><body>"; + String txt= TicketWriter.getFileContent(ticket,lang,textId,pageFileName); + return txt; //+"</body></html>"; + } } catch (FileNotFoundException e) { @@ -282,6 +301,50 @@ +protected String handleXMLFullText(String textId, String pageFileName, String ret, String ticket, + String lang) { + + try { + String[] morphquerySplitted=TicketWriter.getQueryString(lang,ticket).split(":"); + //string has normally the format field:query + String morphQuery= morphquerySplitted[morphquerySplitted.length-1]; + + String queryString = XMLSearchServerAdapter.XMLDocSearchBase + "document=" + textId.replace(":","/"); + //queryString += "&queryType=fulltext&query=" + morphQuery; + queryString += "&mode=text&query-type=fulltext&query=" + morphQuery; + + ret+=String.format("<hitsOnPage xlink:href=\"%s\">%s</hitsOnPage>",queryString,textId); + ret+="</xml>"; + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return ret; +} + +protected String handleDigilib(String textId, String pageFileName, String ret, + ArrayList<Double[]> points, Matcher m) { + while(m.find()){ + Double[] point = DigilibTools.calculatePoint(m.group(1)); + points.add(point); + } + + String url = String.format(DigilibTools.DIGIVIEWBASICSTRING, DigilibTools.generateImagePath(textId,pageFileName),DigilibTools.generateMarksFromPoints(points)); + + + ret+=String.format("<hitsOnPage xlink:href=\"%s\">%s</hitsOnPage>",url,textId); + ret+="</xml>"; + + + return ret; +} + + + +