/*
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
|
*/
|
package com.megatim.fdxconsultation.core.ifaces.abtracts;
|
|
import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer;
|
import com.bekosoftware.genericmanagerlayer.core.ifaces.GenericManager;
|
import com.megatim.common.annotations.OrderType;
|
import com.megatim.fdxcommons.model.enumeration.TypeOperation;
|
import com.megatim.fdxconsultation.model.administration.User;
|
import java.io.Serializable;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
*
|
* @author ASUS
|
*/
|
public interface GeneriConsultingManagerIFaces<T, K, S, ID extends Serializable, U> extends GenericManager<T, ID> {
|
|
K mapToDto(T entity);
|
|
S mapToDetailDto(T entity);
|
|
public abstract String getEntityIdName();
|
|
public S getById(ID id);
|
|
public default List<K> convertListToDto(List<T> datas) {
|
List<K> dtos = new ArrayList<>();
|
|
if (datas != null) {
|
for (T data : datas) {
|
dtos.add(mapToDto(data));
|
}
|
}
|
return dtos;
|
}
|
|
public default List<K> getWithPagination(Integer pageNumber, Integer pagesize, U searchEntity, User connectedUser) {
|
|
Map<String, OrderType> orders = new HashMap<>();
|
|
//On trie par id
|
orders.put(getEntityIdName(), OrderType.DESC);
|
//On construit la requete
|
RestrictionsContainer requeteur = construireRequete(searchEntity, TypeOperation.AJOUTER);
|
|
//Construction de l'index
|
int index = (pageNumber - 1) * pagesize;
|
|
//On on recherche l'entité
|
List<T> datas = filter(requeteur.getPredicats(), orders, null, index, pagesize);
|
List<K> dtos = convertListToDto(datas);
|
|
return dtos;
|
}
|
|
public default List<K> getAll(U searchEntity, User connectedUser) {
|
|
//On construit la requete
|
RestrictionsContainer requeteur = construireRequete(searchEntity, TypeOperation.AJOUTER);
|
Map<String, OrderType> orders = new HashMap<>();
|
|
//On trie par id
|
orders.put(getEntityIdName(), OrderType.DESC);
|
|
//On on recherche l'entité
|
List<T> datas = filter(requeteur.getPredicats(), orders, null, 0, -1);
|
List<K> dtos = convertListToDto(datas);
|
|
return dtos;
|
|
}
|
|
public default Long size(U searchEntity) {
|
//On construit la requete
|
RestrictionsContainer requeteur = construireRequete(searchEntity, TypeOperation.AJOUTER);
|
|
//On on recherche l'entité
|
return count(requeteur.getPredicats());
|
}
|
|
public abstract RestrictionsContainer construireRequete(U searchEntity, TypeOperation typeOperation);
|
|
}
|