Mercurial > hg > eSciDocImport
comparison src/de/mpiwg/itgroup/eSciDoc/harvesting/ESciDocDataHarvester.java @ 0:c6929e63b0b8
first import
author | dwinter |
---|---|
date | Wed, 24 Nov 2010 16:52:07 +0100 |
parents | |
children | fab8e78184fa |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:c6929e63b0b8 |
---|---|
1 package de.mpiwg.itgroup.eSciDoc.harvesting; | |
2 | |
3 import java.io.File; | |
4 import java.io.FileWriter; | |
5 import java.io.IOException; | |
6 import java.net.MalformedURLException; | |
7 import java.net.URL; | |
8 import java.util.ArrayList; | |
9 | |
10 | |
11 import org.apache.http.HttpResponse; | |
12 import org.apache.log4j.BasicConfigurator; | |
13 import org.apache.log4j.Level; | |
14 import org.apache.log4j.Logger; | |
15 import org.apache.log4j.xml.DOMConfigurator; | |
16 import org.jdom.JDOMException; | |
17 | |
18 import de.mpiwg.itgroup.eSciDoc.Tools.EScidocBasicHandler; | |
19 import de.mpiwg.itgroup.eSciDoc.Tools.EScidocTools; | |
20 import de.mpiwg.itgroup.eSciDoc.echoObjects.ECHOObject; | |
21 import de.mpiwg.itgroup.eSciDoc.echoObjects.ECHORessource; | |
22 import de.mpiwg.itgroup.eSciDoc.importer.ECHOImporter; | |
23 import de.mpiwg.itgroup.eSciDoc.importer.Importer; | |
24 import de.mpiwg.itgroup.eSciDoc.transformer.ECHOTransformer; | |
25 import de.mpiwg.itgroup.eSciDoc.transformer.Transformer; | |
26 import de.mpiwg.itgroup.eSciDoc.utils.eSciDocXmlObject; | |
27 | |
28 public class ESciDocDataHarvester { | |
29 | |
30 protected Logger logger = Logger.getRootLogger(); | |
31 protected Importer importer; | |
32 protected EScidocBasicHandler connector; | |
33 protected Transformer transformer; | |
34 private EScidocTools tools; | |
35 private String echoContext; | |
36 private Logger addedFile = Logger.getLogger("addedFilesLogger"); | |
37 private Logger notAddedFile = Logger.getLogger("notAddedFilesLogger"); | |
38 | |
39 | |
40 public ESciDocDataHarvester(Importer importer, Transformer transformer, EScidocBasicHandler connector, String context) throws IOException{ | |
41 this.importer=importer; | |
42 this.transformer=transformer; | |
43 this.connector=connector; | |
44 this.tools=new EScidocTools(connector); | |
45 this.echoContext= context; | |
46 | |
47 | |
48 } | |
49 public Boolean readObjectsFromInstance(String type) throws Exception{ | |
50 ArrayList<String> addedObjects = new ArrayList<String>(); | |
51 ArrayList<String> notAddedObjects = new ArrayList<String>(); | |
52 for (ECHOObject obj: importer.getObjectList(type)){ | |
53 | |
54 | |
55 if (ECHORessource.class.isInstance(obj)){ | |
56 try { | |
57 if (connector.alreadyExists("/md-records/md-record/admin/archivePath",((ECHORessource)obj).archivePath,echoContext)){ | |
58 logger.debug("already exist:"+((ECHORessource)obj).archivePath); | |
59 continue; | |
60 } | |
61 } catch (Exception e) { | |
62 logger.debug("already exist error"); | |
63 e.printStackTrace(); | |
64 continue; | |
65 } | |
66 } | |
67 | |
68 obj.context=echoContext; | |
69 | |
70 String contid=connector.getIDfromPID(obj.pid,echoContext); | |
71 if (contid!=null){ | |
72 System.out.println("------- belongsTo:"+contid); | |
73 } else { | |
74 | |
75 eSciDocXmlObject escidocItem = transformer.transform(obj); | |
76 logger.info(escidocItem.printXML()); | |
77 // TODO write PID to back to echo-obj | |
78 Boolean result = connector.createItem(escidocItem); | |
79 if (result){ | |
80 addedObjects.add(escidocItem.getESciDocId()); | |
81 addedFile.debug(escidocItem.getESciDocId()+"\n"); | |
82 //addedFile.write(escidocItem.getESciDocId()+"\n"); | |
83 //addedFile.flush(); | |
84 | |
85 }else { | |
86 notAddedObjects.add(obj.echoUrl); | |
87 notAddedFile.debug(obj.echoUrl); | |
88 //notAddedFile.write(obj.echoUrl+"\n"); | |
89 //notAddedFile.flush(); | |
90 } | |
91 //if (result == ESciDocConnector.WRITE_RESULT_PID_EXISTS){ | |
92 // logger.info("PID already exists:"+obj); | |
93 //} else if (result == ESciDocConnector.WRITE_RESULT_OBJ_WITH_SAME_REFERENCE){ | |
94 // logger.info("Object with reference to the same digital object already exists:"+obj); | |
95 //} | |
96 | |
97 } | |
98 } | |
99 if(logger.getLevel()==Level.DEBUG){ | |
100 for (String addedObject:addedObjects){ | |
101 logger.debug(addedObject); | |
102 } | |
103 } | |
104 | |
105 // File outFile = new File("/tmp/import.out"); | |
106 // FileWriter fw = new FileWriter(outFile); | |
107 // for (String addedObject:addedObjects){ | |
108 // fw.write(addedObject+"\n"); | |
109 // } | |
110 // for (String addedObject:notAddedObjects){ | |
111 // fw.write(addedObject+"\n"); | |
112 // } | |
113 // fw.close(); | |
114 return true; | |
115 } | |
116 | |
117 public void releaseAndSubmitObjects(String command,String objectXPath) throws Exception{ | |
118 for (eSciDocXmlObject obj: connector.getObjectListFromFilterResult(command,objectXPath)){ | |
119 HttpResponse res = connector.submitAnObject(obj,"first release"); | |
120 logger.debug(res.getStatusLine()); | |
121 if (res.getStatusLine().getStatusCode()!=200){ | |
122 logger.debug("Can not submit:"+obj.getESciDocId()); | |
123 //res.getEntity().consumeContent(); // necessary to release the conneciton | |
124 | |
125 } | |
126 res.getEntity().consumeContent(); // necessary to release the conneciton | |
127 | |
128 if (!connector.upDateObject(obj)){ | |
129 logger.debug("Can not update:"+obj.getESciDocId()); | |
130 //continue; | |
131 | |
132 } | |
133 | |
134 | |
135 res = connector.releaseAnObject(obj, "first release"); | |
136 logger.debug(res.getStatusLine()); | |
137 if (res.getStatusLine().getStatusCode()!=200){ | |
138 logger.debug("Can not release:"+obj.getESciDocId()); | |
139 res.getEntity().consumeContent(); // necessary to release the conneciton | |
140 continue; | |
141 } | |
142 addedFile.debug("RELEASED:"+obj.getESciDocId()); | |
143 res.getEntity().consumeContent(); // necessary to release the conneciton | |
144 } | |
145 | |
146 } | |
147 public static void main(String[] args) throws Exception{ | |
148 | |
149 Logger rl = Logger.getRootLogger(); | |
150 DOMConfigurator.configure("log4uconf.xml"); | |
151 rl.setLevel(Level.DEBUG); | |
152 | |
153 | |
154 EScidocBasicHandler connector = new EScidocBasicHandler("192.168.56.2",8080,"dwinter","weikiki7"); | |
155 ECHOImporter newimporter = new ECHOImporter(new URL("file:///Users/dwinter/libcoll.rdf")); | |
156 ESciDocDataHarvester hv = new ESciDocDataHarvester(newimporter, | |
157 new ECHOTransformer(),connector,"/ir/context/escidoc:40001"); | |
158 | |
159 //hv.readObjectsFromInstance("ECHO_collection"); | |
160 //hv.readObjectsFromInstance("ECHO_resource"); | |
161 | |
162 hv.releaseAndSubmitObjects("/ir/context/escidoc:40001/resources/members","//escidocItem:item"); | |
163 | |
164 | |
165 // newimporter.organizeRessourcesInCollections(connector, "/ir/context/escidoc:1001"); | |
166 //hv.releaseAndSubmitObjects("/ir/containers","//container:container"); | |
167 } | |
168 } |