From 23a46b4be35277e06ec89f48730eeb694e686be8 Mon Sep 17 00:00:00 2001
From: Kenmegne <stephanie.kenmegne@gmail.com>
Date: Thu, 18 Jun 2026 15:40:06 +0000
Subject: [PATCH] add fdx-commons and fdx-consultation

---
 fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/DataConsumptionOperationsImpl.java |  168 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 168 insertions(+), 0 deletions(-)

diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/DataConsumptionOperationsImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/DataConsumptionOperationsImpl.java
new file mode 100644
index 0000000..86751bf
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/DataConsumptionOperationsImpl.java
@@ -0,0 +1,168 @@
+/*
+ * 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<Map<String, Object>> 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<ColumnDefinition> 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<Map<String, Object>> 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());
+        }
+    }
+
+}

--
Gitblit v1.10.0