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; }
@Override public void execute(String depositId, IngestWorkflowState state) throws StatefulIngestServiceException { super.execute(depositId, state); List<DcsEntityReference> businessObjectRefs = build(state, depositId); // Emit event indication that business objects had been created from attribute sets DcsEvent event = state.getEventManager().newEvent(Package.Events.BUSINESS_OBJECT_BUILT); event.setDetail(SUCCESS_EVENT_DETAIL); event.setOutcome(SUCCESS_EVENT_OUTCOME + businessObjectRefs.size() + " objects created."); event.setTargets(businessObjectRefs); state.getEventManager().addEvent(depositId, event); }
private void sendEvent(EventManager manager, String id, String outcome, String details, MetadataFile file) { // Send the event, using the outcome and any error/warning messages. DcsEvent event = manager.newEvent(Package.Events.METADATA_FILE_VALIDATED); event.setOutcome(outcome); event.setDetail(details); event.addTargets(new DcsEntityReference(file.getId())); manager.addEvent(id, event); } }
/** * 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(); }
/** * {@inheritDoc} * <em><strong>N.B.</strong></em>: this implementation does <em>not</em> set an identifier on the returned * {@code DcsEvent}. It only will set the event type, and the current date time. * * @param eventType the returned event will carry this type * @return a new event, with the time set to the current date time, and event type set to {@code eventType} */ @Override public DcsEvent newEvent(String eventType) { DcsEvent e = new DcsEvent(); e.setDate(DateTime.now().toDateTimeISO().toString()); e.setEventType(eventType); return e; }
public DcsEvent newEvent(String eventType) { DcsEvent event = new DcsEvent(); if (idIterator == null || !idIterator.hasNext()) { refreshIterator(); } event.setId(idIterator.next().getUrl().toString()); event.setEventType(eventType); event.setDate(toIso8601(now())); return event; }
@Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { final DcsEvent event = new DcsEvent(); event.setId(id); final String ref = reader.getAttribute(A_REF); if (!isEmptyOrNull(ref)) { event.addTargets(new DcsEntityReference(ref)); event.setDate(value); event.setDetail(value); event.setOutcome(value); event.setEventType(value);
public DcsEvent createEvent(String target) { DcsEvent event = new DcsEvent(); event.setId(nextid()); event.setDate(DateUtility.toIso8601(DateUtility.now())); event.setOutcome(randomString(20, false)); event.setEventType(randomString(2, false)); event.setDetail(randomText(5)); event.setTargets(createEnityReferences(rand.nextInt(2))); return event; }
@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); } } } } }
/** * Creates a {@link org.dataconservancy.packaging.ingest.api.Package.Events#DEPOSIT} event, representing the receipt of the Package, and adds it to the * ingest state. * * @param metadata map of metadata using HTTP header conventions * @param depositId the deposit (transaction) identifier * @param state the ingest state */ void addDepositEvent(Map<String, String> metadata, String depositId, IngestWorkflowState state) { DcsEvent depositEvent = state.getEventManager().newEvent(org.dataconservancy.packaging.ingest.api.Package.Events.DEPOSIT); depositEvent.setOutcome(depositId); depositEvent.addTargets(new DcsEntityReference(filenameFromHeader(metadata))); depositEvent.setDetail("Accepted package named " + filenameFromHeader(metadata) + " on " + depositEvent.getDate() + " deposited by " + metadata.get(Http.Header.X_DCS_AUTHENTICATED_USER)); state.getEventManager().addEvent(depositId, depositEvent); }
@Test public void generatedValuesTest() { DcsEvent event1 = getEventManager().newEvent(TEST_EVENT_TYPE); DcsEvent event2 = getEventManager().newEvent(TEST_EVENT_TYPE); assertNotNull(event1.getId()); assertNotSame(event1.getId(), event2.getId()); assertNotNull(event1.getEventType()); assertNotNull(event1.getDate()); }
failureEvent.toString(eventPrinter); reportSummary.append(eventPrinter.toString()); if (warningEvent.getEventType().equals(Package.Events.FORMAT_VERIFICATION_FAILED)) { for (DcsEntityReference target : warningEvent.getTargets()) { filesWithUnverifiedFormats.put(target.getRef(), warningEvent.getOutcome()); reportSummary.append("<li>" + warningEvent.getDetail() + "</li>"); } else if (warningEvent.getEventType().equals(Package.Events.UNSUPPORTED_FILE_AGGREGATION)) { reportSummary.append("<li>"); reportSummary.append(warningEvent.getOutcome() + ". Reason: "); reportSummary.append(warningEvent.getDetail()); reportSummary.append("</li>"); } else if (warningEvent.getEventType().equals(Package.Events.METADATA_FILE_VALIDATED)) { reportSummary.append("<li>"); if (!warningEvent.getTargets().isEmpty()) { MetadataFile file = (MetadataFile) state.getBusinessObjectManager().get(warningEvent.getTargets().iterator().next().getRef()); if (file != null) { PackageSerialization ps = state.getPackage().getSerialization(); reportSummary.append(warningEvent.getDetail()); reportSummary.append("</li>"); } else if (warningEvent.getEventType().equals(Package.Events.METADATA_FILE_EXTRACTION)) { reportSummary.append("<li>"); if (!warningEvent.getTargets().isEmpty()) { MetadataFile file = (MetadataFile) state.getBusinessObjectManager().get(warningEvent.getTargets().iterator().next().getRef()); if (file != null) { PackageSerialization ps = state.getPackage().getSerialization();
/** * Adds the supplied event to the data structure optimized for lookup of events by their identifier. * * @param e the event */ private void addEventById(DcsEvent e) { eventsById.put(e.getId(), e); }
private String addIngestEvent(Dcp sip, String ingestId) { DcsEvent event = eventManager.newEvent(Events.DEPOSIT); event.setDetail(ingestId); for (DcsCollection c : sip.getCollections()) { event.addTargets(new DcsEntityReference(c.getId())); } for (DcsEntity du : sip.getDeliverableUnits()) { event.addTargets(new DcsEntityReference(du.getId())); } for (DcsManifestation m : sip.getManifestations()) { event.addTargets(new DcsEntityReference(m.getId())); } for (DcsFile f : sip.getFiles()) { event.addTargets(new DcsEntityReference(f.getId())); } for (DcsEvent e : sip.getEvents()) { event.addTargets(new DcsEntityReference(e.getId())); } eventManager.addEvent(ingestId, event); return ingestId; }
DcsEvent startEvent = state.getEventManager().getEventByType(deposit_id, Package.Events.INGEST_START); if (startEvent != null) { startTime = startEvent.getDate(); if (events != null && events.size() > 0) { sortedEvents.addAll(events); endTime= sortedEvents.last().getDate(); unresumableIngestEvent.setOutcome("Unable resume ingest on " + DateTime.now().toString()); unresumableIngestEvent.addTargets(new DcsEntityReference(deposit_id)); state.getEventManager().addEvent(deposit_id, unresumableIngestEvent);
/** * Adds the supplied event to the data structure optimized for lookup of events by their type. * * @param e the event */ private void addEventByType(DcsEvent e) { if (eventsByType.containsKey(e.getEventType())) { eventsByType.get(e.getEventType()).add(e); } else { HashSet<DcsEvent> events = new HashSet<DcsEvent>(); events.add(e); eventsByType.put(e.getEventType(), events); } }
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); } }
private Set<String> getEventRefs(DcsEntity event) { Set<String> rels = new HashSet<String>(); DcsEvent e = (DcsEvent) event; for (DcsEntityReference ref : e.getTargets()) { rels.add(ref.getRef()); } return rels; }
event.setDetail("File size does not match user supplied size: " + localId); event.addTargets(new DcsEntityReference(df.getId()));