private Map<String, Integer> getGeneratedChecksumsCount(String depositId, IngestWorkflowState state) { File packageBaseDir = new File( state.getPackage().getSerialization().getExtractDir(), state.getPackage().getSerialization().getBaseDir().getPath()); File payloadDir = new File(packageBaseDir, "data"); java.util.Collection<DcsEvent> fixityCalculatedEvents = state.getEventManager().getEvents(depositId, Package.Events.FIXITY_CALCULATED); int generatedMd5ChecksumCount = 0; int generatedSha1ChecksumCount = 0; for (DcsEvent event : fixityCalculatedEvents) { if (event.getOutcome().contains(MD5_CHECKSUM_ALG)) { //add to md5 checksum count generatedMd5ChecksumCount ++; } else if (event.getOutcome().contains(SHA1_CHECKSUM_ALG)) { generatedSha1ChecksumCount ++; } } Map<String, Integer> result = new HashMap<String, Integer>(); result.put(MD5_CHECKSUM_ALG, generatedMd5ChecksumCount); result.put(SHA1_CHECKSUM_ALG, generatedSha1ChecksumCount); return result; }
private void addFailEvent(String depositId, IngestWorkflowState state, Throwable cause) { DcsEvent failureEvent = state.getEventManager().getEventByType(depositId, Package.Events.INGEST_FAIL); if (failureEvent == null) { if (cause == null) { cause = new Exception("Unknown cause."); } failureEvent = failureEvent(depositId, state, cause); state.getEventManager().addEvent(depositId, failureEvent); } if (cause == null) { log.error("Failed ingest (" + depositId + "): " + failureEvent.getOutcome() + "\n" + failureEvent.getDetail()); } else { log.error("Failed ingest (" + depositId + "): " + cause.getMessage(), cause); } }
if (metadataValidationEvent.getOutcome().equalsIgnoreCase(Package.Outcomes.FAILURE)) { warningEvents.add(metadataValidationEvent); if (metadataExtractionEvent.getOutcome().equalsIgnoreCase(Package.Outcomes.FAILURE)) { warningEvents.add(metadataExtractionEvent);
/** * Copy constructor for a DcsEvent. The state of <code>toCopy</code> is copied * to this. * * @param toCopy the dcs event to copy * @throws IllegalArgumentException if <code>toCopy</code> is <code>null</code> */ public DcsEvent(DcsEvent toCopy) { super(toCopy); this.eventType = toCopy.getEventType(); this.date = toCopy.getDate(); this.detail = toCopy.getDetail(); this.outcome = toCopy.getOutcome(); this.targets = toCopy.getTargets(); }
private boolean isPaused(IngestWorkflowState state, String deposit_id) { if (!state.isInteractive()) { return false; } IngestPhase phase = state.getIngestPhase(); if (phase == null || !phase.getPauseIngest()) { return false; } if (state.getIngestServiceIndex() != -1) { return false; } // Note that in this case the phase is the phase _before_ the pause. // Must check to see if that phase has a complete event to distinguish between // that phase being paused and started for (DcsEvent event : state.getEventManager().getEvents(deposit_id, Package.Events.INGEST_PHASE_COMPLETE)) { if (event.getOutcome().equals(String.valueOf(phase.getPhaseNumber()))) { return true; } } return false; }
private boolean isPaused(IngestWorkflowState state, String deposit_id) { if (!state.isInteractive()) { return false; } IngestPhase phase = state.getIngestPhase(); if (phase == null || !phase.getPauseIngest()) { return false; } if (state.getIngestServiceIndex() != -1) { return false; } // Note that in this case the phase is the phase _before_ the pause. // Must check to see if that phase has a complete event to distinguish between // that phase being paused and started for (DcsEvent event : state.getEventManager().getEvents(deposit_id, Package.Events.INGEST_PHASE_COMPLETE)) { if (event.getOutcome().equals(String.valueOf(phase.getPhaseNumber()))) { return true; } } return false; }
private Entry getEntry(DcsEvent event) { Entry entry = abdera.newEntry(); entry.setId(event.getId()); entry.setUpdated(event.getDate()); entry.setTitle(event.getEventType()); if (event.getOutcome() != null) { entry.setContent(event.getOutcome()); } if (event.getDetail() != null) { entry.setSummary(event.getDetail()); } for (DcsEntityReference ref : event.getTargets()) { entry.addLink(ref.getRef(), Link.REL_RELATED); } return entry; }
filesWithUnverifiedFormats.put(target.getRef(), warningEvent.getOutcome()); reportSummary.append(warningEvent.getOutcome() + ". Reason: "); reportSummary.append(warningEvent.getDetail()); reportSummary.append("</li>"); if (metadataValidationEvent.getOutcome().equalsIgnoreCase(Package.Outcomes.SUCCESS)) { MetadataFile file = (MetadataFile) state.getBusinessObjectManager().get(metadataValidationEvent.getTargets().iterator().next().getRef()); String fileMessage = "";
@Override public void execute(String depositId, IngestWorkflowState state) throws StatefulIngestServiceException { for (DcsEvent event : state.getEventManager().getEvents(depositId, Package.Events.METADATA_FILE_VALIDATED)) { if (!event.getTargets().isEmpty()) { if (event.getOutcome().equals(Package.Outcomes.SUCCESS)) { MetadataFile file = (MetadataFile)state.getBusinessObjectManager().get(event.getTargets().iterator().next().getRef()); MetadataResult result = metadataBizService.extractMetadata(file); String outcome = Package.Outcomes.SUCCESS; String extractionMessages = ""; if (!result.getMetadataExtractionErrors().isEmpty()) { outcome = Package.Outcomes.FAILURE; for (MetadataEventMessage error : result.getMetadataExtractionErrors()) { extractionMessages += error.getMessage() + "<\br>"; } } // Send the event, using the outcome and any error/warning messages. DcsEvent extractionEvent = state.getEventManager().newEvent(Package.Events.METADATA_FILE_EXTRACTION); extractionEvent.setOutcome(outcome); extractionEvent.setDetail(extractionMessages); extractionEvent.addTargets(new DcsEntityReference(file.getId())); state.getEventManager().addEvent(depositId, extractionEvent); } } } } }
@Override public void execute(String depositId, IngestWorkflowState state) throws StatefulIngestServiceException { for (DcsEvent event : state.getEventManager().getEvents(depositId, Package.Events.METADATA_FILE_VALIDATED)) { if (!event.getTargets().isEmpty()) { if (event.getOutcome().equals(Package.Outcomes.SUCCESS)) { MetadataFile file = (MetadataFile)state.getBusinessObjectManager().get(event.getTargets().iterator().next().getRef()); MetadataResult result = metadataBizService.extractMetadata(file); String outcome = Package.Outcomes.SUCCESS; String extractionMessages = ""; if (!result.getMetadataExtractionErrors().isEmpty()) { outcome = Package.Outcomes.FAILURE; for (MetadataEventMessage error : result.getMetadataExtractionErrors()) { extractionMessages += error.getMessage() + "<\br>"; } } // Send the event, using the outcome and any error/warning messages. DcsEvent extractionEvent = state.getEventManager().newEvent(Package.Events.METADATA_FILE_EXTRACTION); extractionEvent.setOutcome(outcome); extractionEvent.setDetail(extractionMessages); extractionEvent.addTargets(new DcsEntityReference(file.getId())); state.getEventManager().addEvent(depositId, extractionEvent); } } } } }
private void addEventToTarget(SolrInputDocument doc, DcsEvent event) throws IOException, SolrServerException { add(doc, EventField.DATE, event.getDate()); add(doc, EventField.DETAIL, event.getDetail()); add(doc, EventField.OUTCOME, event.getOutcome()); add(doc, EventField.TYPE, event.getEventType()); // Always remove the dynamic event_date_* field to make sure there is at most one String event_date_field = EventField.DYNAMIC_DATE_TYPE_PREFIX.solrName() + event.getEventType(); doc.removeField(event_date_field); doc.addField(event_date_field, event.getDate()); } }
private static SolrInputDocument toSolr(DcsEvent event) { SolrInputDocument doc = new SolrInputDocument(); add(doc, EntityField.ID, event.getId()); add(doc, EntityField.TYPE, EntityTypeValue.EVENT.solrValue()); add(doc, EventField.DATE, event.getDate()); add(doc, EventField.DETAIL, event.getDetail()); add(doc, EventField.OUTCOME, event.getOutcome()); add(doc, EventField.TYPE, event.getEventType()); addResourceIdentifierSet(doc, event.getAlternateIds()); addRefSet(doc, event.getTargets(), EventField.TARGET); return doc; }
final String outcome = event.getOutcome(); final String detail = event.getDetail(); final String type = event.getEventType();
final String outcome = event.getOutcome(); final String detail = event.getDetail(); final String type = event.getEventType();