Mercurial > hg > fulltextSearchServer
diff src/de/mpiwg/dwinter/fulltextSearchServer/SearchServerInfo.java @ 0:db87c1b7eb6d
initial
author | dwinter |
---|---|
date | Wed, 03 Nov 2010 12:18:46 +0100 |
parents | |
children | 83e9a828e794 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/dwinter/fulltextSearchServer/SearchServerInfo.java Wed Nov 03 12:18:46 2010 +0100 @@ -0,0 +1,115 @@ +package de.mpiwg.dwinter.fulltextSearchServer; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Properties; + +import org.restlet.data.Form; +import org.restlet.data.MediaType; +import org.restlet.data.Status; +import org.restlet.representation.Representation; +import org.restlet.representation.StringRepresentation; +import org.restlet.resource.Options; +import org.restlet.resource.ServerResource; +import org.restlet.resource.Get; + +import de.mpiwg.dwinter.fulltext.search.FulltextSearchConfig; +import de.mpiwg.dwinter.fulltextSearchServer.Utils.ConfigurationManager; +public class SearchServerInfo extends ServerResource{ + //need options for crossdomain scripting + + private File lineIndex; + private File docIndex; + private FulltextSearchConfig config; + + public SearchServerInfo() throws IOException{ + Properties defaultProperties = ConfigurationManager.getConfig(); + + lineIndex = new File(defaultProperties.getProperty("lineIndex")); + docIndex = new File(defaultProperties.getProperty("docIndex")); + + config = new FulltextSearchConfig(docIndex, lineIndex); + } + + @Options + public void doOptions(Representation entity) { + Form responseHeaders = (Form) getResponse().getAttributes().get("org.restlet.http.headers"); + if (responseHeaders == null) { + responseHeaders = new Form(); + getResponse().getAttributes().put("org.restlet.http.headers", responseHeaders); + } + responseHeaders.add("Access-Control-Allow-Origin", "*"); + responseHeaders.add("Access-Control-Allow-Methods", "POST,OPTIONS,GET"); + responseHeaders.add("Access-Control-Allow-Headers", "Content-Type"); + responseHeaders.add("Access-Control-Allow-Credentials", "false"); + responseHeaders.add("Access-Control-Max-Age", "60"); + } + + //@Get("xml") + public Representation getInfosXML(){ + // response header fuer cross-site.scripting + Form responseHeaders = (Form) getResponse().getAttributes().get("org.restlet.http.headers"); + if (responseHeaders == null) { + responseHeaders = new Form(); + getResponse().getAttributes().put("org.restlet.http.headers", responseHeaders); + } + responseHeaders.add("Access-Control-Allow-Origin", "*"); + + String param = (String) getRequestAttributes().get("param"); + if (param.equals("supportedLanguages")){ + return getSupportedLanguages(); + } + else{ + setStatus(Status.CLIENT_ERROR_NOT_FOUND); + return null; + } + } + + @Get("html") + public Representation getInfosHTML(){ + + // response header fuer cross-site.scripting + Form responseHeaders = (Form) getResponse().getAttributes().get("org.restlet.http.headers"); + if (responseHeaders == null) { + responseHeaders = new Form(); + getResponse().getAttributes().put("org.restlet.http.headers", responseHeaders); + } + responseHeaders.add("Access-Control-Allow-Origin", "*"); + + String param = (String) getRequestAttributes().get("param"); + if (param.equals("supportedLanguages")){ + return getSupportedLanguagesHTML(); + } + else{ + setStatus(Status.CLIENT_ERROR_NOT_FOUND); + return null; + } + } + + private Representation getSupportedLanguages() { + // TODO Auto-generated method stub + + ArrayList<String> langs = config.getSupportedLanguages(); + String ret="<info><supportedLanguages>"; + for (String lang: langs){ + ret+="<lang>"+lang+"</lang>"; + } + ret+="</supportedLanguages></info>"; + return new StringRepresentation(ret, MediaType.TEXT_XML); + } + + private Representation getSupportedLanguagesHTML() { + // TODO Auto-generated method stub + + ArrayList<String> langs = config.getSupportedLanguages(); + String ret="<div class=\"supportedLanguages\">"; + for (String lang: langs){ + ret+="<div class=\"supportedLanguage\">"+lang+"</div>"; + } + ret+="</div>"; + return new StringRepresentation(ret, MediaType.TEXT_HTML); + } +}