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.SecurityAuditVerb; import gov.samhsa.consent2share.infrastructure.securityevent.UserCreatedEvent; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ch.qos.logback.audit.AuditException; /** * The listener interface for receiving userCreatedEvent events. The class that * is interested in processing a userCreatedEvent event implements this * interface, and the object created with that class is registered with a * component using the component's * <code>addUserCreatedEventListener<code> method. When * the userCreatedEvent event occurs, that object's appropriate * method is invoked. * * @see UserCreatedEventEvent */ public class UserCreatedEventListener extends SecurityEventListener { /** The logger. */ private final Logger logger = LoggerFactory.getLogger(this.getClass()); /** * Instantiates a new user created event listener. * * @param eventService * the event service * @param auditService * the audit service */ public UserCreatedEventListener(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 UserCreatedEvent; } /* * (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) { UserCreatedEvent userCreatedEvent = (UserCreatedEvent) event; Map<PredicateKey, String> predicateMap = auditService .createPredicateMap(); try { auditService.audit("UserCreatedEventListener", userCreatedEvent.getIpAddress(), SecurityAuditVerb.CREATES_USER, userCreatedEvent.getUserName(), predicateMap); } catch (AuditException e) { logger.error(e.getMessage(), e); } } }