Mercurial > hg > eSciDocMPIWGServicesRestlet
comparison 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 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1aac45997235 |
---|---|
1 package de.mpiwg.itgroup.escidoc.MPIWGServices.Restlet.services.redirect; | |
2 | |
3 import java.io.IOException; | |
4 import java.io.InputStream; | |
5 import java.util.Properties; | |
6 | |
7 import org.apache.http.HttpResponse; | |
8 import org.jdom.Attribute; | |
9 import org.jdom.Document; | |
10 import org.jdom.Element; | |
11 import org.jdom.JDOMException; | |
12 import org.jdom.input.SAXBuilder; | |
13 import org.jdom.xpath.XPath; | |
14 import org.restlet.data.Status; | |
15 import org.restlet.representation.Representation; | |
16 import org.restlet.representation.StringRepresentation; | |
17 import org.restlet.resource.Get; | |
18 import org.restlet.resource.ServerResource; | |
19 | |
20 import de.mpiwg.itgroup.eSciDoc.Tools.EScidocBasicHandler; | |
21 import de.mpiwg.itgroup.eSciDoc.Tools.EScidocTools; | |
22 import de.mpiwg.itgroup.eSciDoc.echoObjects.ECHORessource; | |
23 | |
24 | |
25 public class DigilibRedirector extends ServerResource{ | |
26 | |
27 private String eScidocServer; | |
28 private String eScidocPort; | |
29 private String digilibPath; | |
30 private String eScidocUser; | |
31 private String eScidocUserPW; | |
32 public DigilibRedirector() throws IOException{ | |
33 InputStream is = getClass().getResourceAsStream("/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/config/eScidocServer.config"); | |
34 Properties prop = new Properties(); | |
35 prop.load(is); | |
36 eScidocServer= (String)prop.get("eScidocServer"); | |
37 eScidocPort=(String)prop.get("eScidocPort"); | |
38 digilibPath=(String)prop.get("digilibPath"); | |
39 eScidocUser=(String)prop.get("eScidocUser"); | |
40 eScidocUserPW=(String)prop.get("eScidocUserPW"); | |
41 | |
42 } | |
43 @Get("html") | |
44 public Representation getHtml() | |
45 { | |
46 String id = (String)getRequest().getAttributes().get("escidocId"); | |
47 EScidocBasicHandler handler = null; | |
48 if (getContext().getAttributes().containsKey("escidocHandler")){ | |
49 handler = (EScidocBasicHandler) getContext().getAttributes().get("escidocHandler"); | |
50 } | |
51 | |
52 if (handler==null){ | |
53 handler = new EScidocBasicHandler(eScidocServer, Integer.valueOf(eScidocPort),eScidocUser,eScidocUserPW); | |
54 } | |
55 | |
56 | |
57 HttpResponse resp; | |
58 try { | |
59 resp = handler.eScidocGet("/ir/item/"+id); | |
60 } catch (IOException e) { | |
61 setStatus(Status.SERVER_ERROR_INTERNAL); | |
62 return new StringRepresentation("<html><body>error1</body></html>"); | |
63 } | |
64 int code = resp.getStatusLine().getStatusCode(); | |
65 if (code!=200){ | |
66 setStatus(new Status(code)); | |
67 return new StringRepresentation("<html><body>error2</body></html>"); | |
68 | |
69 } | |
70 | |
71 Document doc; | |
72 String path; | |
73 try { | |
74 doc = new SAXBuilder().build(resp.getEntity().getContent()); | |
75 | |
76 | |
77 XPath xp= EScidocTools.getESciDocXpath("//metadataRecords:md-record[@xlink:title='mpiwg-admin']/mpiwg:admin/mpiwg:imageFolder"); | |
78 Element item = (Element)xp.selectSingleNode(doc); | |
79 path = item.getTextTrim(); | |
80 path= ECHORessource.correct(path); // nur pfad nach online | |
81 } catch (Exception e) { | |
82 setStatus(Status.SERVER_ERROR_INTERNAL); | |
83 return new StringRepresentation("<html><body>error3</body></html>"); | |
84 } | |
85 | |
86 | |
87 StringRepresentation repr = new StringRepresentation(digilibPath+path); | |
88 getResponse().redirectPermanent(digilibPath+path); | |
89 return repr; | |
90 } | |
91 } |