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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package com.megatim.fdxconsultation.core.impl.helper;
 
import com.megatim.fdxcommons.core.ifaces.helper.DataInMemoryHandler;
import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
import com.megatim.fdxcommons.model.enumeration.Operateur;
import com.megatim.fdxcommons.model.enumeration.OrderByType;
import com.megatim.fdxcommons.model.referentiel.Referentiel;
import com.megatim.fdxcommons.tools.exceptions.CommonRessourceNotFoundException;
import com.megatim.fdxconsultation.core.ifaces.helper.RequestHandler;
import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
import com.megatim.fdxconsultation.core.ifaces.stats.TableauBordManager;
import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
import com.megatim.fdxconsultation.model.dto.stats.TableauBordSlimDto;
import com.megatim.fdxconsultation.model.stats.TableauBord;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.enterprise.context.Dependent;
import javax.inject.Inject;
import javax.transaction.Transactional;
 
/**
 *
 * @author ASUS
 */
@Dependent
public class RequestHandlerImpl implements RequestHandler {
 
    @Inject
    MapStructMapper mapper;
 
    @Inject
    private TableauBordManager tableauBordManager;
 
    @Inject
    private DataInMemoryHandler dataInMemoryHandler;
 
    @Override
    public Long countTableauBord(CriteriaFormRequest criteriaFormRequest) throws Exception {
        return tableauBordManager.count(addCurrentReferentielToCriteria(criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null));
    }
 
    @Override
    @Transactional
    public void deleteTableauBord(Long id) {
        TableauBord tableauBord = tableauBordManager.getById(id);
 
        if (tableauBord == null) {
            throw new CommonRessourceNotFoundException("La ressource ayant l'identifiant " + id + " est introuvable");
        }
        tableauBordManager.delete(null, tableauBord);
    }
 
    @Override
    public List<TableauBordSlimDto> findTableauBord(CriteriaFormRequest criteriaFormRequest) throws Exception {
        List<TableauBord> tableauxBords = tableauBordManager.findAll(addCurrentReferentielToCriteria(criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null),
                Arrays.asList(),
                Arrays.asList());
        List<TableauBordSlimDto> dtos = new ArrayList<>();
 
        tableauxBords.stream().forEach(t -> {
            dtos.add(mapper.tableauBordToTableauBordSlimDto(t));
        });
        return dtos;
    }
 
    @Override
    public List<TableauBordSlimDto> findTableauBordWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize) throws Exception {
 
 
        List<TableauBord> tableauxBords = tableauBordManager
                .findWithPagination(
                        addCurrentReferentielToCriteria(criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null),
                        fetchEagerFields,
                        Arrays.asList(new OrderByDefinition("dateCreation", OrderByType.DESC)),
                        pageNumber,
                        pageSize);
        
        List<TableauBordSlimDto> dtos = new ArrayList<>();
 
        tableauxBords.stream().forEach(t -> {
            dtos.add(mapper.tableauBordToTableauBordSlimDto(t));
        });
        return dtos;
    }
 
    private CriteriaEntityFromView addCurrentReferentielToCriteria(CriteriaEntityFromView criterion) {
        CriteriaEntityFromView finalCriterion = new CriteriaEntityFromView();
        finalCriterion.setCriteriaLogicConnector(CriteriaLogicConnector.AND);
 
        finalCriterion.getSubCriterias().add(currentReferentielCriterion());
        finalCriterion.getSubCriterias().add(criterion);
 
        return finalCriterion;
    }
 
    private CriteriaEntityFromView currentReferentielCriterion() {
        Referentiel referentiel = dataInMemoryHandler.getDataInMemory().getReferentielEnCours();
        return new CriteriaEntityFromView("referentiel.version",
                referentiel != null ? referentiel.getVersion() : "",
                Operateur.EQUALS);
    }
}