annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
db87c1b7eb6d initial
dwinter
parents:
diff changeset
1 package de.mpiwg.dwinter.fulltextSearchServer;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
2
db87c1b7eb6d initial
dwinter
parents:
diff changeset
3 import java.io.ByteArrayInputStream;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
4 import java.io.FileNotFoundException;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
5 import java.io.IOException;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
6 import java.io.InputStream;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
7 import java.io.StringWriter;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
8 import java.util.ArrayList;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
9 import java.util.Locale;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
10 import java.util.regex.Matcher;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
11 import java.util.regex.Pattern;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
12
db87c1b7eb6d initial
dwinter
parents:
diff changeset
13 import javax.xml.parsers.DocumentBuilder;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
14 import javax.xml.parsers.DocumentBuilderFactory;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
15 import javax.xml.parsers.ParserConfigurationException;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
16 import javax.xml.transform.OutputKeys;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
17 import javax.xml.transform.Transformer;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
18 import javax.xml.transform.TransformerConfigurationException;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
19 import javax.xml.transform.TransformerException;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
20 import javax.xml.transform.TransformerFactory;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
21 import javax.xml.transform.TransformerFactoryConfigurationError;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
22 import javax.xml.transform.dom.DOMSource;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
23 import javax.xml.transform.stream.StreamResult;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
24 import javax.xml.transform.stream.StreamSource;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
25
db87c1b7eb6d initial
dwinter
parents:
diff changeset
26 import org.apache.log4j.Logger;
1
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
27 import org.restlet.Request;
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
28 import org.restlet.Response;
0
db87c1b7eb6d initial
dwinter
parents:
diff changeset
29 import org.restlet.data.Form;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
30 import org.restlet.data.MediaType;
1
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
31 import org.restlet.data.Reference;
0
db87c1b7eb6d initial
dwinter
parents:
diff changeset
32 import org.restlet.data.Status;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
33 import org.restlet.representation.Representation;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
34 import org.restlet.representation.StringRepresentation;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
35 import org.restlet.resource.Get;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
36 import org.restlet.resource.Options;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
37 import org.restlet.resource.ServerResource;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
38 import org.w3c.dom.Document;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
39 import org.xml.sax.SAXException;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
40
1
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
41 import de.mpiwg.dwinter.fulltext.search.xmlsearchadapter.XMLSearchServerAdapter;
0
db87c1b7eb6d initial
dwinter
parents:
diff changeset
42 import de.mpiwg.dwinter.fulltext.ticket.TicketWriter;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
43 import de.mpiwg.dwinter.fulltextSearchServer.Utils.DigilibTools;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
44 import de.mpiwg.dwinter.fulltextSearchServer.Utils.XMLTools;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
45
db87c1b7eb6d initial
dwinter
parents:
diff changeset
46 /**
db87c1b7eb6d initial
dwinter
parents:
diff changeset
47 * Klasse gibt jenach Aufruf entweder eine XML/HTML Datei mit den Seiten zurueck auf denen sich fuer das entsprechende
db87c1b7eb6d initial
dwinter
parents:
diff changeset
48 * Dokument und Ticket Treffer befinden, bzw. wenn die entsprechende Seite im Pfad mit angegeben wird die Treffer auf dieser Seite
db87c1b7eb6d initial
dwinter
parents:
diff changeset
49 * @author dwinter
db87c1b7eb6d initial
dwinter
parents:
diff changeset
50 *
db87c1b7eb6d initial
dwinter
parents:
diff changeset
51 */
db87c1b7eb6d initial
dwinter
parents:
diff changeset
52 public class ShowContentOfDocument extends ServerResource {
db87c1b7eb6d initial
dwinter
parents:
diff changeset
53
db87c1b7eb6d initial
dwinter
parents:
diff changeset
54
db87c1b7eb6d initial
dwinter
parents:
diff changeset
55 private Logger logger = Logger.getRootLogger();
db87c1b7eb6d initial
dwinter
parents:
diff changeset
56
db87c1b7eb6d initial
dwinter
parents:
diff changeset
57 /**
db87c1b7eb6d initial
dwinter
parents:
diff changeset
58 * Erlaubt cross scripting bei Aufruf aus Javascript
db87c1b7eb6d initial
dwinter
parents:
diff changeset
59 * @param entity
db87c1b7eb6d initial
dwinter
parents:
diff changeset
60 */
db87c1b7eb6d initial
dwinter
parents:
diff changeset
61 @Options
db87c1b7eb6d initial
dwinter
parents:
diff changeset
62 public void doOptions(Representation entity) {
db87c1b7eb6d initial
dwinter
parents:
diff changeset
63 Form responseHeaders = (Form) getResponse().getAttributes().get("org.restlet.http.headers");
db87c1b7eb6d initial
dwinter
parents:
diff changeset
64 if (responseHeaders == null) {
db87c1b7eb6d initial
dwinter
parents:
diff changeset
65 responseHeaders = new Form();
db87c1b7eb6d initial
dwinter
parents:
diff changeset
66 getResponse().getAttributes().put("org.restlet.http.headers", responseHeaders);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
67 }
db87c1b7eb6d initial
dwinter
parents:
diff changeset
68 responseHeaders.add("Access-Control-Allow-Origin", "*");
db87c1b7eb6d initial
dwinter
parents:
diff changeset
69 responseHeaders.add("Access-Control-Allow-Methods", "POST,OPTIONS,GET");
db87c1b7eb6d initial
dwinter
parents:
diff changeset
70 responseHeaders.add("Access-Control-Allow-Headers", "Content-Type");
db87c1b7eb6d initial
dwinter
parents:
diff changeset
71 responseHeaders.add("Access-Control-Allow-Credentials", "false");
db87c1b7eb6d initial
dwinter
parents:
diff changeset
72 responseHeaders.add("Access-Control-Max-Age", "60");
db87c1b7eb6d initial
dwinter
parents:
diff changeset
73 }
db87c1b7eb6d initial
dwinter
parents:
diff changeset
74
db87c1b7eb6d initial
dwinter
parents:
diff changeset
75 /**
db87c1b7eb6d initial
dwinter
parents:
diff changeset
76 * Erzeugt eine XML-Reprasentation der Fundstellen uebergeben werdne im Pfad als REST-Aufruf die Ticketnummer, die Sprache und die Textid
db87c1b7eb6d initial
dwinter
parents:
diff changeset
77 * d.h. /TICKET/LANG/TEXTID oder /TICKET/LANG/TEXTID/FILENAME_DER_SEITE oder /TICKET/LANG/TEXTID/FILENAME_DER_SEITE/digilib
db87c1b7eb6d initial
dwinter
parents:
diff changeset
78 * @return
db87c1b7eb6d initial
dwinter
parents:
diff changeset
79 */
db87c1b7eb6d initial
dwinter
parents:
diff changeset
80 //@Get("xml")
db87c1b7eb6d initial
dwinter
parents:
diff changeset
81 public Representation getXML( ) {
db87c1b7eb6d initial
dwinter
parents:
diff changeset
82
db87c1b7eb6d initial
dwinter
parents:
diff changeset
83 // response header fuer cross-site.scripting
db87c1b7eb6d initial
dwinter
parents:
diff changeset
84 Form responseHeaders = (Form) getResponse().getAttributes().get("org.restlet.http.headers");
db87c1b7eb6d initial
dwinter
parents:
diff changeset
85 if (responseHeaders == null) {
db87c1b7eb6d initial
dwinter
parents:
diff changeset
86 responseHeaders = new Form();
db87c1b7eb6d initial
dwinter
parents:
diff changeset
87 getResponse().getAttributes().put("org.restlet.http.headers", responseHeaders);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
88 }
db87c1b7eb6d initial
dwinter
parents:
diff changeset
89 responseHeaders.add("Access-Control-Allow-Origin", "*");
db87c1b7eb6d initial
dwinter
parents:
diff changeset
90
db87c1b7eb6d initial
dwinter
parents:
diff changeset
91
db87c1b7eb6d initial
dwinter
parents:
diff changeset
92 logger.debug("getXML");
db87c1b7eb6d initial
dwinter
parents:
diff changeset
93 String ticket = (String) getRequest().getAttributes().get("ticket") ;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
94 String lang = (String) getRequest().getAttributes().get("lang") ;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
95 String textId = (String) getRequest().getAttributes().get("textId") ;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
96 String restPath = getRequest().getResourceRef().getRemainingPart();
db87c1b7eb6d initial
dwinter
parents:
diff changeset
97 logger.debug("ticket:"+ticket);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
98 logger.debug("lang:"+lang);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
99 logger.debug("textId:"+textId);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
100 logger.debug("restpath:"+restPath);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
101 String xml;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
102 if (restPath.equals("")){
db87c1b7eb6d initial
dwinter
parents:
diff changeset
103 xml = showContent(ticket,lang,textId);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
104
db87c1b7eb6d initial
dwinter
parents:
diff changeset
105 } else {
db87c1b7eb6d initial
dwinter
parents:
diff changeset
106 xml = processRestPath(ticket,lang,textId,restPath);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
107
db87c1b7eb6d initial
dwinter
parents:
diff changeset
108 }
db87c1b7eb6d initial
dwinter
parents:
diff changeset
109
db87c1b7eb6d initial
dwinter
parents:
diff changeset
110
db87c1b7eb6d initial
dwinter
parents:
diff changeset
111 if (xml==null){
db87c1b7eb6d initial
dwinter
parents:
diff changeset
112 setStatus(Status.SUCCESS_ACCEPTED);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
113 //still waiting
db87c1b7eb6d initial
dwinter
parents:
diff changeset
114 return new StringRepresentation("<info>waiting</info>",MediaType.TEXT_XML);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
115 }
db87c1b7eb6d initial
dwinter
parents:
diff changeset
116
db87c1b7eb6d initial
dwinter
parents:
diff changeset
117 StringRepresentation representation = new StringRepresentation(xml,
db87c1b7eb6d initial
dwinter
parents:
diff changeset
118 MediaType.TEXT_XML) ;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
119
db87c1b7eb6d initial
dwinter
parents:
diff changeset
120 return representation;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
121 }
db87c1b7eb6d initial
dwinter
parents:
diff changeset
122
db87c1b7eb6d initial
dwinter
parents:
diff changeset
123 /**
db87c1b7eb6d initial
dwinter
parents:
diff changeset
124 * Analog zu getXML Rueckgabe erfolgt jedoch als html
db87c1b7eb6d initial
dwinter
parents:
diff changeset
125 * @return
db87c1b7eb6d initial
dwinter
parents:
diff changeset
126 */
db87c1b7eb6d initial
dwinter
parents:
diff changeset
127 @Get("html")
db87c1b7eb6d initial
dwinter
parents:
diff changeset
128 public Representation getHTML( ) {
db87c1b7eb6d initial
dwinter
parents:
diff changeset
129
db87c1b7eb6d initial
dwinter
parents:
diff changeset
130 // response header fuer cross-site.scripting
db87c1b7eb6d initial
dwinter
parents:
diff changeset
131 Form responseHeaders = (Form) getResponse().getAttributes().get("org.restlet.http.headers");
db87c1b7eb6d initial
dwinter
parents:
diff changeset
132 if (responseHeaders == null) {
db87c1b7eb6d initial
dwinter
parents:
diff changeset
133 responseHeaders = new Form();
db87c1b7eb6d initial
dwinter
parents:
diff changeset
134 getResponse().getAttributes().put("org.restlet.http.headers", responseHeaders);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
135 }
db87c1b7eb6d initial
dwinter
parents:
diff changeset
136 responseHeaders.add("Access-Control-Allow-Origin", "*");
db87c1b7eb6d initial
dwinter
parents:
diff changeset
137
db87c1b7eb6d initial
dwinter
parents:
diff changeset
138
db87c1b7eb6d initial
dwinter
parents:
diff changeset
139 logger.debug("getHTML");
db87c1b7eb6d initial
dwinter
parents:
diff changeset
140 String ticket = (String) getRequest().getAttributes().get("ticket") ;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
141 String lang = (String) getRequest().getAttributes().get("lang") ;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
142 String textId = (String) getRequest().getAttributes().get("textId") ;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
143 String restPath = getRequest().getResourceRef().getRemainingPart();
db87c1b7eb6d initial
dwinter
parents:
diff changeset
144 logger.debug("ticket:"+ticket);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
145 logger.debug("lang:"+lang);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
146 logger.debug("textId:"+textId);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
147 logger.debug("restpath:"+restPath);
1
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
148 String html;
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
149
0
db87c1b7eb6d initial
dwinter
parents:
diff changeset
150 if (restPath.equals("")){
1
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
151 html = showContent(ticket,lang,textId);
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
152 if (html==null){
0
db87c1b7eb6d initial
dwinter
parents:
diff changeset
153 setStatus(Status.SUCCESS_ACCEPTED);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
154 //still waiting
db87c1b7eb6d initial
dwinter
parents:
diff changeset
155 return new StringRepresentation("<dev>waiting</dev>",MediaType.TEXT_HTML);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
156 }
1
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
157 html = XMLTools.transformToHTML(html,"/de/mpiwg/dwinter/fulltextSearchServer/xsl/showContentOfDocumentToHTML.xsl");
0
db87c1b7eb6d initial
dwinter
parents:
diff changeset
158 } else {
1
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
159 html = processRestPath(ticket,lang,textId,restPath);
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
160 if (html==null){
0
db87c1b7eb6d initial
dwinter
parents:
diff changeset
161 setStatus(Status.SUCCESS_ACCEPTED);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
162 //still waiting
db87c1b7eb6d initial
dwinter
parents:
diff changeset
163 return new StringRepresentation("<dev>waiting</dev>",MediaType.TEXT_HTML);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
164 }
1
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
165
0
db87c1b7eb6d initial
dwinter
parents:
diff changeset
166 //txt=xml;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
167 }
db87c1b7eb6d initial
dwinter
parents:
diff changeset
168
1
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
169 StringRepresentation representation = new StringRepresentation(html,
0
db87c1b7eb6d initial
dwinter
parents:
diff changeset
170 MediaType.TEXT_HTML) ;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
171 return representation;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
172
db87c1b7eb6d initial
dwinter
parents:
diff changeset
173 }
db87c1b7eb6d initial
dwinter
parents:
diff changeset
174
db87c1b7eb6d initial
dwinter
parents:
diff changeset
175
db87c1b7eb6d initial
dwinter
parents:
diff changeset
176
db87c1b7eb6d initial
dwinter
parents:
diff changeset
177 /**
db87c1b7eb6d initial
dwinter
parents:
diff changeset
178 * Gibt ein XML File mit allen Seiten zuruech auf denen sich Treffer befinden.
db87c1b7eb6d initial
dwinter
parents:
diff changeset
179 * @param ticket Ticketnummer
db87c1b7eb6d initial
dwinter
parents:
diff changeset
180 * @param lang Sprache
db87c1b7eb6d initial
dwinter
parents:
diff changeset
181 * @param textId id des Textes.
db87c1b7eb6d initial
dwinter
parents:
diff changeset
182 * @return das XML oder null wenn die Datei bisher nicht existiert.
db87c1b7eb6d initial
dwinter
parents:
diff changeset
183 */
db87c1b7eb6d initial
dwinter
parents:
diff changeset
184 private String showContent(String ticket, String lang, String textId) {
db87c1b7eb6d initial
dwinter
parents:
diff changeset
185 StringRepresentation representation = null;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
186 String xml;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
187
db87c1b7eb6d initial
dwinter
parents:
diff changeset
188 xml = TicketWriter.getPagesWithHits(ticket,lang,textId);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
189
db87c1b7eb6d initial
dwinter
parents:
diff changeset
190 return xml;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
191 }
db87c1b7eb6d initial
dwinter
parents:
diff changeset
192
db87c1b7eb6d initial
dwinter
parents:
diff changeset
193
db87c1b7eb6d initial
dwinter
parents:
diff changeset
194 /**
db87c1b7eb6d initial
dwinter
parents:
diff changeset
195 * Gibt die Treffer auf einer Seite zurueck als xml File, die Seite selbst wird im restPath uebergeben.
db87c1b7eb6d initial
dwinter
parents:
diff changeset
196 * Ausserdem kann der restPath noch einen zusaetzliches Element enthalten das die Form der Darstellung bestimmt.
db87c1b7eb6d initial
dwinter
parents:
diff changeset
197 * @param ticket
db87c1b7eb6d initial
dwinter
parents:
diff changeset
198 * @param lang
db87c1b7eb6d initial
dwinter
parents:
diff changeset
199 * @param textId
db87c1b7eb6d initial
dwinter
parents:
diff changeset
200 * @param restPath
db87c1b7eb6d initial
dwinter
parents:
diff changeset
201 * @return
db87c1b7eb6d initial
dwinter
parents:
diff changeset
202 */
db87c1b7eb6d initial
dwinter
parents:
diff changeset
203 private String processRestPath(String ticket, String lang, String textId,
db87c1b7eb6d initial
dwinter
parents:
diff changeset
204 String restPath) {
db87c1b7eb6d initial
dwinter
parents:
diff changeset
205
db87c1b7eb6d initial
dwinter
parents:
diff changeset
206 // teste ob noch ein parameter am pfad ist.
db87c1b7eb6d initial
dwinter
parents:
diff changeset
207 String[] splitted = restPath.split("/");
db87c1b7eb6d initial
dwinter
parents:
diff changeset
208 logger.debug(splitted.length);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
209 // an der seite haengt noch ein Darstellungmodus an z.Z. nur FILENAME_DER_SEITE/digilib
db87c1b7eb6d initial
dwinter
parents:
diff changeset
210 if (splitted.length>2){
db87c1b7eb6d initial
dwinter
parents:
diff changeset
211 return processRestPathWithMode(ticket, lang, textId,
db87c1b7eb6d initial
dwinter
parents:
diff changeset
212 splitted[1],splitted[2]);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
213 }
db87c1b7eb6d initial
dwinter
parents:
diff changeset
214
db87c1b7eb6d initial
dwinter
parents:
diff changeset
215 logger.debug("processRest");
db87c1b7eb6d initial
dwinter
parents:
diff changeset
216 StringRepresentation representation = null;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
217 String xml;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
218
db87c1b7eb6d initial
dwinter
parents:
diff changeset
219 try {
db87c1b7eb6d initial
dwinter
parents:
diff changeset
220 xml = TicketWriter.getHitsOnPage(ticket,lang,textId,restPath);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
221 } catch (FileNotFoundException e) {
db87c1b7eb6d initial
dwinter
parents:
diff changeset
222 // TODO Auto-generated catch block
db87c1b7eb6d initial
dwinter
parents:
diff changeset
223 e.printStackTrace();
db87c1b7eb6d initial
dwinter
parents:
diff changeset
224 xml=null;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
225 } catch (IOException e) {
db87c1b7eb6d initial
dwinter
parents:
diff changeset
226 // TODO Auto-generated catch block
db87c1b7eb6d initial
dwinter
parents:
diff changeset
227 e.printStackTrace();
db87c1b7eb6d initial
dwinter
parents:
diff changeset
228 xml=null;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
229 }
db87c1b7eb6d initial
dwinter
parents:
diff changeset
230
1
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
231 return XMLTools.transformToHTML(xml,"/de/mpiwg/dwinter/fulltextSearchServer/xsl/processRestPathOfDocumentToHTML.xsl");
0
db87c1b7eb6d initial
dwinter
parents:
diff changeset
232
db87c1b7eb6d initial
dwinter
parents:
diff changeset
233 }
db87c1b7eb6d initial
dwinter
parents:
diff changeset
234
db87c1b7eb6d initial
dwinter
parents:
diff changeset
235 /**
1
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
236 * Rueckgabe der Treffer gemaess dem Darstellungsmode z.Z. wird nur digilib und generic unterstuetzt.
0
db87c1b7eb6d initial
dwinter
parents:
diff changeset
237 * Der Pfad ist in DIGIVIEWBASICSTRING festgelegt.
db87c1b7eb6d initial
dwinter
parents:
diff changeset
238 * @param ticket
db87c1b7eb6d initial
dwinter
parents:
diff changeset
239 * @param lang
db87c1b7eb6d initial
dwinter
parents:
diff changeset
240 * @param textId
db87c1b7eb6d initial
dwinter
parents:
diff changeset
241 * @param pageFileName
db87c1b7eb6d initial
dwinter
parents:
diff changeset
242 * @param mode
db87c1b7eb6d initial
dwinter
parents:
diff changeset
243 * @return
db87c1b7eb6d initial
dwinter
parents:
diff changeset
244 */
db87c1b7eb6d initial
dwinter
parents:
diff changeset
245 private String processRestPathWithMode(String ticket, String lang,
db87c1b7eb6d initial
dwinter
parents:
diff changeset
246 String textId, String pageFileName, String mode) {
db87c1b7eb6d initial
dwinter
parents:
diff changeset
247
db87c1b7eb6d initial
dwinter
parents:
diff changeset
248 logger.debug("processRestWithMode");
db87c1b7eb6d initial
dwinter
parents:
diff changeset
249 String ret="<xml xmlns:xlink=\"http://www.w3.org/1999/xlink\">";
db87c1b7eb6d initial
dwinter
parents:
diff changeset
250 ret+="<pageFileName>"+pageFileName+"</pageFileName>";
db87c1b7eb6d initial
dwinter
parents:
diff changeset
251 ArrayList<Double[]> points = new ArrayList<Double[]>();
1
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
252
0
db87c1b7eb6d initial
dwinter
parents:
diff changeset
253
db87c1b7eb6d initial
dwinter
parents:
diff changeset
254 try {
db87c1b7eb6d initial
dwinter
parents:
diff changeset
255 String xml = TicketWriter.getHitsOnPage(ticket,lang,textId,pageFileName);
1
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
256
0
db87c1b7eb6d initial
dwinter
parents:
diff changeset
257 Pattern linePattern = Pattern.compile("<line>(.*?)</line>",Pattern.MULTILINE);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
258 Matcher m = linePattern.matcher(xml);
db87c1b7eb6d initial
dwinter
parents:
diff changeset
259
1
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
260 // teste format des Restes wenn noch "/" dann Aufruf einer Seite direkt
0
db87c1b7eb6d initial
dwinter
parents:
diff changeset
261
db87c1b7eb6d initial
dwinter
parents:
diff changeset
262
1
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
263 if (mode.equals("digilib")){
0
db87c1b7eb6d initial
dwinter
parents:
diff changeset
264
1
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
265 String txt=handleDigilib(textId, pageFileName, ret, points, m);
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
266 return XMLTools.transformToHTML(txt,"/de/mpiwg/dwinter/fulltextSearchServer/xsl/processRestPathOfDocumentToHTML.xsl");
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
267 }
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
268 else if (mode.equals("generic")){
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
269 if (m.find()){ // xmlfile ist fuer digilib ok, dann digilib
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
270 String txt = handleDigilib(textId, pageFileName, ret, points, m);
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
271 return XMLTools.transformToHTML(txt,"/de/mpiwg/dwinter/fulltextSearchServer/xsl/processRestPathOfDocumentToHTML.xsl");
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
272 } else {
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
273 //assume xml-treffer liste
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
274
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
275
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
276 String txt = handleXMLFullText(textId, pageFileName,ret, ticket, lang);
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
277 return XMLTools.transformToHTML(txt,"/de/mpiwg/dwinter/fulltextSearchServer/xsl/processRestPathOfDocumentToHTML.xsl");
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
278 }
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
279
0
db87c1b7eb6d initial
dwinter
parents:
diff changeset
280
1
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
281 } else if (mode.equals("showXMLhits")){
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
282 //String txt="<html><head>"+
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
283 //"<base href=\""+XMLSearchServerAdapter.XMLServerBase+"\" />"+
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
284 //"</head><body>";
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
285 String txt= TicketWriter.getFileContent(ticket,lang,textId,pageFileName);
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
286 return txt; //+"</body></html>";
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
287 }
0
db87c1b7eb6d initial
dwinter
parents:
diff changeset
288
db87c1b7eb6d initial
dwinter
parents:
diff changeset
289
db87c1b7eb6d initial
dwinter
parents:
diff changeset
290 } catch (FileNotFoundException e) {
db87c1b7eb6d initial
dwinter
parents:
diff changeset
291 // TODO Auto-generated catch block
db87c1b7eb6d initial
dwinter
parents:
diff changeset
292 e.printStackTrace();
db87c1b7eb6d initial
dwinter
parents:
diff changeset
293 } catch (IOException e) {
db87c1b7eb6d initial
dwinter
parents:
diff changeset
294 // TODO Auto-generated catch block
db87c1b7eb6d initial
dwinter
parents:
diff changeset
295 e.printStackTrace();
db87c1b7eb6d initial
dwinter
parents:
diff changeset
296 }
db87c1b7eb6d initial
dwinter
parents:
diff changeset
297
db87c1b7eb6d initial
dwinter
parents:
diff changeset
298 return null;
db87c1b7eb6d initial
dwinter
parents:
diff changeset
299 }
db87c1b7eb6d initial
dwinter
parents:
diff changeset
300
db87c1b7eb6d initial
dwinter
parents:
diff changeset
301
db87c1b7eb6d initial
dwinter
parents:
diff changeset
302
db87c1b7eb6d initial
dwinter
parents:
diff changeset
303
1
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
304 protected String handleXMLFullText(String textId, String pageFileName, String ret, String ticket,
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
305 String lang) {
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
306
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
307 try {
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
308 String[] morphquerySplitted=TicketWriter.getQueryString(lang,ticket).split(":");
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
309 //string has normally the format field:query
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
310 String morphQuery= morphquerySplitted[morphquerySplitted.length-1];
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
311
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
312 String queryString = XMLSearchServerAdapter.XMLDocSearchBase + "document=" + textId.replace(":","/");
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
313 //queryString += "&queryType=fulltext&query=" + morphQuery;
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
314 queryString += "&amp;mode=text&amp;query-type=fulltext&amp;query=" + morphQuery;
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
315
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
316 ret+=String.format("<hitsOnPage xlink:href=\"%s\">%s</hitsOnPage>",queryString,textId);
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
317 ret+="</xml>";
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
318 } catch (FileNotFoundException e) {
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
319 // TODO Auto-generated catch block
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
320 e.printStackTrace();
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
321 } catch (IOException e) {
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
322 // TODO Auto-generated catch block
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
323 e.printStackTrace();
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
324 }
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
325 return ret;
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
326 }
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
327
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
328 protected String handleDigilib(String textId, String pageFileName, String ret,
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
329 ArrayList<Double[]> points, Matcher m) {
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
330 while(m.find()){
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
331 Double[] point = DigilibTools.calculatePoint(m.group(1));
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
332 points.add(point);
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
333 }
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
334
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
335 String url = String.format(DigilibTools.DIGIVIEWBASICSTRING, DigilibTools.generateImagePath(textId,pageFileName),DigilibTools.generateMarksFromPoints(points));
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
336
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
337
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
338 ret+=String.format("<hitsOnPage xlink:href=\"%s\">%s</hitsOnPage>",url,textId);
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
339 ret+="</xml>";
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
340
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
341
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
342 return ret;
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
343 }
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
344
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
345
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
346
83e9a828e794 Version mit integrierter Suche ?ber XML-Volltexte
dwinter
parents: 0
diff changeset
347
0
db87c1b7eb6d initial
dwinter
parents:
diff changeset
348
db87c1b7eb6d initial
dwinter
parents:
diff changeset
349
db87c1b7eb6d initial
dwinter
parents:
diff changeset
350
db87c1b7eb6d initial
dwinter
parents:
diff changeset
351
db87c1b7eb6d initial
dwinter
parents:
diff changeset
352
db87c1b7eb6d initial
dwinter
parents:
diff changeset
353 }
db87c1b7eb6d initial
dwinter
parents:
diff changeset
354