package com.megatim.fdxconsultation.core.impl.referentiel; import com.megatim.fdxconsultation.core.ifaces.referentiel.ReferentielManager; import com.megatim.fdxcommons.model.enumeration.OrderByType; import com.megatim.fdxcommons.model.enumeration.StatutReferentiel; import com.megatim.fdxcommons.model.pojo.CriteriaEntity; import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView; import com.megatim.fdxcommons.model.referentiel.Referentiel; import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException; import com.megatim.fdxconsultation.dao.ifaces.referentiel.ReferentielDAO; import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest; import com.megatim.fdxcommons.model.pojo.OrderByDefinition; import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithSearchEnityDAO; import com.megatim.fdxconsultation.model.administration.User; import com.megatim.fdxconsultation.model.searchentities.ReferentielSearch; import com.megatim.fdxconsultation.reporting.model.referentiel.ReferentielReporting; import com.megatim.fdxconsultation.tools.CommonTools; import com.megatim.fdxconsultation.tools.CommonsToolsEntity; 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.persistence.EntityManager; import javax.ws.rs.core.Context; import javax.ws.rs.core.SecurityContext; /** * * @author ASUS */ @Dependent public class ReferentielManagerImpl implements ReferentielManager { @EJB private ReferentielDAO dao; @Context private SecurityContext securityContext; @Override public ReferentielDAO getDao() { return dao; } @Override public String getEntityIdName() { return "version"; } @Override public PaginationWithSearchEnityDAO getPaginationDao() { return dao; } @Override public List getDatas(CriteriaEntityFromView criterion) throws Exception { return CommonsToolsEntity.convertToReferentielReporting(findAll(criterion, Arrays.asList(), Arrays.asList())); } @Override public Map getParameters() { return new HashMap<>(); } @Override public Class getClazz() { return ReferentielReporting.class; } @Override public List findByStatutReferentiel(StatutReferentiel statutReferentiel) { return getDao().findByStatutReferentiel(statutReferentiel); } @Override public Referentiel getReferentielEnCours() { return getDao().getReferentielEnCours(); } @Override public List findAll(CriteriaFormRequest criteriaFormRequest, List fetchEagerFields) { try { List fieldsNotFound = CommonTools.checkIfEntityField(Referentiel.class, fetchEagerFields); if (!fieldsNotFound.isEmpty()) { throw new Exception("Les champs suivants n'appartiennent pas à l'entité Referentiel : " + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}"))); } CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null; return getDao().findAll(criterion, fetchEagerFields, Arrays.asList(new OrderByDefinition("dateGeneration", OrderByType.DESC))); } catch (Exception ex) { Logger.getLogger(ReferentielManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex); throw new CommonApplicationServerException(); } } @Override public List findWithPagination(CriteriaFormRequest criteriaFormRequest, List fetchEagerFields, int pageNumber, int pageSize) { System.out.println("The context is null " + securityContext); if (securityContext != null) { System.out.println("The principal name is " + securityContext.getUserPrincipal().getName()); } try { List fieldsNotFound = CommonTools.checkIfEntityField(Referentiel.class, fetchEagerFields); if (!fieldsNotFound.isEmpty()) { throw new Exception("Les champs suivants n'appartiennent pas à l'entité Referentiel : " + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}"))); } CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null; return getDao().findWithPagination(criterion, fetchEagerFields, Arrays.asList(new OrderByDefinition("dateGeneration", OrderByType.DESC)), pageNumber, pageSize); } catch (Exception ex) { Logger.getLogger(ReferentielManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex); throw new CommonApplicationServerException(); } } @Override public Class getManagedEntityClass() { return Referentiel.class; } @Override public EntityManager getEntityManager() { return getDao().getEntityManager(); } @Override public void archiverReferentielEncours() { dao.archiverReferentielEncours(); } @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); } }