annotate src/de/mpiwg/itgroup/eSciDoc/echoObjects/ECHORessource.java @ 8:a844f6948dd8

?nderungen im Walker tools f?r pubman
author dwinter
date Mon, 14 May 2012 09:58:45 +0200
parents 58b52df9763c
children b6cf6462d709
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
8
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
3 import java.io.File;
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
4 import java.io.FileOutputStream;
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
5 import java.io.IOException;
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
6 import java.io.InputStream;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
7 import java.net.MalformedURLException;
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
8 import java.net.URI;
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
9 import java.net.URL;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
10 import java.security.MessageDigest;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
11 import java.security.NoSuchAlgorithmException;
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
12 import java.util.Properties;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
13 import java.util.regex.Matcher;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
14 import java.util.regex.Pattern;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
15
c6929e63b0b8 first import
dwinter
parents:
diff changeset
16
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
17 import org.apache.commons.codec.binary.Hex;
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
18 import org.apache.http.Header;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
19 import org.apache.http.HttpException;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
20 import org.apache.http.HttpHost;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
21 import org.apache.http.HttpResponse;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
22 import org.apache.http.client.ClientProtocolException;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
23 import org.apache.http.client.HttpClient;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
24 import org.apache.http.client.methods.HttpGet;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
25 import org.apache.http.client.methods.HttpUriRequest;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
26 import org.apache.http.impl.client.DefaultHttpClient;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
27 import org.apache.http.protocol.BasicHttpContext;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
28 import org.apache.http.protocol.ExecutionContext;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
29 import org.apache.http.protocol.HttpContext;
8
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
30 import org.apache.log4j.Level;
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
31 import org.apache.log4j.Logger;
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
32 import org.jdom.Attribute;
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
33 import org.jdom.Document;
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
34 import org.jdom.Element;
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
35 import org.jdom.JDOMException;
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
36 import org.jdom.input.SAXBuilder;
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
37 import org.jdom.output.XMLOutputter;
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
38 import org.jdom.xpath.XPath;
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
39
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
40
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
41 import com.sun.org.apache.xalan.internal.xsltc.dom.DOMWSFilter;
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
42 import com.sun.org.apache.xerces.internal.parsers.SAXParser;
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
43
c6929e63b0b8 first import
dwinter
parents:
diff changeset
44 import de.mpiwg.itgroup.eSciDoc.Tools.EScidocBasicHandler;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
45 import de.mpiwg.itgroup.eSciDoc.Tools.EScidocTools;
8
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
46 import de.mpiwg.itgroup.eSciDoc.utils.eSciDocXmlObject;
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
47 import de.mpiwg.itgroup.metadataManager.pid.DCTransformer;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
48
c6929e63b0b8 first import
dwinter
parents:
diff changeset
49 public class ECHORessource extends ECHOObject{
c6929e63b0b8 first import
dwinter
parents:
diff changeset
50
c6929e63b0b8 first import
dwinter
parents:
diff changeset
51
c6929e63b0b8 first import
dwinter
parents:
diff changeset
52 public String archivePath;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
53 public String metaData ="";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
54 public String fullText ="";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
55 private String textServletUrl;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
56 private String dirInfoUrl;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
57 public String link;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
58
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
59 public String indexMetaMD5stored;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
60
0
c6929e63b0b8 first import
dwinter
parents:
diff changeset
61
c6929e63b0b8 first import
dwinter
parents:
diff changeset
62 public ECHORessource() throws IOException{
c6929e63b0b8 first import
dwinter
parents:
diff changeset
63 super();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
64 CMM ="/cmm/content-model/escidoc:11003";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
65 Properties echoProperties = new Properties();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
66 echoProperties.load(getClass().getResourceAsStream("/de/mpiwg/itgroup/eSciDoc/config/echo.properties"));
c6929e63b0b8 first import
dwinter
parents:
diff changeset
67
c6929e63b0b8 first import
dwinter
parents:
diff changeset
68 textServletUrl = (String) echoProperties.get("textServletUrl");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
69 dirInfoUrl = (String) echoProperties.get("dirInfoUrl");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
70
c6929e63b0b8 first import
dwinter
parents:
diff changeset
71 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
72
c6929e63b0b8 first import
dwinter
parents:
diff changeset
73
c6929e63b0b8 first import
dwinter
parents:
diff changeset
74 public ECHORessource(String name, String archivePath, String echoUrl) throws IOException {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
75 this();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
76 CMM ="/cmm/content-model/escidoc:11003";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
77 this.name = name;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
78 this.archivePath = archivePath;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
79 this.echoUrl = echoUrl;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
80 this.link = getLinkFromUrl(echoUrl);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
81
c6929e63b0b8 first import
dwinter
parents:
diff changeset
82
c6929e63b0b8 first import
dwinter
parents:
diff changeset
83 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
84
c6929e63b0b8 first import
dwinter
parents:
diff changeset
85 /** Holt die URL auf die das ECHO Objekt redirected
c6929e63b0b8 first import
dwinter
parents:
diff changeset
86 * @param echoUrl
c6929e63b0b8 first import
dwinter
parents:
diff changeset
87 * @return
c6929e63b0b8 first import
dwinter
parents:
diff changeset
88 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
89 private String getLinkFromUrl(String echoUrl) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
90 if (echoUrl==null)
c6929e63b0b8 first import
dwinter
parents:
diff changeset
91 return null;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
92 HttpContext localContext = new BasicHttpContext();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
93 HttpClient hc = new DefaultHttpClient();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
94 HttpGet get = new HttpGet(echoUrl);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
95 HttpResponse response;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
96 HttpUriRequest req;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
97 HttpHost target;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
98
c6929e63b0b8 first import
dwinter
parents:
diff changeset
99 try {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
100 response = hc.execute(get,localContext);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
101 req = (HttpUriRequest) localContext.getAttribute(
c6929e63b0b8 first import
dwinter
parents:
diff changeset
102 ExecutionContext.HTTP_REQUEST);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
103 target = (HttpHost) localContext.getAttribute(
c6929e63b0b8 first import
dwinter
parents:
diff changeset
104 ExecutionContext.HTTP_TARGET_HOST);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
105
c6929e63b0b8 first import
dwinter
parents:
diff changeset
106
c6929e63b0b8 first import
dwinter
parents:
diff changeset
107 } catch (ClientProtocolException e) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
108 // TODO Auto-generated catch block
c6929e63b0b8 first import
dwinter
parents:
diff changeset
109 e.printStackTrace();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
110 return "";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
111 } catch (IOException e) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
112 // TODO Auto-generated catch block
c6929e63b0b8 first import
dwinter
parents:
diff changeset
113 e.printStackTrace();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
114 return "";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
115 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
116 URI ret = req.getURI();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
117
c6929e63b0b8 first import
dwinter
parents:
diff changeset
118 return target.toString()+ret.toString();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
119 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
120
c6929e63b0b8 first import
dwinter
parents:
diff changeset
121
c6929e63b0b8 first import
dwinter
parents:
diff changeset
122 public String toString(){
c6929e63b0b8 first import
dwinter
parents:
diff changeset
123 String format="NAME: %s; archivePAth: %s; metaData: %s; fullText %s; url %s";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
124
c6929e63b0b8 first import
dwinter
parents:
diff changeset
125 return String.format(format, name,archivePath,metaData,fullText,echoUrl);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
126
c6929e63b0b8 first import
dwinter
parents:
diff changeset
127 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
128
c6929e63b0b8 first import
dwinter
parents:
diff changeset
129
c6929e63b0b8 first import
dwinter
parents:
diff changeset
130 /**
c6929e63b0b8 first import
dwinter
parents:
diff changeset
131 * Baue Metadatalink um, dass er auf das Servlet zeigt.
c6929e63b0b8 first import
dwinter
parents:
diff changeset
132 * @param ml
c6929e63b0b8 first import
dwinter
parents:
diff changeset
133 * @return
c6929e63b0b8 first import
dwinter
parents:
diff changeset
134 */
c6929e63b0b8 first import
dwinter
parents:
diff changeset
135 public String correctML(String ml) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
136 Pattern p = Pattern.compile("experimental/(.*)");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
137 Matcher m = p.matcher(ml);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
138 String pf;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
139 if (m.find())
c6929e63b0b8 first import
dwinter
parents:
diff changeset
140 pf = "experimental/" + m.group(1);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
141 else {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
142 p = Pattern.compile("permanent/(.*)");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
143 m = p.matcher(ml);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
144 if (m.find())
c6929e63b0b8 first import
dwinter
parents:
diff changeset
145 pf = "permanent/" + m.group(1);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
146 else
c6929e63b0b8 first import
dwinter
parents:
diff changeset
147 return ml;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
148 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
149 return textServletUrl + pf;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
150 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
151
c6929e63b0b8 first import
dwinter
parents:
diff changeset
152 static public String correct(String ml){
c6929e63b0b8 first import
dwinter
parents:
diff changeset
153 Pattern p = Pattern.compile("experimental/(.*)");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
154 Matcher m = p.matcher(ml);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
155 String pf;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
156 if (m.find())
c6929e63b0b8 first import
dwinter
parents:
diff changeset
157 pf = "experimental/" + m.group(1);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
158 else {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
159 p = Pattern.compile("permanent/(.*)");
c6929e63b0b8 first import
dwinter
parents:
diff changeset
160 m = p.matcher(ml);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
161 if (m.find())
c6929e63b0b8 first import
dwinter
parents:
diff changeset
162 pf = "permanent/" + m.group(1);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
163 else
c6929e63b0b8 first import
dwinter
parents:
diff changeset
164 return ml;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
165 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
166 return pf;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
167 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
168
c6929e63b0b8 first import
dwinter
parents:
diff changeset
169
c6929e63b0b8 first import
dwinter
parents:
diff changeset
170 public String getImageFolderPath() {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
171 DCTransformer trans = new DCTransformer(metaData);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
172 String path = trans.getImagePathFromIndexMeta();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
173 if (path==null || path.equals("")){
c6929e63b0b8 first import
dwinter
parents:
diff changeset
174 path=archivePath+"/pageimg";
c6929e63b0b8 first import
dwinter
parents:
diff changeset
175 } else {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
176 path=archivePath+"/"+path;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
177 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
178
c6929e63b0b8 first import
dwinter
parents:
diff changeset
179 String testPath=correct(path); // get rid of everything before eperimental or permanent
c6929e63b0b8 first import
dwinter
parents:
diff changeset
180 if(testPath(testPath))
c6929e63b0b8 first import
dwinter
parents:
diff changeset
181 return path;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
182
c6929e63b0b8 first import
dwinter
parents:
diff changeset
183 return null;
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 private boolean testPath(String path) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
188 HttpClient client = new DefaultHttpClient();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
189 HttpGet get;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
190 try {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
191 get = new HttpGet(dirInfoUrl+path);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
192 } catch (RuntimeException e){
c6929e63b0b8 first import
dwinter
parents:
diff changeset
193 e.printStackTrace();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
194 return false;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
195 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
196
c6929e63b0b8 first import
dwinter
parents:
diff changeset
197 try {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
198 HttpResponse response = client.execute(get);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
199 String body = EScidocBasicHandler.convertStreamToString(response.getEntity().getContent());;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
200
c6929e63b0b8 first import
dwinter
parents:
diff changeset
201 Pattern p = Pattern.compile("<dir>(.*)</dir>",Pattern.DOTALL);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
202 Matcher m = p.matcher(body);
c6929e63b0b8 first import
dwinter
parents:
diff changeset
203 if (m.find()){ // dir body leer
c6929e63b0b8 first import
dwinter
parents:
diff changeset
204 if (m.group(1).equals(""))
c6929e63b0b8 first import
dwinter
parents:
diff changeset
205 return false;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
206 else
c6929e63b0b8 first import
dwinter
parents:
diff changeset
207 return true;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
208 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
209
c6929e63b0b8 first import
dwinter
parents:
diff changeset
210
c6929e63b0b8 first import
dwinter
parents:
diff changeset
211 } catch (IOException e) {
c6929e63b0b8 first import
dwinter
parents:
diff changeset
212 // TODO Auto-generated catch block
c6929e63b0b8 first import
dwinter
parents:
diff changeset
213 e.printStackTrace();
c6929e63b0b8 first import
dwinter
parents:
diff changeset
214 }
c6929e63b0b8 first import
dwinter
parents:
diff changeset
215 return false;
c6929e63b0b8 first import
dwinter
parents:
diff changeset
216 }
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
217
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
218
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
219 public String getIndexMetaMD5onServer() {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
220 String digest="";
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
221 try {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
222 URL url = new URL(metaData);
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
223 InputStream is = url.openStream();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
224 MessageDigest md = MessageDigest.getInstance("MD5");
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
225 digest = getDigest(is, md, 2048);
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
226 } catch (MalformedURLException e) {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
227 // TODO Auto-generated catch block
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
228 e.printStackTrace();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
229 } catch (NoSuchAlgorithmException e) {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
230 // TODO Auto-generated catch block
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
231 e.printStackTrace();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
232 } catch (IOException e) {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
233 // TODO Auto-generated catch block
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
234 e.printStackTrace();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
235 }
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
236 return digest;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
237 }
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
238
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
239 public static String getDigest(InputStream is, MessageDigest md, int byteArraySize)
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
240 throws NoSuchAlgorithmException, IOException {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
241
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
242 md.reset();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
243 byte[] bytes = new byte[byteArraySize];
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
244 int numBytes;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
245 while ((numBytes = is.read(bytes)) != -1) {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
246 md.update(bytes, 0, numBytes);
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
247 }
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
248 byte[] digest = md.digest();
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
249 String result = new String(Hex.encodeHex(digest));
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
250 return result;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
251 }
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
252
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
253
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
254 public String getIndexMetaMD5stored() {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
255 return indexMetaMD5stored;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
256 }
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
257
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
258 public String getEScidocId() {
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
259 return eScidocId;
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
260 }
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
261
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
262
8
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
263 // schreibe die escidoc:id in die index.meta
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
264
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
265 public void writeEsciDocIDToIndexMeta(eSciDocXmlObject eSciDocXmlObject) {
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
266 String txt;
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
267 try {
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
268 txt = eSciDocXmlObject.getESciDocObjId();
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
269 writeEsciDocIDToIndexMeta(txt);
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
270 } catch (JDOMException e) {
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
271 // TODO Auto-generated catch block
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
272 e.printStackTrace();
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
273 }
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
274
3
58b52df9763c added update functionality if index.meta has changed
dwinter
parents: 0
diff changeset
275 }
8
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
276 public void writeEsciDocIDToIndexMeta(String objid) {
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
277 String driType="escidoc-test";
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
278 String txt;
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
279 Element result;
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
280 try {
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
281 txt = objid;
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
282
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
283 URL url = new URL(metaData);
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
284 InputStream is = url.openStream();
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
285 Document doc = new SAXBuilder().build(is);
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
286 XPath xp = XPath.newInstance("//meta/dri[@type=\""+driType+"\"]");
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
287 result = (Element)xp.selectSingleNode(doc);
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
288
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
289 if (result!=null){
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
290 result.setText(txt);
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
291 } else {
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
292 XPath xpMeta = XPath.newInstance("//meta");
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
293 Element metaTag = (Element)xpMeta.selectSingleNode(doc);
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
294
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
295 if (metaTag==null){
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
296 return;
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
297 } else {
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
298
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
299 Element dri = new Element("dri");
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
300 dri.setAttribute("type",driType);
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
301 dri.setText(txt);
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
302 metaTag.addContent(dri);
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
303 }
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
304 }
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
305
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
306 XMLOutputter xo = new XMLOutputter();
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
307
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
308
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
309
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
310 //String outpath ="/tmp/out/"+archivePath;
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
311 String outpath =archivePath;
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
312 //File parent = new File(outpath);
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
313 //parent.mkdirs();
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
314
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
315 File oldFile = new File(outpath+"/index.meta");
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
316 boolean f = oldFile.renameTo(new File(outpath+"/index.meta.old"));
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
317 if (!f){
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
318 Logger lg = Logger.getLogger("transformerLogger");
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
319 lg.error("cannot: write "+outpath+"/index.meta.old");
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
320 lg.error("cannot: but will proceed to write new index.meta");
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
321
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
322 }
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
323 FileOutputStream out = new FileOutputStream(outpath+"/index.meta");
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
324 xo.output(doc, out);
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
325
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
326 Logger lg = Logger.getLogger("transformerLogger");
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
327 lg.info("changed:"+outpath+" -- added escidoc: "+txt);
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
328 out.close();
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
329
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
330 } catch (MalformedURLException e) {
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
331 // TODO Auto-generated catch block
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
332 e.printStackTrace();
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
333 } catch (JDOMException e) {
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
334 // TODO Auto-generated catch block
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
335 e.printStackTrace();
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
336 } catch (IOException e) {
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
337 // TODO Auto-generated catch block
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
338 e.printStackTrace();
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
339 }
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
340
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
341
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
342 }
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
343
a844f6948dd8 ?nderungen im Walker
dwinter
parents: 3
diff changeset
344 }