package gov.samhsa.consent2share.infrastructure.eventlistener; import gov.samhsa.acs.audit.AuditService; import gov.samhsa.acs.audit.PredicateKey; import gov.samhsa.consent2share.domain.SecurityEvent; import gov.samhsa.consent2share.infrastructure.securityevent.FileUploadedEvent; import gov.samhsa.consent2share.infrastructure.securityevent.SecurityAuditVerb; import gov.samhsa.consent2share.infrastructure.securityevent.SecurityPredicateKey; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ch.qos.logback.audit.AuditException; /** * The listener interface for receiving fileUploadedEvent events. The class that * is interested in processing a fileUploadedEvent event implements this * interface, and the object created with that class is registered with a * component using the component's * <code>addFileUploadedEventListener<code> method. When * the fileUploadedEvent event occurs, that object's appropriate * method is invoked. * * @see FileUploadedEventEvent */ public class FileUploadedEventListener extends SecurityEventListener { /** The logger. */ private final Logger logger = LoggerFactory.getLogger(this.getClass()); /** * Instantiates a new file uploaded event listener. * * @param eventService * the event service * @param auditService * the audit service */ public FileUploadedEventListener(EventService eventService, AuditService auditService) { super(eventService, auditService); } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.infrastructure.eventlistener.EventListener#canHandle * (java.lang.Object) */ @Override public boolean canHandle(Object event) { return event instanceof FileUploadedEvent; } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.infrastructure.eventlistener.SecurityEventListener * #handle(java.lang.Object) */ @Override public void handle(Object event) { super.handle(event); } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.infrastructure.eventlistener.SecurityEventListener * #audit(gov.samhsa.consent2share.domain.SecurityEvent) */ @Override public void audit(SecurityEvent event) { FileUploadedEvent fileUploadedEvent = (FileUploadedEvent) event; Map<PredicateKey, String> predicateMap = auditService .createPredicateMap(); predicateMap.put(SecurityPredicateKey.IP_ADDRESS, event.getIpAddress()); try { auditService.audit("FileUploadedEventListener", fileUploadedEvent.getUserName(), SecurityAuditVerb.UPLOADS_FILE, fileUploadedEvent.getFileUploaded(), predicateMap); } catch (AuditException e) { logger.error(e.getMessage(), e); } } }