diff src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/services/redirect/DigilibRedirector.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/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("<html><body>error1</body></html>");
+		}
+		int code = resp.getStatusLine().getStatusCode();
+		if (code!=200){
+			setStatus(new Status(code));
+			return new StringRepresentation("<html><body>error2</body></html>");
+			
+		}
+		
+		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("<html><body>error3</body></html>");
+		}
+		
+		
+		StringRepresentation repr = new StringRepresentation(digilibPath+path);
+		getResponse().redirectPermanent(digilibPath+path);
+		return repr;
+	}
+}