Kenmegne
7 days ago 23a46b4be35277e06ec89f48730eeb694e686be8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*
 * 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);
 
}