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);
+	}
+}