package com.megatim.fdxconsultation.core.impl.dataproduction; import com.megatim.fdxcommons.model.dtos.dataproduction.DataProductionDto; import com.megatim.fdxcommons.model.enumeration.OrderByType; import com.megatim.fdxcommons.model.enumeration.StatutDataProduction; import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView; import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest; import com.megatim.fdxcommons.model.pojo.OrderByDefinition; import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException; import com.megatim.fdxconsultation.dao.ifaces.dataproduction.DataProductionDAO; import com.megatim.fdxconsultation.core.ifaces.dataproduction.DataProductionManager; import com.megatim.fdxconsultation.model.administration.User; import com.megatim.fdxconsultation.model.dataproduction.DataProduction; import com.megatim.fdxconsultation.model.mappers.MapStructMapper; import com.megatim.fdxconsultation.tools.CommonTools; import com.megatim.reporting.adhoc.dto.ReportConfiguration; import java.io.File; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; import javax.ejb.EJB; import javax.enterprise.context.Dependent; import javax.inject.Inject; /** * * @author ASUS */ @Dependent public class DataProductionManagerImpl implements DataProductionManager { @EJB private DataProductionDAO dao; @Inject MapStructMapper mapper; @Override public DataProductionDAO getDao() { return dao; } @Override public String getEntityIdName() { return "id"; } @Override public List findAll(CriteriaFormRequest criteriaFormRequest, List fetchEagerFields) { try { List fieldsNotFound = CommonTools.checkIfEntityField(DataProduction.class, fetchEagerFields); if (!fieldsNotFound.isEmpty()) { throw new Exception("Les champs suivants n'appartiennent pas à l'entité DataProduction : " + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}"))); } return getDao().findAll(criteriaFormRequest.getCriteria(), fetchEagerFields, Arrays.asList(new OrderByDefinition("dateProduction", OrderByType.DESC))); } catch (Exception ex) { Logger.getLogger(DataProductionManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex); throw new CommonApplicationServerException(); } } @Override public List findWithPagination(CriteriaFormRequest criteriaFormRequest, List fetchEagerFields, int pageNumber, int pageSize) { try { List fieldsNotFound = CommonTools.checkIfEntityField(DataProduction.class, fetchEagerFields); if (!fieldsNotFound.isEmpty()) { throw new Exception("Les champs suivants n'appartiennent pas à l'entité DataProduction : " + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}"))); } return getDao().findWithPagination(criteriaFormRequest.getCriteria(), fetchEagerFields, Arrays.asList(new OrderByDefinition("dateProduction", OrderByType.DESC)), pageNumber, pageSize); } catch (Exception ex) { Logger.getLogger(DataProductionManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex); throw new CommonApplicationServerException(); } } @Override public Class getClazz() { return DataProductionDto.class; } @Override public List getDatas(CriteriaEntityFromView searchEntity) throws Exception { return mapper.dataProductionListToDataProductionDtoList(findAll(searchEntity, Arrays.asList(), Arrays.asList())); } @Override public Map getParameters() { return new HashMap<>(); } @Override public File printAll(ReportConfiguration reportConfiguration, User userConnected) throws Exception { return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false); } @Override public File printOne(ReportConfiguration reportConfiguration, User userConnected) throws Exception { return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true); } @Override public File exportExcelAll(ReportConfiguration reportConfiguration, User userConnected) throws Exception { return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false); } @Override public File exportExcelOne(ReportConfiguration reportConfiguration, User userConnected) throws Exception { return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true); } @Override public List findByStatutDataProduction(StatutDataProduction statut) { return dao.findByStatutDataProduction(statut); } }