package com.megatim.fdxconsultation.core.ifaces.abtracts; import com.megatim.fdxconsultation.model.administration.User; import java.io.Serializable; /** * * @author ASUS */ public interface GenericCrudManagerIFaces extends GeneriConsultingManagerIFaces { public default T add(T entity, User connectedUser) { //Pre-traitements beforeAdd(entity, connectedUser); //On save T newEntity = save(entity); return newEntity; } @Override public default S getById(ID id) { T entity = find(getEntityIdName(), id); return mapToDetailDto(entity); } public default T modify(ID id, T entity, User connectedUser) { T actualEntity = find(getEntityIdName(), id); //On copie les nouvelles valeurs beforeModify(actualEntity, entity, connectedUser); update(id, actualEntity); return actualEntity; } public default T remove(ID id, User connectedUser) { T entity = find(getEntityIdName(), id); beforeRemove(entity, connectedUser); return update(id, entity); } public abstract void beforeAdd(T entity, User connectedUser); public abstract void beforeRemove(T entity, User connectedUser); public abstract void beforeModify(T actualEntity, T requestEntity, User connectedUser); }