diff 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 diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/services/display/DisplayContainer.java	Wed Dec 01 17:35:51 2010 +0100
@@ -0,0 +1,127 @@
+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;
+       
+}
+}