/* * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template */ package com.megatim.fdxconsultation.core.impl.helper; import com.megatim.commons.tools.exceptions.ApplicationServerException; import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector; import com.megatim.fdxcommons.model.enumeration.Operateur; import com.megatim.fdxcommons.model.integration.ColumnDefinition; import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView; import com.megatim.fdxcommons.model.pojo.PageData; import com.megatim.fdxcommons.tools.database.connection.DBConnection; import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion; import com.megatim.fdxcommons.tools.database.queries.metadata.SelectQueryResult; import com.megatim.fdxcommons.tools.database.tables.appcolumns.EnCoursProductionColumnDefinition; import com.megatim.fdxcommons.tools.database.tables.FdxApiTable; import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException; import com.megatim.fdxcommons.tools.utils.CriteriaEntityFromViewToQueryCriterion; import com.megatim.fdxconsultation.core.ifaces.customtypefichier.CustomTypeFichierManager; import com.megatim.fdxconsultation.core.ifaces.integration.ColumnDefinitionManager; import com.megatim.fdxconsultation.core.ifaces.helper.DataConsumptionOperations; import com.megatim.fdxconsultation.core.impl.utils.FdxTableUtils; import com.megatim.fdxconsultation.model.administration.User; import com.megatim.fdxconsultation.model.dtos.reporting.CustomTypeFichierReportConfiguration; import com.megatim.fdxconsultation.model.dtos.reporting.CustomTypeFichierReportConfigurationFromView; import com.megatim.fdxconsultation.model.mappers.MapStructMapper; import com.megatim.fdxconsultation.tools.context.AppCommonContext; import java.io.File; import java.sql.Connection; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import javax.annotation.Resource; import javax.enterprise.context.Dependent; import javax.inject.Inject; import javax.sql.DataSource; /** * * @author ASUS */ @Dependent public class DataConsumptionOperationsImpl implements DataConsumptionOperations { @Resource(lookup = AppCommonContext.JNDI_NAME) private DataSource dataSource; @Inject MapStructMapper mapper; @Inject com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper; @Inject CustomTypeFichierManager customTypeFichierManager; @Inject ColumnDefinitionManager columnDefinitionManager; @Override public List> findByCriteria(String referentielVersion, String codeTypeFichier, CriteriaEntityFromView criterion) { try ( Connection connection = new DBConnection(dataSource).connection()) { SelectQueryResult result = selectResult(connection, codeTypeFichier, referentielVersion, curentDataProductionCriterion(criterion)); return FdxTableUtils.fdxTableRowToListMap(result.rows()); } catch (Exception ex) { Logger.getLogger(DataConsumptionOperationsImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex); throw new CommonApplicationServerException(); } } @Override public Long count(String referentielVersion, String codeTypeFichier, CriteriaEntityFromView criterion) { try ( Connection connection = new DBConnection(dataSource).connection()) { return table(codeTypeFichier, referentielVersion) .count(curentDataProductionCriterion(criterion), connection); } catch (Exception ex) { throw new ApplicationServerException(ex.getMessage()); } } @Override public PageData findByCriteriaWithPagination(String referentielVersion, String codeTypeFichier, CriteriaEntityFromView criterion, int pageNumber, int pageSize) { try ( Connection connection = new DBConnection(dataSource).connection()) { return getPageData(connection, codeTypeFichier, referentielVersion, curentDataProductionCriterion(criterion), pageNumber, pageSize); } catch (Exception ex) { Logger.getLogger(DataConsumptionOperationsImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex); throw new CommonApplicationServerException(); } } @Override public File printAll(String referentielVersion, String codeTypeFichier, CustomTypeFichierReportConfigurationFromView reportConfigurationFromView, User userConnected) throws Exception { CustomTypeFichierReportConfiguration reportConfiguration = mapper.customTypeFichierReportConfigurationFromViewToCustomTypeFichierReportConfiguration(reportConfigurationFromView); return customTypeFichierManager.generatePdf(reportConfiguration, codeTypeFichier, userConnected, false); } @Override public List getPrintableColumns(String referentielVersion, String codeTypeFichier) { return columnDefinitionManager.findByReferentielAndTypeFichier(referentielVersion, codeTypeFichier); } private QueryCriterion curentDataProductionCriterion(CriteriaEntityFromView criterion) { QueryCriterion queryCriterion = new CriteriaEntityFromViewToQueryCriterion(criterion).queryCriterion(); if (queryCriterion != null) { return new QueryCriterion(null, null, null, CriteriaLogicConnector.AND, Arrays.asList(queryCriterion, new QueryCriterion(new EnCoursProductionColumnDefinition().name(), false, Operateur.EQUALS, null, Arrays.asList())) ); } else { return new QueryCriterion(new EnCoursProductionColumnDefinition().name(), false, Operateur.EQUALS, null, Arrays.asList()); } } private SelectQueryResult selectResult(Connection connection, String codeTypeFichier, String referentielVersion, QueryCriterion queryCriterion) { try { return table(codeTypeFichier, referentielVersion).selectResult(queryCriterion, connection); } catch (Exception ex) { throw new ApplicationServerException(ex.getMessage()); } } private SelectQueryResult selectResult(Connection connection, String codeTypeFichier, String referentielVersion, QueryCriterion queryCriterion, int pageNumber, int pageSize) { try { int offset = (pageNumber - 1) * pageSize; return table(codeTypeFichier, referentielVersion).selectResult(queryCriterion, connection, pageSize, offset); } catch (Exception ex) { ex.printStackTrace(); throw new ApplicationServerException(ex.getMessage()); } } private FdxApiTable table(String codeTypeFichier, String referentielVersion) { return new FdxApiTable(codeTypeFichier, referentielVersion); } private PageData getPageData(Connection connection, String codeTypeFichier, String referentielVersion, QueryCriterion queryCriterion, int pageNumber, int pageSize) { try { SelectQueryResult result = selectResult(connection, codeTypeFichier, referentielVersion, queryCriterion, pageNumber, pageSize); List> loadedData = FdxTableUtils.fdxTableRowToListMap(result.rows()); long totalNumberOfElements = table(codeTypeFichier, referentielVersion).count(queryCriterion, connection); PageData pageData = new PageData(); pageData.setLoadedData(loadedData); pageData.setPageNumber(pageNumber); pageData.setPageSize(pageSize); pageData.setTotalNumberOfElements(totalNumberOfElements); return pageData; } catch (Exception ex) { throw new ApplicationServerException(ex.getMessage()); } } }