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);
|
}
|
}
|