annotate src/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/services/redirect/DocuviewerRedirector.java @ 4:938e45fabd7c default tip

version f?r escidoc produktionsversion
author dwinter
date Wed, 25 Jul 2012 12:36:25 +0200
parents 498b68667ff3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
1 package de.mpiwg.itgroup.escidoc.MPIWGServices.Restlet.services.redirect;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
2
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
3
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
4 import java.io.BufferedInputStream;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
5 import java.io.BufferedReader;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
6 import java.io.DataInputStream;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
7 import java.io.IOException;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
8 import java.io.InputStream;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
9 import java.io.InputStreamReader;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
10 import java.net.MalformedURLException;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
11 import java.net.URL;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
12 import java.util.ArrayList;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
13 import java.util.HashMap;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
14 import java.util.List;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
15 import java.util.Map;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
16 import java.util.Properties;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
17
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
18 import org.apache.http.HttpResponse;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
19 import org.jdom.Attribute;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
20 import org.jdom.Document;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
21 import org.jdom.Element;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
22 import org.jdom.JDOMException;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
23 import org.jdom.input.SAXBuilder;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
24 import org.jdom.xpath.XPath;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
25 import org.restlet.data.Status;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
26 import org.restlet.representation.Representation;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
27 import org.restlet.representation.StringRepresentation;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
28 import org.restlet.resource.Get;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
29 import org.restlet.resource.ServerResource;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
30
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
31 import de.mpiwg.itgroup.eSciDoc.Tools.EScidocBasicHandler;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
32 import de.mpiwg.itgroup.eSciDoc.Tools.EScidocTools;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
33 import de.mpiwg.itgroup.eSciDoc.echoObjects.ECHORessource;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
34
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
35 //http://127.0.0.1:8280/eScidocMPIWGServicesRestlet/docuview/escidoc:35464:2
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
36
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
37 public class DocuviewerRedirector extends ServerResource{
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
38
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
39 private String eScidocServer;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
40 private String eScidocPort;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
41 private String eScidocUser;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
42 private String eScidocUserPW;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
43
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
44 private String viewerWithIndexMetaFormatString;//="http://echo.mpiwg-berlin.mpg.de/ECHOdocuViewfull?url=%s"; // Formatstring fuer URLS, die die Daten anzeigen, falls ein IndexMeta vorhanden ist.
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
45 private String viewerWithImagePathFormatString;//="http://echo.mpiwg-berlin.mpg.de/ECHOdocuViewfull?mode=imagepath&url=%s&viewMode=images"; // Formatstring fuer URLS, die die Daten anzeigen, falls ein ImagePath vorhanden ist.
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
46
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
47 private Map<String,List<String>> viewers;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
48
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
49 public DocuviewerRedirector() throws IOException{
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
50 InputStream is = getClass().getResourceAsStream("/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/config/eScidocServer.config");
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
51 Properties prop = new Properties();
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
52 prop.load(is);
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
53
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
54 eScidocServer= (String)prop.get("eScidocServer");
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
55 eScidocPort=(String)prop.get("eScidocPort");
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
56 eScidocUser = (String)prop.get("eScidocUser");
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
57 eScidocUserPW=(String)prop.get("eScidocUserPW");
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
58
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
59 InputStream viewerConf = getClass().getResourceAsStream("/de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/config/viewer.config");
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
60
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
61 BufferedReader br = new BufferedReader(new InputStreamReader(new DataInputStream(viewerConf)));
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
62
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
63 String strLine;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
64 viewers = new HashMap<String, List<String>>();
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
65
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
66 while ((strLine = br.readLine()) != null) {
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
67 String[] splitted = strLine.split(",");
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
68
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
69 List<String> list =new ArrayList<String>();
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
70
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
71 if (splitted[1].equals(""))
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
72 list.add(null); // index.meta koennen nicht interpretiert werden.
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
73 else
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
74 list.add(splitted[1]); // add url for index.meta
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
75
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
76
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
77 if (splitted.length>1)
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
78 if (splitted[2].equals(""))
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
79 list.add(null);
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
80 else
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
81 list.add(splitted[2]); // add url for images
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
82 else
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
83 list.add(null); // null wenn keiner konfiguriert wird. TODO: handle this
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
84
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
85 viewers.put(splitted[0], list);
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
86 }
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
87
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
88
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
89 }
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
90 @Get("html")
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
91 public Representation getHtml()
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
92 {
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
93 String id = (String)getRequest().getAttributes().get("escidocId");
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
94 String flavour = (String)getRequest().getAttributes().get("flavour");
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
95
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
96 if (!viewers.containsKey(flavour)){
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
97 setStatus(Status.CLIENT_ERROR_NOT_FOUND);
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
98 return new StringRepresentation("no viewer configured for flavour:"+flavour+"! Check /de/mpiwg/itgroup/escidoc/MPIWGServices/Restlet/config/viewer.config");
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
99 }
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
100
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
101 List<String> formats = viewers.get(flavour);
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
102
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
103 viewerWithIndexMetaFormatString = formats.get(0);
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
104 viewerWithImagePathFormatString = formats.get(1);
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
105
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
106 EScidocBasicHandler handler = null;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
107 if (getContext().getAttributes().containsKey("escidocHandler")){
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
108 handler = (EScidocBasicHandler) getContext().getAttributes().get("escidocHandler");
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
109 }
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
110
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
111 if (handler==null){
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
112 handler = new EScidocBasicHandler(eScidocServer, Integer.valueOf(eScidocPort),eScidocUser,eScidocUserPW);
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
113 }
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
114
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
115
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
116 HttpResponse resp;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
117 try {
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
118 resp = handler.eScidocGet("/ir/item/"+id);
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
119 } catch (IOException e) {
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
120 setStatus(Status.SERVER_ERROR_INTERNAL);
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
121 return new StringRepresentation("<html><body>error1</body></html>");
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
122 }
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
123 int code = resp.getStatusLine().getStatusCode();
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
124 if (code!=200){
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
125 setStatus(new Status(code));
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
126 return new StringRepresentation("<html><body>error2</body></html>");
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
127
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
128 }
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
129
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
130 Document doc;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
131 String url;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
132 try {
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
133 doc = new SAXBuilder().build(resp.getEntity().getContent());
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
134
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
135
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
136 //XPath xp= EScidocTools.getESciDocXpath("//escidocComponents:component[escidocComponents:properties/prop:content-category[text()='index_meta']]/escidocComponents:content/@xlink:href");
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
137
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
138 XPath xp= EScidocTools.getESciDocXpath("//metadataRecords:md-record[@xlink:title='mpiwg-admin']/mpiwg:admin/mpiwg:orig-ref/@xlink:href");
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
139 Attribute item = (Attribute)xp.selectSingleNode(doc);
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
140 url = item.getValue();
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
141
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
142 } catch (Exception e) {
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
143 setStatus(Status.SERVER_ERROR_INTERNAL);
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
144 return new StringRepresentation("<html><body>error3a</body></html>");
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
145
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
146 }
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
147
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
148
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
149 if (!url.startsWith("http")) { // relative url
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
150 url="http://"+eScidocServer+":"+eScidocPort+url;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
151 }
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
152
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
153
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
154
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
155 String viewerUrl;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
156 if (checkIndexMeta(url) && (viewerWithIndexMetaFormatString!=null)){ // index meta enthaelt texttool und viewer kann index meta interpretieren.
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
157 viewerUrl=String.format(viewerWithIndexMetaFormatString, url);
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
158 } else { // andernfalls hole den pfad auf die bilder
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
159
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
160 try {
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
161 XPath xp= EScidocTools.getESciDocXpath("//metadataRecords:md-record[@xlink:title='mpiwg-admin']/mpiwg:admin/mpiwg:imageFolder");
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
162 Element item = (Element)xp.selectSingleNode(doc);
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
163 String path = item.getTextTrim();
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
164 path= ECHORessource.correct(path); // nur pfad nach online
4
938e45fabd7c version f?r escidoc produktionsversion
dwinter
parents: 3
diff changeset
165 if (path.equals("")){
938e45fabd7c version f?r escidoc produktionsversion
dwinter
parents: 3
diff changeset
166 xp= EScidocTools.getESciDocXpath("//metadataRecords:md-record[@xlink:title='mpiwg-admin']/mpiwg:admin/mpiwg:archivePath");
938e45fabd7c version f?r escidoc produktionsversion
dwinter
parents: 3
diff changeset
167 item = (Element)xp.selectSingleNode(doc);
938e45fabd7c version f?r escidoc produktionsversion
dwinter
parents: 3
diff changeset
168 path = item.getTextTrim();
938e45fabd7c version f?r escidoc produktionsversion
dwinter
parents: 3
diff changeset
169 path= ECHORessource.correct(path); // nur pfad nach online
938e45fabd7c version f?r escidoc produktionsversion
dwinter
parents: 3
diff changeset
170 path=path+"/pageimg";
938e45fabd7c version f?r escidoc produktionsversion
dwinter
parents: 3
diff changeset
171 }
3
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
172 viewerUrl=String.format(viewerWithImagePathFormatString, path);
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
173 } catch (Exception e) {
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
174 setStatus(Status.SERVER_ERROR_INTERNAL);
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
175 return new StringRepresentation("<html><body>error3</body></html>");
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
176 }
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
177
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
178
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
179
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
180 }
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
181 StringRepresentation repr = new StringRepresentation(viewerUrl);
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
182 getResponse().redirectPermanent(viewerUrl);
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
183 return repr;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
184 }
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
185
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
186
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
187
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
188 private boolean checkIndexMeta(String url) {
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
189 try {
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
190 Document doc = new SAXBuilder().build(new URL(url));
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
191 XPath xp = XPath.newInstance("//texttool");
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
192
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
193 Object item = xp.selectSingleNode(doc);
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
194 if (item!=null)
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
195 return true;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
196
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
197 } catch (MalformedURLException e) {
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
198 // TODO Auto-generated catch block
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
199 e.printStackTrace();
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
200 } catch (JDOMException e) {
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
201 // TODO Auto-generated catch block
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
202 e.printStackTrace();
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
203 } catch (IOException e) {
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
204 // TODO Auto-generated catch block
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
205 e.printStackTrace();
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
206 }
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
207
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
208 return false;
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
209 }
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
210
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
211
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
212
498b68667ff3 Neuer Mechanismus zum umleiten der Quellen.
dwinter
parents:
diff changeset
213 }