view src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/services/display/DisplayContainer.java @ 0:1aac45997235

first ingest
author dwinter
date Wed, 01 Dec 2010 17:35:51 +0100
parents
children
line wrap: on
line source

package de.mpiwg.itgroup.escidoc.MPIWGServices.Restlet.services.display;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Properties;

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.stream.StreamSource;

import org.apache.http.HttpResponse;
import org.apache.log4j.Logger;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import org.jdom.transform.JDOMResult;
import org.jdom.transform.JDOMSource;
import org.restlet.data.MediaType;
import org.restlet.data.Status;
import org.restlet.representation.InputRepresentation;
import org.restlet.representation.Representation;
import org.restlet.representation.StringRepresentation;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;

import de.mpiwg.itgroup.eSciDoc.Tools.EScidocBasicHandler;

public class DisplayContainer extends ServerResource {

	private Logger logger = Logger.getRootLogger();
	private String eScidocServer;
	private String eScidocPort;
	
	public DisplayContainer() throws IOException{
		InputStream is = getClass().getResourceAsStream("/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/config/eScidocServer.config");
		Properties prop = new Properties();
		prop.load(is);
		eScidocServer = (String)prop.get("eScidocServer");
		eScidocPort = (String)prop.get("eScidocPort");
	}
	@Get("html")
	public Representation getHtml() throws IOException, JDOMException, TransformerFactoryConfigurationError, TransformerException{
		
		
		
		String id = (String)getRequest().getAttributes().get("escidocId");
		
		EScidocBasicHandler handler = new EScidocBasicHandler(eScidocServer, Integer.valueOf(eScidocPort),"dwinter","weikiki7");
		HttpResponse result = handler.eScidocGet("/ir/container/"+id);

		if (result.getStatusLine().getStatusCode()!=200){
			setStatus(Status.SERVER_ERROR_INTERNAL);
			return new StringRepresentation("<error>error</error>");
		} 
		InputStream in = result.getEntity().getContent();
		Document doc = new SAXBuilder().build(in);
		
		
		
		InputStream xslt = getClass().getResourceAsStream("/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/displayContainerHeader.xsl");
	

		 Transformer transformer = TransformerFactory.newInstance().newTransformer(new StreamSource(xslt));
		
		 // get header
		 JDOMSource inxml = new JDOMSource(doc);
		 JDOMResult out = new JDOMResult();
		 transformer.transform(inxml, out);
		 logger.debug(printXML(doc));
		
		 List<Element> results = out.getResult();
		 Element headerTag=null;
		 if (results!=null && results.size()>0){
			headerTag = results.get(0); 
		 }
		 
		 //get structmap
		 
		
		result = handler.eScidocGet("/ir/container/"+id+"/resources/members");

			if (result.getStatusLine().getStatusCode()!=200){
				setStatus(Status.SERVER_ERROR_INTERNAL);
				return new StringRepresentation("<error>error</error>");
			} 
			in = result.getEntity().getContent();
			doc = new SAXBuilder().build(in);
			xslt = getClass().getResourceAsStream("/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/collectionDisplay.xsl");
			transformer = TransformerFactory.newInstance().newTransformer(new StreamSource(xslt));
			
			 
			 inxml = new JDOMSource(doc);
			 out = new JDOMResult();
			 transformer.transform(inxml, out);
			 logger.debug(printXML(doc));
		
			 results = out.getResult();
			 Element listTag=null;
			 if (results!=null && results.size()>0){
				listTag = results.get(0); 
			 }
			 
			 
			return new StringRepresentation("<html><body>"+printXML(headerTag)+printXML(listTag)+"</html></body>",MediaType.TEXT_HTML);
	}
	
	private String printXML(Element headerTag) {
		XMLOutputter out = new XMLOutputter();
	 	
	 	String string = out.outputString(headerTag);
	 	return string;
		
	}
	public String printXML(Document dom) throws IOException{
	 	XMLOutputter out = new XMLOutputter();
	 	
	 	String string = out.outputString(dom);
	 	return string;
       
}
}