diff --git a/src/main/java/de/thm/arsnova/service/DefaultEntityServiceImpl.java b/src/main/java/de/thm/arsnova/service/DefaultEntityServiceImpl.java index 003bb2d0d297348ab20d07dc1b7004da3db9b1bb..abe3c0d65c82a675742ab1d130f6c2114c4b251b 100644 --- a/src/main/java/de/thm/arsnova/service/DefaultEntityServiceImpl.java +++ b/src/main/java/de/thm/arsnova/service/DefaultEntityServiceImpl.java @@ -239,6 +239,19 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService eventPublisher.publishEvent(new AfterDeletionEvent<>(this, entity)); } + @Override + @PreFilter(value = "hasPermission(filterObject, 'delete')", filterTarget = "entities") + public void delete(final Iterable<T> entities) { + for (T entity : entities) { + prepareDelete(entity); + eventPublisher.publishEvent(new BeforeDeletionEvent<>(this, entity)); + } + repository.deleteAll(entities); + for (T entity : entities) { + eventPublisher.publishEvent(new AfterDeletionEvent<>(this, entity)); + } + } + /** * This method can be overridden by subclasses to do additional entity related actions before deletion. * diff --git a/src/main/java/de/thm/arsnova/service/EntityService.java b/src/main/java/de/thm/arsnova/service/EntityService.java index 9158e4f5b61cc74931805d03d651e44d2784a9cf..708612479555aa8e093861dc5a605a5010b53809 100644 --- a/src/main/java/de/thm/arsnova/service/EntityService.java +++ b/src/main/java/de/thm/arsnova/service/EntityService.java @@ -62,4 +62,7 @@ public interface EntityService<T extends Entity> { @PreAuthorize("hasPermission(#entity, 'delete')") void delete(T entity); + + @PreFilter(value = "hasPermission(filterObject, 'delete')", filterTarget = "entities") + void delete(Iterable<T> entities); }