# HG changeset patch # User dwinter # Date 1291221351 -3600 # Node ID 1aac459972352ee54c97e39734c82a6fefe2e333 first ingest diff -r 000000000000 -r 1aac45997235 .classpath --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.classpath Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 000000000000 -r 1aac45997235 .hgignore --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,3 @@ + +syntax: regexp +^src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/config/eScidocServer\.config$ \ No newline at end of file diff -r 000000000000 -r 1aac45997235 .project --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.project Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,39 @@ + + + eSciDocMPIWGServicesRestlet + + + MetaDataManager + eSciDocTools + eSciDocImport + + + + org.eclipse.wst.jsdt.core.javascriptValidator + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.jdt.core.javanature + org.eclipse.wst.jsdt.core.jsNature + + diff -r 000000000000 -r 1aac45997235 .settings/.jsdtscope --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.settings/.jsdtscope Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff -r 000000000000 -r 1aac45997235 .settings/org.eclipse.core.resources.prefs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.settings/org.eclipse.core.resources.prefs Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,3 @@ +#Fri Aug 20 08:10:10 CEST 2010 +eclipse.preferences.version=1 +encoding//src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/PID.html=UTF-8 diff -r 000000000000 -r 1aac45997235 .settings/org.eclipse.jdt.core.prefs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.settings/org.eclipse.jdt.core.prefs Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,8 @@ +#Mon Aug 16 10:21:43 CEST 2010 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.6 diff -r 000000000000 -r 1aac45997235 .settings/org.eclipse.wst.common.component --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.settings/org.eclipse.wst.common.component Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,45 @@ + + + + + + + uses + + + uses + + + uses + + + uses + + + uses + + + uses + + + uses + + + uses + + + uses + + + uses + + + uses + + + uses + + + + + diff -r 000000000000 -r 1aac45997235 .settings/org.eclipse.wst.common.project.facet.core.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,10 @@ + + + + + + + + + + diff -r 000000000000 -r 1aac45997235 .settings/org.eclipse.wst.jsdt.ui.superType.container --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.settings/org.eclipse.wst.jsdt.ui.superType.container Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff -r 000000000000 -r 1aac45997235 .settings/org.eclipse.wst.jsdt.ui.superType.name --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.settings/org.eclipse.wst.jsdt.ui.superType.name Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,1 @@ +Window \ No newline at end of file diff -r 000000000000 -r 1aac45997235 WebContent/META-INF/MANIFEST.MF --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebContent/META-INF/MANIFEST.MF Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff -r 000000000000 -r 1aac45997235 WebContent/WEB-INF/web.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebContent/WEB-INF/web.xml Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,28 @@ + + +RESTfulJavaWebServices-Restlet + + +org.restlet.application +de.mpiwg.itgroup.escidoc.MPIWGServices.Restlet.RestServer + + + + + +RestletServlet + +org.restlet.ext.servlet.ServerServlet + + + + + +RestletServlet +/* + + \ No newline at end of file diff -r 000000000000 -r 1aac45997235 libs/httpclient-4.0.1.jar Binary file libs/httpclient-4.0.1.jar has changed diff -r 000000000000 -r 1aac45997235 libs/httpcore-4.0.1.jar Binary file libs/httpcore-4.0.1.jar has changed diff -r 000000000000 -r 1aac45997235 libs/jaxen-1.1.1.jar Binary file libs/jaxen-1.1.1.jar has changed diff -r 000000000000 -r 1aac45997235 libs/jdom-1.0.jar Binary file libs/jdom-1.0.jar has changed diff -r 000000000000 -r 1aac45997235 libs/log4j-1.2.15.jar Binary file libs/log4j-1.2.15.jar has changed diff -r 000000000000 -r 1aac45997235 libs/org.restlet.ext.servlet.jar Binary file libs/org.restlet.ext.servlet.jar has changed diff -r 000000000000 -r 1aac45997235 libs/org.restlet.jar Binary file libs/org.restlet.jar has changed diff -r 000000000000 -r 1aac45997235 src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/RestServer.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/RestServer.java Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,52 @@ +package de.mpiwg.itgroup.escidoc.MPIWGServices.Restlet; + +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.restlet.Application; +import org.restlet.Context; +import org.restlet.Restlet; +import org.restlet.routing.Router; +import org.restlet.routing.Template; +import org.restlet.routing.TemplateRoute; + +import de.mpiwg.itgroup.escidoc.MPIWGServices.Restlet.services.display.DisplayContainer; +import de.mpiwg.itgroup.escidoc.MPIWGServices.Restlet.services.redirect.DigilibRedirector; +import de.mpiwg.itgroup.escidoc.MPIWGServices.Restlet.services.redirect.DisplayRedirector; +import de.mpiwg.itgroup.escidoc.MPIWGServices.Restlet.services.redirect.ECHORedirector; +import de.mpiwg.itgroup.escidoc.MPIWGServices.Restlet.services.redirect.IndexMetaRedirector; +import de.mpiwg.itgroup.escidoc.MPIWGServices.Restlet.services.redirect.OrigRefRedirector; +import de.mpiwg.itgroup.escidoc.MPIWGServices.Restlet.services.search.SimpleSearch; + + + + +public class RestServer extends Application { + + public RestServer(Context parentContext){ + super(parentContext); + + Logger rl = Logger.getRootLogger(); + BasicConfigurator.configure(); + rl.setLevel(Level.DEBUG); + + + } + + public synchronized Restlet createInboundRoot(){ + Router router = new Router(getContext()); + router.attach("/search",SimpleSearch.class); + router.attach("/container/{escidocId}",DisplayContainer.class); + router.attach("/resultOverview.css",ResultOverviewCSS.class); // zeigt den image ordner im digilib standard display an + router.attach("/{escidocId}",ECHORedirector.class); // redirected zur webseite die in echo angebeben ist + router.attach("/{escidocId}/echo",ECHORedirector.class); // redirected zur ECHO Seite, diese redirected eventuell, direct wieder + router.attach("/{escidocId}/display",DisplayRedirector.class); // redirected zur display_url die in ECHO angegeben ist, wenn dort keine steht dann wird der image ordner im generischen viewer angezeigt + router.attach("/{escidocId}/images",DigilibRedirector.class); // zeigt den image ordner im digilib standard display an + router.attach("/{escidocId}/indexMeta",IndexMetaRedirector.class); // zeigt die in ESCIDOC abegespeicherten index_meta an + router.attach("/{escidocId}/origRef",OrigRefRedirector.class); // zeigt die original Quelle der Metadaten an, in der Regel das IndexMeta file auf der Foxridge + + + return router; + } +} + diff -r 000000000000 -r 1aac45997235 src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/ResultOverviewCSS.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/ResultOverviewCSS.java Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,20 @@ +package de.mpiwg.itgroup.escidoc.MPIWGServices.Restlet; + +import java.io.InputStream; + +import org.restlet.data.MediaType; +import org.restlet.representation.InputRepresentation; +import org.restlet.representation.Representation; +import org.restlet.resource.Get; +import org.restlet.resource.ServerResource; + +public class ResultOverviewCSS extends ServerResource{ + + @Get("html") + public Representation getHtml(){ + + InputStream in = getClass().getResourceAsStream("/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/resultOverview.css"); + + return new InputRepresentation(in, MediaType.TEXT_CSS); + } +} diff -r 000000000000 -r 1aac45997235 src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/services/display/DisplayContainer.java --- /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"); + } + 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 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"); + } + 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(""+printXML(headerTag)+printXML(listTag)+"",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; + +} +} diff -r 000000000000 -r 1aac45997235 src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/services/redirect/ComponentURLRedirector.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/services/redirect/ComponentURLRedirector.java Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,107 @@ +package de.mpiwg.itgroup.escidoc.MPIWGServices.Restlet.services.redirect; + + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +import org.apache.http.HttpResponse; +import org.jdom.Attribute; +import org.jdom.Document; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.xpath.XPath; +import org.restlet.data.Status; +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; +import de.mpiwg.itgroup.eSciDoc.Tools.EScidocTools; + + +public class ComponentURLRedirector extends ServerResource{ + + private String eScidocServer; + private String eScidocPort; + private String content_cat; + private String eScidocUser; + private String eScidocUserPW; + + public ComponentURLRedirector(String content_cat) throws IOException{ + this.content_cat = content_cat; + 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"); + eScidocUser = (String)prop.get("eScidocUser"); + eScidocUserPW=(String)prop.get("eScidocUserPW"); + + } + @Get("html") + public Representation getHtml() + { + String id = (String)getRequest().getAttributes().get("escidocId"); + EScidocBasicHandler handler = null; + if (getContext().getAttributes().containsKey("escidocHandler")){ + handler = (EScidocBasicHandler) getContext().getAttributes().get("escidocHandler"); + } + + if (handler==null){ + handler = new EScidocBasicHandler(eScidocServer, Integer.valueOf(eScidocPort),eScidocUser,eScidocUserPW); + } + + + HttpResponse resp; + try { + resp = handler.eScidocGet("/ir/item/"+id); + } catch (IOException e) { + setStatus(Status.SERVER_ERROR_INTERNAL); + return new StringRepresentation("error1"); + } + int code = resp.getStatusLine().getStatusCode(); + if (code!=200){ + setStatus(new Status(code)); + return new StringRepresentation("error2"); + + } + + Document doc; + String url; + try { + doc = new SAXBuilder().build(resp.getEntity().getContent()); + + + XPath xp= EScidocTools.getESciDocXpath("//escidocComponents:component[escidocComponents:properties/prop:content-category[text()='"+content_cat+"']]/escidocComponents:content/@xlink:href"); + Attribute item = (Attribute)xp.selectSingleNode(doc); + url = item.getValue(); + + } catch (Exception e) { + + if (content_cat.equals("display_url")) // wemm display und error dann versuche genrische anzeige der bilder + { + url="./images"; + StringRepresentation repr = new StringRepresentation(url); + getResponse().redirectPermanent(url); + return repr; + + } else { + setStatus(Status.SERVER_ERROR_INTERNAL); + + return new StringRepresentation("error3a"); + } + } + + + if (!url.startsWith("http")) { // relative url + url="http://"+eScidocServer+":"+eScidocPort+url; + } + + StringRepresentation repr = new StringRepresentation(url); + getResponse().redirectPermanent(url); + return repr; + } +} diff -r 000000000000 -r 1aac45997235 src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/services/redirect/DigilibRedirector.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/services/redirect/DigilibRedirector.java Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,91 @@ +package de.mpiwg.itgroup.escidoc.MPIWGServices.Restlet.services.redirect; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +import org.apache.http.HttpResponse; +import org.jdom.Attribute; +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.xpath.XPath; +import org.restlet.data.Status; +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; +import de.mpiwg.itgroup.eSciDoc.Tools.EScidocTools; +import de.mpiwg.itgroup.eSciDoc.echoObjects.ECHORessource; + + +public class DigilibRedirector extends ServerResource{ + + private String eScidocServer; + private String eScidocPort; + private String digilibPath; + private String eScidocUser; + private String eScidocUserPW; + public DigilibRedirector() 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"); + digilibPath=(String)prop.get("digilibPath"); + eScidocUser=(String)prop.get("eScidocUser"); + eScidocUserPW=(String)prop.get("eScidocUserPW"); + + } + @Get("html") + public Representation getHtml() + { + String id = (String)getRequest().getAttributes().get("escidocId"); + EScidocBasicHandler handler = null; + if (getContext().getAttributes().containsKey("escidocHandler")){ + handler = (EScidocBasicHandler) getContext().getAttributes().get("escidocHandler"); + } + + if (handler==null){ + handler = new EScidocBasicHandler(eScidocServer, Integer.valueOf(eScidocPort),eScidocUser,eScidocUserPW); + } + + + HttpResponse resp; + try { + resp = handler.eScidocGet("/ir/item/"+id); + } catch (IOException e) { + setStatus(Status.SERVER_ERROR_INTERNAL); + return new StringRepresentation("error1"); + } + int code = resp.getStatusLine().getStatusCode(); + if (code!=200){ + setStatus(new Status(code)); + return new StringRepresentation("error2"); + + } + + Document doc; + String path; + try { + doc = new SAXBuilder().build(resp.getEntity().getContent()); + + + XPath xp= EScidocTools.getESciDocXpath("//metadataRecords:md-record[@xlink:title='mpiwg-admin']/mpiwg:admin/mpiwg:imageFolder"); + Element item = (Element)xp.selectSingleNode(doc); + path = item.getTextTrim(); + path= ECHORessource.correct(path); // nur pfad nach online + } catch (Exception e) { + setStatus(Status.SERVER_ERROR_INTERNAL); + return new StringRepresentation("error3"); + } + + + StringRepresentation repr = new StringRepresentation(digilibPath+path); + getResponse().redirectPermanent(digilibPath+path); + return repr; + } +} diff -r 000000000000 -r 1aac45997235 src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/services/redirect/DisplayRedirector.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/services/redirect/DisplayRedirector.java Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,13 @@ +package de.mpiwg.itgroup.escidoc.MPIWGServices.Restlet.services.redirect; + +import java.io.IOException; + + +public class DisplayRedirector extends ComponentURLRedirector { + + public DisplayRedirector() throws IOException { + super("display_url"); + // TODO Auto-generated constructor stub + } + +} diff -r 000000000000 -r 1aac45997235 src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/services/redirect/ECHORedirector.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/services/redirect/ECHORedirector.java Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,13 @@ +package de.mpiwg.itgroup.escidoc.MPIWGServices.Restlet.services.redirect; + +import java.io.IOException; + + + +public class ECHORedirector extends ComponentURLRedirector{ + + public ECHORedirector() throws IOException { + super("web_page"); + } + +} \ No newline at end of file diff -r 000000000000 -r 1aac45997235 src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/services/redirect/IndexMetaRedirector.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/services/redirect/IndexMetaRedirector.java Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,14 @@ +package de.mpiwg.itgroup.escidoc.MPIWGServices.Restlet.services.redirect; + +import java.io.IOException; + + + +public class IndexMetaRedirector extends ComponentURLRedirector{ + + public IndexMetaRedirector() throws IOException { + super("index_meta"); + // TODO Auto-generated constructor stub + } + +} \ No newline at end of file diff -r 000000000000 -r 1aac45997235 src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/services/redirect/OrigRefRedirector.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/services/redirect/OrigRefRedirector.java Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,133 @@ +package de.mpiwg.itgroup.escidoc.MPIWGServices.Restlet.services.redirect; + +import java.io.IOException; +import java.io.InputStream; +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.jdom.Attribute; +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.jdom.xpath.XPath; +import org.restlet.data.Form; +import org.restlet.data.MediaType; +import org.restlet.data.Status; +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; +import de.mpiwg.itgroup.eSciDoc.Tools.EScidocTools; +import de.mpiwg.itgroup.eSciDoc.echoObjects.ECHORessource; + + +public class OrigRefRedirector extends ServerResource{ + + private String eScidocServer; + private String eScidocPort; + + private String eScidocUser; + private String eScidocUserPW; + public OrigRefRedirector() 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"); + eScidocUser=(String)prop.get("eScidocUser"); + eScidocUserPW=(String)prop.get("eScidocUserPW"); + + } + @Get("html") + public Representation getHtml() throws JDOMException, IOException, TransformerFactoryConfigurationError, TransformerException + { + + Form form = getRequest().getResourceRef().getQueryAsForm(); + + String mode=form.getValues("mode"); //xml or html default is html + if(mode==null | mode.equals("")) + mode="xml"; + + String id = (String)getRequest().getAttributes().get("escidocId"); + EScidocBasicHandler handler = null; + if (getContext().getAttributes().containsKey("escidocHandler")){ + handler = (EScidocBasicHandler) getContext().getAttributes().get("escidocHandler"); + } + + if (handler==null){ + handler = new EScidocBasicHandler(eScidocServer, Integer.valueOf(eScidocPort),eScidocUser,eScidocUserPW); + } + + + HttpResponse resp; + try { + resp = handler.eScidocGet("/ir/item/"+id); + } catch (IOException e) { + setStatus(Status.SERVER_ERROR_INTERNAL); + return new StringRepresentation("error1"); + } + int code = resp.getStatusLine().getStatusCode(); + if (code!=200){ + setStatus(new Status(code)); + return new StringRepresentation("error2"); + + } + + Document doc; + String path; + try { + doc = new SAXBuilder().build(resp.getEntity().getContent()); + + + XPath xp= EScidocTools.getESciDocXpath("//metadataRecords:md-record[@xlink:title='mpiwg-admin']/mpiwg:admin/mpiwg:orig-ref/@xlink:href"); + Attribute item = (Attribute)xp.selectSingleNode(doc); + path = item.getValue(); + } catch (Exception e) { + setStatus(Status.SERVER_ERROR_INTERNAL); + return new StringRepresentation("error3"); + } + + if(mode.equals("xml")) + { + StringRepresentation repr = new StringRepresentation(path); + getResponse().redirectPermanent(path); + return repr; + } else if (mode.equals("html")){ + Document indexMeta = new SAXBuilder().build(path); + InputStream xslt= getClass().getResourceAsStream("/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/formatIndexMeta.xsl"); + //Document styleDoc = new SAXBuilder().build(xslt); + + Transformer transformer = TransformerFactory.newInstance().newTransformer(new StreamSource(xslt)); + JDOMSource inxml = new JDOMSource(indexMeta); + JDOMResult out = new JDOMResult(); + transformer.transform(inxml, out); + //logger.debug(printXML(doc)); + + Document docresult = out.getDocument(); + return new StringRepresentation(printXML(docresult),MediaType.TEXT_HTML); + } else { + setStatus(Status.CLIENT_ERROR_BAD_REQUEST); + return new StringRepresentation("wrong value for parameter mode, only html or xml allowed."); + } + } + + public String printXML(Document dom) throws IOException{ + XMLOutputter out = new XMLOutputter(); + + String string = out.outputString(dom); + return string; + } +} diff -r 000000000000 -r 1aac45997235 src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/services/search/SimpleSearch.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/services/search/SimpleSearch.java Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,201 @@ +package de.mpiwg.itgroup.escidoc.MPIWGServices.Restlet.services.search; + + + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +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.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.log4j.Logger; +import org.jdom.Document; +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.jdom.transform.XSLTransformer; +import org.restlet.data.Form; +import org.restlet.data.MediaType; +import org.restlet.data.Status; +import org.restlet.representation.InputRepresentation; +import org.restlet.representation.Representation; +import org.restlet.representation.StreamRepresentation; +import org.restlet.representation.StringRepresentation; +import org.restlet.resource.Get; +import org.restlet.resource.Options; +import org.restlet.resource.Post; +import org.restlet.resource.ServerResource; +import org.w3c.dom.Entity; + +import de.mpiwg.itgroup.eSciDoc.Tools.EScidocBasicHandler; + +public class SimpleSearch extends ServerResource{ + + private String eScidocServer; + private String eScidocPort; + private Logger logger= Logger.getRootLogger(); + private String eScidocUser; + private String eScidocUserPW; + + public SimpleSearch() 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"); + eScidocUser=(String)prop.get("eScidocUser"); + eScidocUserPW=(String)prop.get("eScidocUserPW"); + } + @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("html") + public Representation getHtml(){ + + // 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", "*"); + + Form form = getRequest().getResourceRef().getQueryAsForm(); + + Representation returnRepr = doSearch(form); + if (returnRepr==null){ + InputStream in = getClass().getResourceAsStream("/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/search.html"); + + return new InputRepresentation(in, MediaType.TEXT_HTML); + } + else + return returnRepr; + + } + + + /** + * Bearbeite das Suchformular, gibt null zurueck, wenn das formular leer ist. + * @param searchForm + * @return + */ + public Representation doSearch(Form searchForm){ + + + String searchAll=searchForm.getValues("allMetadata"); + String searchTitle=searchForm.getValues("title"); + String searchAuthor=searchForm.getValues("author"); + + String queryString =""; + Boolean isSearch=false; + if (searchAll!=null && !searchAll.equals("")){ + queryString="escidoc.metadata="+searchAll; + isSearch=true; + } else if (searchTitle!=null && !searchTitle.equals("")){ + queryString="escidoc.any-title="+searchTitle; + isSearch=true; + } else if (searchAuthor!=null && !searchAuthor.equals("")){ + queryString="escidoc.creator="+searchAuthor; + isSearch=true; + } + if (!isSearch) return null; + + String query; + try { + query = "/srw/search/escidoc_all?maximumRecords=3&query="+URLEncoder.encode(queryString,"utf-8"); + } catch (UnsupportedEncodingException e) { + logger.error("do Search, cannot encode:"+queryString); + setStatus(Status.SERVER_ERROR_INTERNAL); + return new StringRepresentation("error"); + } + + EScidocBasicHandler handler = new EScidocBasicHandler(eScidocServer, Integer.valueOf(eScidocPort),eScidocUser,eScidocUserPW); + + HttpResponse result; + try { + result = handler.eScidocGet(query); + } catch (IOException e) { + logger.error("do Search, cannot encode:"+queryString); + setStatus(Status.SERVER_ERROR_INTERNAL); + return new StringRepresentation("error"); + } + + if (result.getStatusLine().getStatusCode()!=200){ + setStatus(Status.SERVER_ERROR_INTERNAL); + logger.error("do Search, got Error:"+queryString); + + HttpEntity ent = result.getEntity(); + if (ent!=null){ + InputStream in; + try { + in = ent.getContent(); + } catch (Exception e) { + return new StringRepresentation("error"); + } + + return new InputRepresentation(in); + } + else { + return new StringRepresentation("error"); + } + } + + InputStream in; + try { + in = result.getEntity().getContent(); + + Document doc = new SAXBuilder().build(in); + InputStream xslt= getClass().getResourceAsStream("/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/searchResult.xsl"); + //Document styleDoc = new SAXBuilder().build(xslt); + + Transformer transformer = TransformerFactory.newInstance().newTransformer(new StreamSource(xslt)); + JDOMSource inxml = new JDOMSource(doc); + JDOMResult out = new JDOMResult(); + transformer.transform(inxml, out); + //logger.debug(printXML(doc)); + + Document docresult = out.getDocument(); + return new StringRepresentation(printXML(docresult),MediaType.TEXT_HTML); + + } catch (Exception e) { + logger.trace(e); + return new StringRepresentation("error"); + } + + + + + } + + public String printXML(Document dom) throws IOException{ + XMLOutputter out = new XMLOutputter(); + + String string = out.outputString(dom); + return string; + +} +} diff -r 000000000000 -r 1aac45997235 src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/PID.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/PID.html Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,7 @@ + + +

PID Generator

+

Erzeugt PIDs für den Gebrauch am MPIWG

+

Usage: POST /PID, zurück kommt eine ID als Plain-Text. + + \ No newline at end of file diff -r 000000000000 -r 1aac45997235 src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/collectionDisplay.xsl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/collectionDisplay.xsl Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,51 @@ + + + +

+ +
+ + + +
+ + + +
+ + + + +
+
+ + +
+ + +
+
+ + +
+ + \ No newline at end of file diff -r 000000000000 -r 1aac45997235 src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/displayContainerHeader.xsl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/displayContainerHeader.xsl Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,27 @@ + + + +
+
+
+
+ + + +
+
\ No newline at end of file diff -r 000000000000 -r 1aac45997235 src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/formatIndexMeta.xsl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/formatIndexMeta.xsl Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,338 @@ + + + + + + + + +
    + + + : + + +
+
+
+ + + + + eSciDoc<xsl:if test="*/@xlink:title != ''"> - <xsl:value-of select="*/@xlink:title"/></xsl:if><xsl:if test="*/@xlink:href"> - <xsl:value-of select="*/@xlink:href"/></xsl:if> + + + + +
+ + + + +
+ + + + +

+ +

+ +
  • + + + + + + + +
  • +
    +
    + +

    +
    +

    + message +

    + toggleVisibility(''); + + + + border: 0px solid #000000; + Message +

    +
    +			-body
    +			
    +		
    + + stacktrace +

    + toggleVisibility(''); + + + + border: 0px solid #000000; + Stack Trace +

    +
    +			-body
    +			
    +		
    + + more + +

    + toggleVisibility(''); + + + + border: 0px solid #000000; + Nested Exceptions +

    +
    +				-body
    +				
    +			
    +
    +
    +
    + + + + + + + + + + + +

    + + ( + + + + - + + + + - + + + + - + + + + ) +

    + +

    + This version: + + + + + + + + ( + + ) + +
    + Latest version: + + + + + + + + ( + + ) +
    + +
    + Latest release: + + + + + + + + ( + + ) +
    +

    +
    + + + + +
    + + + + +
      + + + : + + + + + + + + + + + + + + @ + + = + + + + +
      + + + +
    +
    + + + +
    diff -r 000000000000 -r 1aac45997235 src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/resultOverview.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/resultOverview.css Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,40 @@ +.searchResultRecord { + border-bottom-style: solid; + border-bottom-color: black; + } +.dcMetaData { +} + +.result { + display: inline-block; + white-space: normal; + padding-left: 10px; + vertical-align: top; + font-size:10pt; +} + +.searchLogo{ + width:50pt; + } + +.displayType{ + width:50pt; + } + +.resultTitle{ + width:150pt; + } + +.resultAuthor{ + width:100pt; + } +.resultDescription{ + width:200pt; + font-size: 8pt; + } +.resultYear, .resultDate{ + width:100pt; + } +.textFragmentData{ + display: none; + } diff -r 000000000000 -r 1aac45997235 src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/search.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/search.html Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,18 @@ + + +
    +
    Search all:
    +
    Search Title:
    +
    Search Author:
    +
    + +

    You can use

    + + +

    Instead of "umlauts" use the vowel the umlaut is derived from: i.e. ü -> u, ä -> a

    +
    + + \ No newline at end of file diff -r 000000000000 -r 1aac45997235 src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/searchResult.xsl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/staticPages/searchResult.xsl Wed Dec 01 17:35:51 2010 +0100 @@ -0,0 +1,89 @@ + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    + + +
    Item
    + + + + + +
    + + +
    Collection
    + + +
    + + +
    + +
    +
    + + + + + + + + +
     
    +
     
    +
     
    +
     
    +
     
    + +
    + +
    \ No newline at end of file