Mercurial > hg > eSciDocImport
comparison src/de/mpiwg/itgroup/eSciDoc/Tools/ingestLib.java @ 0:c6929e63b0b8
first import
author | dwinter |
---|---|
date | Wed, 24 Nov 2010 16:52:07 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:c6929e63b0b8 |
---|---|
1 package de.mpiwg.itgroup.eSciDoc.Tools; | |
2 import java.io.IOException; | |
3 import java.io.StringReader; | |
4 import java.net.MalformedURLException; | |
5 import java.net.URL; | |
6 import java.rmi.RemoteException; | |
7 import java.text.SimpleDateFormat; | |
8 import java.util.Date; | |
9 import java.util.regex.Matcher; | |
10 import java.util.regex.Pattern; | |
11 | |
12 import javax.xml.parsers.DocumentBuilder; | |
13 import javax.xml.parsers.DocumentBuilderFactory; | |
14 import javax.xml.rpc.ServiceException; | |
15 | |
16 import org.apache.axis.types.NonNegativeInteger; | |
17 import org.apache.xmlrpc.XmlRpcException; | |
18 import org.apache.xmlrpc.client.XmlRpcClient; | |
19 import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; | |
20 import org.w3c.dom.Document; | |
21 import org.xml.sax.InputSource; | |
22 | |
23 | |
24 public class ingestLib extends IngestECHO{ | |
25 | |
26 /** | |
27 * @param args | |
28 * @throws Exception | |
29 * @throws Exception | |
30 */ | |
31 | |
32 private static String ZOPEPROVIDER = "http://127.0.0.1:18080"; | |
33 private static String createFoxml(String litid) throws Exception{ | |
34 | |
35 String pid = | |
36 eSciDocXmlObject obj = new eSciDocXmlObject("mpiwg:"+pid,"vlpRessourceTemplate.xml"); | |
37 //obj.setTitle("lit11111 - title"); | |
38 | |
39 | |
40 //get DC Metadata from the Ressource | |
41 XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); | |
42 XmlRpcClient client = new XmlRpcClient(); | |
43 Object[] params = new Object[]{}; | |
44 config.setServerURL(new URL(ZOPEPROVIDER+"/metadataMain")); | |
45 client.setConfig(config); | |
46 params = new Object[]{"http://vlp.mpiwg-berlin.mpg.de/library/data/"+litid+"/index_meta"}; | |
47 String result = (String) client.execute("getDCFormatted", params); | |
48 System.out.println("dC:"+result); | |
49 | |
50 | |
51 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); | |
52 factory.setNamespaceAware(true); | |
53 DocumentBuilder db =factory.newDocumentBuilder(); | |
54 InputSource resultStream = new InputSource(new StringReader(result)); | |
55 Document dc = db.parse(resultStream); | |
56 obj.insertDC(dc); | |
57 | |
58 obj.setReferenceFolder("/mpiwg/online/permanent/vlp/"+litid); | |
59 //obj.generateXMLIndex(new File("/mpiwg/online/permanent/vlp/"+litid)); | |
60 //long date = new Date().getTime(); | |
61 SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.S'Z'"); | |
62 String dateStr = dateformat.format(new Date()); | |
63 obj.addWebUrl("http://vlp.mpiwg-berlin.mpg.de/references?id="+litid, litid, dateStr); | |
64 obj.addIndexMetaUrl("http://vlp.mpiwg-berlin.mpg.de/library/data/"+litid+"/index_meta", litid, dateStr); | |
65 obj.setRelationship("info:fedora/vlp:col1"); | |
66 obj.setVLPId(litid); | |
67 return obj.printXML(); | |
68 | |
69 } | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 private static void ingestAllVLPObjects() throws MalformedURLException, | |
77 XmlRpcException { | |
78 XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); | |
79 XmlRpcClient client = new XmlRpcClient(); | |
80 config.setServerURL(new URL("http://127.0.0.1:18080/vlp/vlp_coll/library/data")); | |
81 client.setConfig(config); | |
82 Object[] params = new Object[]{}; | |
83 Object[] res = (Object[]) client.execute("getAllRessources", params); | |
84 | |
85 String string = ""; | |
86 for (Object re: res){ | |
87 Object[] rA = (Object [])re; | |
88 String[] splitted = ((String) rA[0]).split("/"); | |
89 String id = splitted[splitted.length-1]; | |
90 | |
91 try { | |
92 String xml = createFoxml(id); | |
93 | |
94 String ret = ingest(xml); | |
95 | |
96 config.setServerURL(new URL((String)rA[1])); | |
97 client.setConfig(config); | |
98 params = new Object[]{ret}; | |
99 client.execute("setPID", params); | |
100 | |
101 System.out.println(ret); | |
102 | |
103 | |
104 } catch (Exception e) { | |
105 System.err.println("cannot get:"+(String) rA[0]); | |
106 | |
107 } | |
108 } | |
109 } | |
110 | |
111 private static void modifyDCSet(String litid, String PID) throws XmlRpcException, ServiceException, IOException | |
112 { | |
113 XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); | |
114 XmlRpcClient client = new XmlRpcClient(); | |
115 config.setServerURL(new URL(ZOPEPROVIDER+"/metadataMain")); | |
116 | |
117 | |
118 client.setConfig(config); | |
119 Object[] params = new Object[]{"http://vlp.mpiwg-berlin.mpg.de/library/data/"+litid+"/index_meta"}; | |
120 String result = (String) client.execute("getDCFormatted", params); | |
121 //System.out.println("dC:"+result); | |
122 | |
123 FedoraAPIM APIM; | |
124 FedoraAPIA APIA; | |
125 | |
126 System.setProperty("javax.net.ssl.trustStore", "/usr/local/fedora/tomcat/conf/keystore"); | |
127 | |
128 | |
129 String baseURL = "https://127.0.0.1:8443/fedora"; | |
130 FedoraClient fc = new FedoraClient(baseURL, "fedoraAdmin", "XXXX"); | |
131 APIA=fc.getAPIA(); | |
132 APIM=fc.getAPIM(); | |
133 String content = "<oai_dc:dc xmlns:oai_dc='http://www.openarchives.org/OAI/2.0/oai_dc/' xmlns:dc='http://purl.org/dc/elements/1.1/'><dc:description>VLP Literature Object</dc:description><dc:publisher>MPIWG</dc:publisher>"; | |
134 content += result; | |
135 content += "</oai_dc:dc>"; | |
136 //content=""; | |
137 | |
138 //System.out.println(content); | |
139 | |
140 | |
141 String chksum = MD5.asHex(new MD5(content).Final()); | |
142 | |
143 //System.out.println(chksum); | |
144 String[] em= new String[]{}; | |
145 String pid = APIM.modifyDatastreamByValue(PID, "DC",em , "Dublin Core Record for this object", "text/xml", "",content.getBytes("utf-8"), null, null,"metadata changed",false); | |
146 System.out.println(pid); | |
147 | |
148 } | |
149 | |
150 | |
151 public static void main(String[] args) throws Exception { | |
152 | |
153 //ingestAllVLPObjects(); | |
154 changeDCMetadata(); | |
155 //modifyDCSet("lit14191","mpiwg:PR9MPM4E"); | |
156 | |
157 } | |
158 | |
159 private static void changeDCMetadata() throws MalformedURLException, | |
160 ServiceException, IOException, RemoteException, XmlRpcException { | |
161 System.setProperty("javax.net.ssl.trustStore", "/usr/local/fedora/tomcat/conf/keystore"); | |
162 | |
163 String baseURL = "https://127.0.0.1:8443/fedora"; | |
164 FedoraClient fc = new FedoraClient(baseURL, "fedoraAdmin", "XXX"); | |
165 FedoraAPIA APIA; | |
166 APIA=fc.getAPIA(); | |
167 Condition[] condition = | |
168 {new Condition("pid", ComparisonOperator.has, "mpiwg:*")}; | |
169 FieldSearchQuery query = new FieldSearchQuery(condition, null); | |
170 | |
171 NonNegativeInteger maxResults = new NonNegativeInteger("" + 200); | |
172 | |
173 FieldSearchResult res = APIA.findObjects(new String[]{"pid"}, maxResults, query); | |
174 processResults(APIA, res); | |
175 while (true) | |
176 { | |
177 ListSession ses = res.getListSession(); | |
178 if (ses == null) | |
179 break; | |
180 String tok = ses.getToken(); | |
181 if (tok == null) | |
182 break; | |
183 | |
184 res = APIA.resumeFindObjects(res.getListSession().getToken()); | |
185 if (res.getResultList().length>0) | |
186 processResults(APIA, res); | |
187 else | |
188 break; | |
189 } | |
190 } | |
191 | |
192 private static void processResults(FedoraAPIA APIA, FieldSearchResult res) | |
193 throws XmlRpcException, ServiceException, IOException { | |
194 ObjectFields[] fields = res.getResultList(); | |
195 | |
196 System.out.println("found:"+fields.length); | |
197 for (ObjectFields field: fields){ | |
198 String pid = field.getPid(); | |
199 MIMETypedStream ds = APIA.getDatastreamDissemination(pid, "vlp-admin", null); | |
200 byte[] x = ds.getStream(); | |
201 String s = new String(x); | |
202 //System.err.println(s); | |
203 | |
204 Pattern p = Pattern.compile("<vlp:identifier>(lit.*)</vlp:identifier>"); | |
205 Matcher m = p.matcher(s); | |
206 m.find(); | |
207 String lit = m.group(1); | |
208 System.out.println(lit); | |
209 modifyDCSet(lit, pid); | |
210 } | |
211 } | |
212 } |