Mercurial > hg > eSciDocMPIWGServicesRestlet
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; + +} +}