view 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 source

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