From 017851805d280a7cccc7eaba81300679d76c9d83 Mon Sep 17 00:00:00 2001 From: Daniel Gerhardt <code@dgerhardt.net> Date: Sat, 21 Jul 2018 16:45:10 +0200 Subject: [PATCH] Add finalize methods which are run after create/update These methods allow additonal application logic based on an created/ updated entity. --- .../services/DefaultEntityServiceImpl.java | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/thm/arsnova/services/DefaultEntityServiceImpl.java b/src/main/java/de/thm/arsnova/services/DefaultEntityServiceImpl.java index b4a1391f9..2602578dd 100644 --- a/src/main/java/de/thm/arsnova/services/DefaultEntityServiceImpl.java +++ b/src/main/java/de/thm/arsnova/services/DefaultEntityServiceImpl.java @@ -69,9 +69,12 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService throw new IllegalArgumentException("Entity is not new."); } entity.setCreationTimestamp(new Date()); + prepareCreate(entity); + final T createdEntity = repository.save(entity); + finalizeCreate(entity); - return repository.save(entity); + return createdEntity; } /** @@ -83,6 +86,15 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService } + /** + * This method can be overridden by subclasses to modify the entity after creation. + * + * @param entity The entity which has been created + */ + protected void finalizeCreate(final T entity) { + + } + public T update(final T entity) { return update(repository.findOne(entity.getId()), entity); } @@ -92,9 +104,12 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService public T update(final T oldEntity, final T newEntity) { newEntity.setId(oldEntity.getId()); newEntity.setUpdateTimestamp(new Date()); + prepareUpdate(newEntity); + final T updatedEntity = repository.save(newEntity); + finalizeUpdate(updatedEntity); - return repository.save(newEntity); + return updatedEntity; } /** @@ -106,6 +121,15 @@ public class DefaultEntityServiceImpl<T extends Entity> implements EntityService } + /** + * This method can be overridden by subclasses to modify the entity after updating. + * + * @param entity The entity which has been updated + */ + protected void finalizeUpdate(final T entity) { + + } + @Override public T patch(final T entity, final Map<String, Object> changes) throws IOException { return patch(entity, changes, Function.identity()); -- GitLab