package com.megatim.fdxconsultation.core.ifaces.abtracts;
|
|
import com.megatim.fdxconsultation.model.administration.User;
|
import java.io.Serializable;
|
|
/**
|
*
|
* @author ASUS
|
*/
|
public interface GenericCrudManagerIFaces<T, K, S, ID extends Serializable, U> extends GeneriConsultingManagerIFaces<T, K, S, ID, U> {
|
|
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);
|
|
}
|