diff --git a/src/main/java/de/thm/arsnova/services/DefaultEntityServiceImpl.java b/src/main/java/de/thm/arsnova/services/DefaultEntityServiceImpl.java index b4a1391f9276962f51a52b66485b20af4d940faf..2602578dd2800a983ea60cac5dea00a48c5fd510 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());