package org.apereo.cas.support.events.dao;
import org.apereo.cas.support.events.CasEventRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.time.ZonedDateTime;
import java.util.Collection;
import java.util.stream.Collectors;
/**
* This is {@link AbstractCasEventRepository}.
*
* @author Misagh Moayyed
* @since 5.0.0
*/
public abstract class AbstractCasEventRepository implements CasEventRepository {
/**
* The constant LOGGER.
*/
protected static final Logger LOGGER = LoggerFactory.getLogger(AbstractCasEventRepository.class);
/**
* The constant TYPE_PARAM.
*/
protected static final String TYPE_PARAM = "type";
/**
* The constant CREATION_TIME_PARAM.
*/
protected static final String CREATION_TIME_PARAM = "creationTime";
/**
* The constant PRINCIPAL_ID_PARAM.
*/
protected static final String PRINCIPAL_ID_PARAM = "principalId";
@Override
public Collection<CasEvent> getEventsOfType(final String type) {
final Collection<CasEvent> events = load();
return events.stream().filter(event -> event.getType().equals(type)).collect(Collectors.toSet());
}
@Override
public Collection<CasEvent> getEventsOfTypeForPrincipal(final String type, final String principal) {
return getEventsForPrincipal(principal)
.stream()
.filter(event -> event.getType().equals(type))
.collect(Collectors.toSet());
}
@Override
public Collection<CasEvent> getEventsForPrincipal(final String id) {
return load().stream().filter(e -> e.getPrincipalId().equalsIgnoreCase(id)).collect(Collectors.toSet());
}
@Override
public Collection<CasEvent> load(final ZonedDateTime dateTime) {
return load().stream()
.filter(e -> e.getCreationTime().isEqual(dateTime) || e.getCreationTime().isAfter(dateTime))
.collect(Collectors.toSet());
}
@Override
public Collection<CasEvent> getEventsOfTypeForPrincipal(final String type, final String principal, final ZonedDateTime dateTime) {
return getEventsOfTypeForPrincipal(type, principal)
.stream()
.filter(e -> e.getCreationTime().isEqual(dateTime) || e.getCreationTime().isAfter(dateTime))
.collect(Collectors.toSet());
}
@Override
public Collection<CasEvent> getEventsOfType(final String type, final ZonedDateTime dateTime) {
return getEventsOfType(type)
.stream()
.filter(e -> e.getCreationTime().isEqual(dateTime) || e.getCreationTime().isAfter(dateTime))
.collect(Collectors.toSet());
}
@Override
public Collection<CasEvent> getEventsForPrincipal(final String id, final ZonedDateTime dateTime) {
return getEventsForPrincipal(id)
.stream()
.filter(e -> e.getCreationTime().isEqual(dateTime) || e.getCreationTime().isAfter(dateTime))
.collect(Collectors.toSet());
}
}