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