|
1 | 1 | package edu.harvard.iq.dataverse.harvest.client;
|
2 | 2 |
|
3 |
| -import edu.harvard.iq.dataverse.DatasetDao; |
4 |
| -import edu.harvard.iq.dataverse.EjbDataverseEngine; |
5 | 3 | import edu.harvard.iq.dataverse.api.imports.HarvestImporterType;
|
6 | 4 | import edu.harvard.iq.dataverse.api.imports.HarvestImporterTypeResolver;
|
7 | 5 | import edu.harvard.iq.dataverse.api.imports.ImportException;
|
8 | 6 | import edu.harvard.iq.dataverse.api.imports.ImportServiceBean;
|
9 | 7 | import edu.harvard.iq.dataverse.engine.command.DataverseRequest;
|
10 |
| -import edu.harvard.iq.dataverse.engine.command.exception.CommandException; |
11 |
| -import edu.harvard.iq.dataverse.engine.command.exception.IllegalCommandException; |
12 |
| -import edu.harvard.iq.dataverse.engine.command.exception.PermissionException; |
13 |
| -import edu.harvard.iq.dataverse.engine.command.impl.DeleteDatasetCommand; |
14 | 8 | import edu.harvard.iq.dataverse.harvest.client.oai.OaiHandler;
|
15 | 9 | import edu.harvard.iq.dataverse.harvest.client.oai.OaiHandlerException;
|
16 |
| -import edu.harvard.iq.dataverse.persistence.datafile.DataFile; |
17 |
| -import edu.harvard.iq.dataverse.persistence.dataset.Dataset; |
18 | 10 | import edu.harvard.iq.dataverse.persistence.harvest.HarvestType;
|
19 | 11 | import edu.harvard.iq.dataverse.persistence.harvest.HarvestingClient;
|
20 |
| -import edu.harvard.iq.dataverse.search.index.IndexServiceBean; |
21 | 12 | import org.apache.commons.io.FileUtils;
|
22 | 13 | import org.dspace.xoai.model.oaipmh.Header;
|
23 | 14 | import org.dspace.xoai.serviceprovider.exceptions.HarvestException;
|
@@ -46,21 +37,12 @@ public class OAIHarvester implements Harvester<HarvesterParams.EmptyHarvesterPar
|
46 | 37 | @PersistenceContext(unitName = "VDCNet-ejbPU")
|
47 | 38 | private EntityManager em;
|
48 | 39 |
|
49 |
| - @EJB |
50 |
| - DatasetDao datasetDao; |
51 |
| - |
52 | 40 | @EJB
|
53 | 41 | ImportServiceBean importService;
|
54 | 42 |
|
55 |
| - @EJB |
56 |
| - IndexServiceBean indexService; |
57 |
| - |
58 | 43 | @EJB
|
59 | 44 | private HarvestImporterTypeResolver harvestImporterTypeResolver;
|
60 | 45 |
|
61 |
| - @EJB |
62 |
| - EjbDataverseEngine engineService; |
63 |
| - |
64 | 46 | // -------------------- LOGIC --------------------
|
65 | 47 |
|
66 | 48 | @Override
|
@@ -136,16 +118,9 @@ private void processRecord(HarvesterResult result, DataverseRequest dataverseReq
|
136 | 118 | if (record.isDeleted()) {
|
137 | 119 | hdLogger.info("Deleting harvesting dataset for " + identifier + ", per the OAI server's instructions.");
|
138 | 120 |
|
139 |
| - Dataset dataset = datasetDao.getDatasetByHarvestInfo(oaiHandler.getHarvestingClient().getDataverse(), identifier); |
140 |
| - if (dataset != null) { |
141 |
| - result.incrementDeleted(); |
142 |
| - hdLogger.info("Deleting dataset " + dataset.getGlobalIdString()); |
143 |
| - deleteHarvestedDataset(dataset, dataverseRequest, hdLogger); |
144 |
| - // TODO: |
145 |
| - // check the status of that Delete - see if it actually succeeded |
146 |
| - } else { |
147 |
| - hdLogger.info("No dataset found for " + identifier + ", skipping delete. "); |
148 |
| - } |
| 121 | + importService.doDeleteHarvestedDataset(dataverseRequest, oaiHandler.getHarvestingClient(), identifier); |
| 122 | + result.incrementDeleted(); |
| 123 | + |
149 | 124 | } else {
|
150 | 125 | hdLogger.info("Successfully retrieved GetRecord response.");
|
151 | 126 | HarvestImporterType importType = harvestImporterTypeResolver.resolveImporterType(oaiHandler.getMetadataFormat())
|
@@ -175,35 +150,6 @@ private void processRecord(HarvesterResult result, DataverseRequest dataverseReq
|
175 | 150 | }
|
176 | 151 | }
|
177 | 152 |
|
178 |
| - private void deleteHarvestedDataset(Dataset dataset, DataverseRequest request, Logger hdLogger) { |
179 |
| - // Purge all the SOLR documents associated with this client from the |
180 |
| - // index server: |
181 |
| - indexService.deleteHarvestedDocuments(dataset); |
182 |
| - |
183 |
| - try { |
184 |
| - // files from harvested datasets are removed unceremoniously, |
185 |
| - // directly in the database. no need to bother calling the |
186 |
| - // DeleteFileCommand on them. |
187 |
| - for (DataFile harvestedFile : dataset.getFiles()) { |
188 |
| - DataFile merged = em.merge(harvestedFile); |
189 |
| - em.remove(merged); |
190 |
| - harvestedFile = null; |
191 |
| - } |
192 |
| - dataset.setFiles(null); |
193 |
| - Dataset merged = em.merge(dataset); |
194 |
| - engineService.submit(new DeleteDatasetCommand(request, merged)); |
195 |
| - } catch (IllegalCommandException ex) { |
196 |
| - // TODO: log the result |
197 |
| - } catch (PermissionException ex) { |
198 |
| - // TODO: log the result |
199 |
| - } catch (CommandException ex) { |
200 |
| - // TODO: log the result |
201 |
| - } |
202 |
| - |
203 |
| - // TODO: log the success result |
204 |
| - } |
205 |
| - |
206 |
| - |
207 | 153 | private void logBeginOaiHarvest(Logger hdLogger, HarvestingClient harvestingClient) {
|
208 | 154 | hdLogger.log(Level.INFO, "BEGIN HARVEST, oaiUrl="
|
209 | 155 | + harvestingClient.getHarvestingUrl()
|
|
0 commit comments