package com.mycompany.myapp.service; import com.mycompany.myapp.config.audit.AuditEventConverter; import com.mycompany.myapp.domain.PersistentAuditEvent; import com.mycompany.myapp.repository.PersistenceAuditEventRepository; import java.time.LocalDateTime; import org.springframework.boot.actuate.audit.AuditEvent; import org.springframework.stereotype.Service; import javax.inject.Inject; import java.time.ZoneId; import java.util.List; import java.util.Optional; /** * Service for managing audit events. * <p/> * <p> * This is the default implementation to support SpringBoot Actuator AuditEventRepository * </p> */ @Service public class AuditEventService { private PersistenceAuditEventRepository persistenceAuditEventRepository; private AuditEventConverter auditEventConverter; @Inject public AuditEventService( PersistenceAuditEventRepository persistenceAuditEventRepository, AuditEventConverter auditEventConverter) { this.persistenceAuditEventRepository = persistenceAuditEventRepository; this.auditEventConverter = auditEventConverter; } public List<AuditEvent> findAll() { return auditEventConverter.convertToAuditEvent(persistenceAuditEventRepository.findAll()); } public List<AuditEvent> findByDates(LocalDateTime fromDate, LocalDateTime toDate) { ZoneId zoneId = ZoneId.systemDefault(); List<PersistentAuditEvent> persistentAuditEvents = persistenceAuditEventRepository.findAllByAuditEventDateBetween( fromDate.atZone(zoneId).toInstant().toEpochMilli(), toDate.atZone(zoneId).toInstant().toEpochMilli()); return auditEventConverter.convertToAuditEvent(persistentAuditEvents); } public Optional<AuditEvent> find(Long id) { return Optional.ofNullable(persistenceAuditEventRepository.findOne(id)).map (auditEventConverter::convertToAuditEvent); } }