annotate src/de/mpiwg/itgroup/eSciDoc/echoObjects/ECHORessource.java @ 0:c6929e63b0b8

first import
author dwinter
date Wed, 24 Nov 2010 16:52:07 +0100
parents
children 58b52df9763c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
1 package de.mpiwg.itgroup.eSciDoc.echoObjects;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
2
c6929e63b0b8 first import
dwinter
parents:
diff changeset
3 import java.io.IOException;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
4 import java.net.URI;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
5 import java.util.Properties;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
6 import java.util.regex.Matcher;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
7 import java.util.regex.Pattern;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
8
c6929e63b0b8 first import
dwinter
parents:
diff changeset
9
c6929e63b0b8 first import
dwinter
parents:
diff changeset
10 import org.apache.http.Header;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
11 import org.apache.http.HttpException;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
12 import org.apache.http.HttpHost;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
13 import org.apache.http.HttpResponse;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
14 import org.apache.http.client.ClientProtocolException;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
15 import org.apache.http.client.HttpClient;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
16 import org.apache.http.client.methods.HttpGet;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
17 import org.apache.http.client.methods.HttpUriRequest;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
18 import org.apache.http.impl.client.DefaultHttpClient;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
19 import org.apache.http.protocol.BasicHttpContext;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
20 import org.apache.http.protocol.ExecutionContext;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
21 import org.apache.http.protocol.HttpContext;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
22
c6929e63b0b8 first import
dwinter
parents:
diff changeset
23 import de.mpiwg.itgroup.eSciDoc.Tools.EScidocBasicHandler;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
24 import de.mpiwg.itgroup.eSciDoc.Tools.EScidocTools;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
25 import de.mpiwg.itgroup.metadataManager.pid.DCTransformer;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
26
c6929e63b0b8 first import
dwinter
parents:
diff changeset
27 public class ECHORessource extends ECHOObject{
c6929e63b0b8 first import
dwinter
parents:
diff changeset
28
c6929e63b0b8 first import
dwinter
parents:
diff changeset
29
c6929e63b0b8 first import
dwinter
parents:
diff changeset
30 public String archivePath;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
31 public String metaData ="";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
32 public String fullText ="";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
33 private String textServletUrl;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
34 private String dirInfoUrl;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
35 public String link;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
36
c6929e63b0b8 first import
dwinter
parents:
diff changeset
37
c6929e63b0b8 first import
dwinter
parents:
diff changeset
38 public ECHORessource() throws IOException{
c6929e63b0b8 first import
dwinter
parents:
diff changeset
39 super();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
40 CMM ="/cmm/content-model/escidoc:11003";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
41 Properties echoProperties = new Properties();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
42 echoProperties.load(getClass().getResourceAsStream("/de/mpiwg/itgroup/eSciDoc/config/echo.properties"));
c6929e63b0b8 first import
dwinter
parents:
diff changeset
43
c6929e63b0b8 first import
dwinter
parents:
diff changeset
44 textServletUrl = (String) echoProperties.get("textServletUrl");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
45 dirInfoUrl = (String) echoProperties.get("dirInfoUrl");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
46
c6929e63b0b8 first import
dwinter
parents:
diff changeset
47 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
48
c6929e63b0b8 first import
dwinter
parents:
diff changeset
49
c6929e63b0b8 first import
dwinter
parents:
diff changeset
50 public ECHORessource(String name, String archivePath, String echoUrl) throws IOException {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
51 this();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
52 CMM ="/cmm/content-model/escidoc:11003";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
53 this.name = name;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
54 this.archivePath = archivePath;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
55 this.echoUrl = echoUrl;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
56 this.link = getLinkFromUrl(echoUrl);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
57
c6929e63b0b8 first import
dwinter
parents:
diff changeset
58
c6929e63b0b8 first import
dwinter
parents:
diff changeset
59 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
60
c6929e63b0b8 first import
dwinter
parents:
diff changeset
61 /** Holt die URL auf die das ECHO Objekt redirected
c6929e63b0b8 first import
dwinter
parents:
diff changeset
62 * @param echoUrl
c6929e63b0b8 first import
dwinter
parents:
diff changeset
63 * @return
c6929e63b0b8 first import
dwinter
parents:
diff changeset
64 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
65 private String getLinkFromUrl(String echoUrl) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
66 if (echoUrl==null)
c6929e63b0b8 first import
dwinter
parents:
diff changeset
67 return null;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
68 HttpContext localContext = new BasicHttpContext();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
69 HttpClient hc = new DefaultHttpClient();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
70 HttpGet get = new HttpGet(echoUrl);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
71 HttpResponse response;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
72 HttpUriRequest req;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
73 HttpHost target;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
74
c6929e63b0b8 first import
dwinter
parents:
diff changeset
75 try {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
76 response = hc.execute(get,localContext);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
77 req = (HttpUriRequest) localContext.getAttribute(
c6929e63b0b8 first import
dwinter
parents:
diff changeset
78 ExecutionContext.HTTP_REQUEST);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
79 target = (HttpHost) localContext.getAttribute(
c6929e63b0b8 first import
dwinter
parents:
diff changeset
80 ExecutionContext.HTTP_TARGET_HOST);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
81
c6929e63b0b8 first import
dwinter
parents:
diff changeset
82
c6929e63b0b8 first import
dwinter
parents:
diff changeset
83 } catch (ClientProtocolException e) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
84 // TODO Auto-generated catch block
c6929e63b0b8 first import
dwinter
parents:
diff changeset
85 e.printStackTrace();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
86 return "";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
87 } catch (IOException e) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
88 // TODO Auto-generated catch block
c6929e63b0b8 first import
dwinter
parents:
diff changeset
89 e.printStackTrace();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
90 return "";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
91 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
92 URI ret = req.getURI();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
93
c6929e63b0b8 first import
dwinter
parents:
diff changeset
94 return target.toString()+ret.toString();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
95 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
96
c6929e63b0b8 first import
dwinter
parents:
diff changeset
97
c6929e63b0b8 first import
dwinter
parents:
diff changeset
98 public String toString(){
c6929e63b0b8 first import
dwinter
parents:
diff changeset
99 String format="NAME: %s; archivePAth: %s; metaData: %s; fullText %s; url %s";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
100
c6929e63b0b8 first import
dwinter
parents:
diff changeset
101 return String.format(format, name,archivePath,metaData,fullText,echoUrl);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
102
c6929e63b0b8 first import
dwinter
parents:
diff changeset
103 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
104
c6929e63b0b8 first import
dwinter
parents:
diff changeset
105
c6929e63b0b8 first import
dwinter
parents:
diff changeset
106 /**
c6929e63b0b8 first import
dwinter
parents:
diff changeset
107 * Baue Metadatalink um, dass er auf das Servlet zeigt.
c6929e63b0b8 first import
dwinter
parents:
diff changeset
108 * @param ml
c6929e63b0b8 first import
dwinter
parents:
diff changeset
109 * @return
c6929e63b0b8 first import
dwinter
parents:
diff changeset
110 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
111 public String correctML(String ml) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
112 Pattern p = Pattern.compile("experimental/(.*)");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
113 Matcher m = p.matcher(ml);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
114 String pf;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
115 if (m.find())
c6929e63b0b8 first import
dwinter
parents:
diff changeset
116 pf = "experimental/" + m.group(1);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
117 else {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
118 p = Pattern.compile("permanent/(.*)");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
119 m = p.matcher(ml);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
120 if (m.find())
c6929e63b0b8 first import
dwinter
parents:
diff changeset
121 pf = "permanent/" + m.group(1);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
122 else
c6929e63b0b8 first import
dwinter
parents:
diff changeset
123 return ml;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
124 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
125 return textServletUrl + pf;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
126 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
127
c6929e63b0b8 first import
dwinter
parents:
diff changeset
128 static public String correct(String ml){
c6929e63b0b8 first import
dwinter
parents:
diff changeset
129 Pattern p = Pattern.compile("experimental/(.*)");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
130 Matcher m = p.matcher(ml);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
131 String pf;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
132 if (m.find())
c6929e63b0b8 first import
dwinter
parents:
diff changeset
133 pf = "experimental/" + m.group(1);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
134 else {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
135 p = Pattern.compile("permanent/(.*)");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
136 m = p.matcher(ml);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
137 if (m.find())
c6929e63b0b8 first import
dwinter
parents:
diff changeset
138 pf = "permanent/" + m.group(1);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
139 else
c6929e63b0b8 first import
dwinter
parents:
diff changeset
140 return ml;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
141 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
142 return pf;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
143 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
144
c6929e63b0b8 first import
dwinter
parents:
diff changeset
145
c6929e63b0b8 first import
dwinter
parents:
diff changeset
146 public String getImageFolderPath() {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
147 DCTransformer trans = new DCTransformer(metaData);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
148 String path = trans.getImagePathFromIndexMeta();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
149 if (path==null || path.equals("")){
c6929e63b0b8 first import
dwinter
parents:
diff changeset
150 path=archivePath+"/pageimg";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
151 } else {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
152 path=archivePath+"/"+path;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
153 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
154
c6929e63b0b8 first import
dwinter
parents:
diff changeset
155 String testPath=correct(path); // get rid of everything before eperimental or permanent
c6929e63b0b8 first import
dwinter
parents:
diff changeset
156 if(testPath(testPath))
c6929e63b0b8 first import
dwinter
parents:
diff changeset
157 return path;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
158
c6929e63b0b8 first import
dwinter
parents:
diff changeset
159 return null;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
160 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
161
c6929e63b0b8 first import
dwinter
parents:
diff changeset
162
c6929e63b0b8 first import
dwinter
parents:
diff changeset
163 private boolean testPath(String path) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
164 HttpClient client = new DefaultHttpClient();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
165 HttpGet get;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
166 try {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
167 get = new HttpGet(dirInfoUrl+path);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
168 } catch (RuntimeException e){
c6929e63b0b8 first import
dwinter
parents:
diff changeset
169 e.printStackTrace();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
170 return false;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
171 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
172
c6929e63b0b8 first import
dwinter
parents:
diff changeset
173 try {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
174 HttpResponse response = client.execute(get);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
175 String body = EScidocBasicHandler.convertStreamToString(response.getEntity().getContent());;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
176
c6929e63b0b8 first import
dwinter
parents:
diff changeset
177 Pattern p = Pattern.compile("<dir>(.*)</dir>",Pattern.DOTALL);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
178 Matcher m = p.matcher(body);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
179 if (m.find()){ // dir body leer
c6929e63b0b8 first import
dwinter
parents:
diff changeset
180 if (m.group(1).equals(""))
c6929e63b0b8 first import
dwinter
parents:
diff changeset
181 return false;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
182 else
c6929e63b0b8 first import
dwinter
parents:
diff changeset
183 return true;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
184 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
185
c6929e63b0b8 first import
dwinter
parents:
diff changeset
186
c6929e63b0b8 first import
dwinter
parents:
diff changeset
187 } catch (IOException e) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
188 // TODO Auto-generated catch block
c6929e63b0b8 first import
dwinter
parents:
diff changeset
189 e.printStackTrace();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
190 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
191 return false;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
192 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
193 }