diff --git a/src/PLUGIN-INF/metadata_DnxMoveFileOriginalPath.xml b/src/PLUGIN-INF/metadata_DnxMoveFileOriginalPath.xml index 5b215f6250760e4ab08d7d9d5241d954ce348138..8788ec7ae40bd98293bcf73be2a8cb5d035dec7c 100644 --- a/src/PLUGIN-INF/metadata_DnxMoveFileOriginalPath.xml +++ b/src/PLUGIN-INF/metadata_DnxMoveFileOriginalPath.xml @@ -7,7 +7,7 @@ </fr:x_form> </pl:initParameters> <pl:description>repairs broken file original paths</pl:description> - <pl:version>1.03</pl:version> + <pl:version>1.04</pl:version> <pl:materialType>DIGITAL</pl:materialType> <pl:module>Repository</pl:module> <pl:generalType>TASK</pl:generalType> diff --git a/src/org/slub/rosetta/plugins/repositoryTask/DnxMoveFileOriginalPath.java b/src/org/slub/rosetta/plugins/repositoryTask/DnxMoveFileOriginalPath.java index e6dd988db1157c4d1037e946444e6d600f196a7d..a4358ee9f86ce0db9012ca825fd458d5b42bfa2b 100644 --- a/src/org/slub/rosetta/plugins/repositoryTask/DnxMoveFileOriginalPath.java +++ b/src/org/slub/rosetta/plugins/repositoryTask/DnxMoveFileOriginalPath.java @@ -6,14 +6,14 @@ import com.exlibris.digitool.common.dnx.DnxDocumentHelper; import com.exlibris.digitool.exceptions.DigitoolException; import com.exlibris.digitool.repository.api.IEEditor; import com.exlibris.digitool.repository.api.RepositoryTaskPlugin; - +import java.time.LocalDate; import java.util.List; import java.util.Map; public class DnxMoveFileOriginalPath implements RepositoryTaskPlugin { - ExLogger log = ExLogger.getExLogger(DnxMoveFileOriginalPath.class); - + private ExLogger log = ExLogger.getExLogger(DnxMoveFileOriginalPath.class); + private boolean success = true; public DnxMoveFileOriginalPath() { super(); } @@ -22,19 +22,22 @@ public class DnxMoveFileOriginalPath implements RepositoryTaskPlugin { log.info("Executing DnxMoveFileOriginalPath for " + ieEditor.getIEPid()); init(initParams); // get all rep pids - List<String> repPids = null; + List<String> repPids; try { repPids = ieEditor.getReps(); } catch (DigitoolException e) { + success = false; e.printStackTrace(); taskResults.addResult(ieEditor.getIEPid(), null, false, "no RepPids found!"); return taskResults; } + // get all file pids for (String repPid: repPids) { - List<String> filePids = null; + List<String> filePids; try { filePids = ieEditor.getFilesForRep( repPid ); } catch (DigitoolException e) { + success = false; e.printStackTrace(); taskResults.addResult(ieEditor.getIEPid(), null, false, "no FilePids found for RepPid=" + repPid + " !"); return taskResults; @@ -44,13 +47,37 @@ public class DnxMoveFileOriginalPath implements RepositoryTaskPlugin { replaceFileOriginalPath(ieEditor, repPid, filePid); taskResults.addResult(ieEditor.getIEPid(), null, true, "filepid=" + filePid + " processed"); } catch (DigitoolException e) { + success = false; e.printStackTrace(); taskResults.addResult(ieEditor.getIEPid(), null, false, "unknown Digitool exception: " + e); return taskResults; } } } + // now add an event + try { + DnxDocumentHelper ieDnxH = ieEditor.getDnxHelperForIE(); + List<DnxDocumentHelper.Event> eventList = ieDnxH.getEvents(); + DnxDocumentHelper.Event event = ieDnxH.new Event(); + event.setEventIdentifierType("Rosetta-SupportCase"); + event.setEventIdentifierValue("00490927"); + event.setEventDateTime(LocalDate.now().toString()); + event.setEventType("external repair using DnxMoveFileOriginalPath plugin"); + if (success) { + event.setEventOutcome1("success"); + } else { + event.setEventOutcome1("fail"); + } + event.setEventOutcomeDetail1("IE-PID = '" + ieEditor.getIEPid() + "'"); + event.setEventDescription("fileOriginalPath needs to be updated to correct a mistake in the Submission Application where wrong fileOriginalPath metadata was read and inserted. The result of this mistake was that the fileOriginalPath now includes directories that are too high up in the directory hierarchy."); + event.setLinkingAgentIdentifierType1("HUMAN"); + event.setLinkingAgentIdentifierValue1("plugin programmed by Andreas Romeyke (SLUB Dresden), code available at https://github.com/SLUB-digitalpreservation/fileoriginalpath_plugin4rosetta"); + eventList.add( event ); + ieDnxH.setEvents( eventList ); + } catch (DigitoolException e) { + e.printStackTrace(); + } return taskResults; } @@ -76,7 +103,7 @@ public class DnxMoveFileOriginalPath implements RepositoryTaskPlugin { updated = true; } /* if something is updated */ - if (updated == true) { + if (updated) { // update it log.info("update needed for IE " + ieEditor.getIEPid() + " RepPid " + repPid + " FilePid " + filePid + " (old file_original_path='" + currentFileOriginalPath + "') to new file_original_path='" +