package org.molgenis.data.listeners; import org.molgenis.data.AbstractRepositoryDecorator; import org.molgenis.data.Entity; import org.molgenis.data.Repository; import java.util.stream.Stream; import static java.util.Objects.requireNonNull; public class EntityListenerRepositoryDecorator extends AbstractRepositoryDecorator<Entity> { private final Repository<Entity> decoratedRepository; private final EntityListenersService entityListenersService; public EntityListenerRepositoryDecorator(Repository<Entity> decoratedRepository, EntityListenersService entityListenersService) { this.decoratedRepository = requireNonNull(decoratedRepository); requireNonNull(entityListenersService).register(decoratedRepository.getName()); this.entityListenersService = entityListenersService; } @Override protected Repository<Entity> delegate() { return decoratedRepository; } @Override public void update(Entity entity) { entityListenersService.updateEntity(decoratedRepository.getName(), entity); decoratedRepository.update(entity); } @Override public void update(Stream<Entity> entities) { entities = entityListenersService.updateEntities(decoratedRepository.getName(), entities); decoratedRepository.update(entities); } }