view src/de/mpiwg/dwinter/fulltextSearchServer/ShowTicket.java @ 0:db87c1b7eb6d

initial
author dwinter
date Wed, 03 Nov 2010 12:18:46 +0100
parents
children
line wrap: on
line source

package de.mpiwg.dwinter.fulltextSearchServer;

import java.io.FileNotFoundException;
import java.io.IOException;

import org.apache.log4j.Logger;
import org.restlet.data.Form;
import org.restlet.data.MediaType;
import org.restlet.data.Parameter;
import org.restlet.data.Status;
import org.restlet.representation.Representation;
import org.restlet.representation.StringRepresentation;
import org.restlet.resource.Get;
import org.restlet.resource.Options;
import org.restlet.resource.ServerResource;

import de.mpiwg.dwinter.fulltext.ticket.TicketWriter;
import de.mpiwg.dwinter.fulltextSearchServer.Utils.XMLTools;

/**
 * Zeigt das entsprechende Ticket an.
 * @author dwinter
 *
 */
public class ShowTicket extends ServerResource{
	    
		Logger logger = Logger.getRootLogger();
		
		
		@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 getXML( ) {
			logger.debug("showticket");
	        
			// 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 ticket = (String) getRequest().getAttributes().get("ticket") ;
	        
		
			
	        StringRepresentation representation = null; 
	    
	        String xml;
			try {

				
			xml = TicketWriter.getXML(ticket);
			
			} catch (FileNotFoundException e) {
				e.printStackTrace();
				logger.debug("show result of ticker: file not found xml");
				setStatus(Status.SERVER_ERROR_INTERNAL) ;
		        return null;
			} catch (IOException e) {
				logger.debug("show result of ticker: IO error xml");
				e.printStackTrace();
				setStatus(Status.SERVER_ERROR_INTERNAL) ;
		          return null;
			}
	        representation = new StringRepresentation(xml, 
	            MediaType.TEXT_XML) ;
	        if (xml != null) {
	        	if (TicketWriter.isClosed(ticket))
	        		setStatus(Status.SUCCESS_CREATED);
	        	else
	        		setStatus(Status.SUCCESS_ACCEPTED);
	          return representation;
	       } else {
	          setStatus(Status.SUCCESS_ACCEPTED) ;
	          
	          return new StringRepresentation("<info>waiting</info>", 
	  	            MediaType.TEXT_XML) ;
	       }
		}
		
		@Get("html")
		public Representation getHtml() throws IOException{
			
			Representation repr = getXML();
			if (repr==null)
				return null;
					
			String xml=repr.getText();
			
			logger.debug("getHTML:"+xml);
			
			String txt = XMLTools.transformToHTML(xml,"/de/mpiwg/dwinter/fulltextSearchServer/xsl/showTicketToHTML.xsl");
			if (txt.equals("")){
				 return new StringRepresentation("<html><body>waiting</body></html>", 
			  	            MediaType.TEXT_HTML) ;
			}
			return new StringRepresentation(txt, 
	  	            MediaType.TEXT_HTML) ;
		}
}