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

---
 apifdxweb/api/apifdxweb-service-impl/src/main/java/com/megatim/apifdxweb/service/impl/scheduler/TypeFichierDataJobImpl.java |  136 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 136 insertions(+), 0 deletions(-)

diff --git a/apifdxweb/api/apifdxweb-service-impl/src/main/java/com/megatim/apifdxweb/service/impl/scheduler/TypeFichierDataJobImpl.java b/apifdxweb/api/apifdxweb-service-impl/src/main/java/com/megatim/apifdxweb/service/impl/scheduler/TypeFichierDataJobImpl.java
new file mode 100644
index 0000000..68e6f66
--- /dev/null
+++ b/apifdxweb/api/apifdxweb-service-impl/src/main/java/com/megatim/apifdxweb/service/impl/scheduler/TypeFichierDataJobImpl.java
@@ -0,0 +1,136 @@
+package com.megatim.apifdxweb.service.impl.scheduler;
+
+import com.megatim.apifdxweb.core.ifaces.helper.ApiRequestDataExporter;
+import com.megatim.apifdxweb.core.ifaces.dataproduction.DataProductionManager;
+import com.megatim.apifdxweb.tools.AppContext;
+import com.megatim.fdxcommons.tools.utils.CustomColumns;
+import com.megatim.fdxcommons.tools.integration.FdxConsultationIntegrationData;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import com.megatim.apifdxweb.service.ifaces.scheduler.TypeFichierDataJob;
+import com.megatim.apifdxweb.service.impl.camel.config.CamelRouteConfiguration;
+import com.megatim.fdxcommons.model.dataproduction.DataProduction;
+import com.megatim.fdxcommons.model.dataproduction.DataProductionSource;
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.StatutDataProduction;
+import com.megatim.fdxcommons.model.searchentities.DataProductionSearch;
+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.DataProductionIdColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.FdxApiTable;
+import com.megatim.fdxcommons.tools.integration.dto.FdxConsultationIntegrationDataDto;
+import java.util.Arrays;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.cdi.CdiCamelContext;
+import com.megatim.fdxcommons.tools.mappers.FdxTableMapper;
+import java.io.IOException;
+import java.sql.Connection;
+import java.util.List;
+import javax.annotation.Resource;
+import javax.sql.DataSource;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class TypeFichierDataJobImpl implements TypeFichierDataJob {
+
+    @Resource(lookup = AppContext.JNDI_NAME)
+    private DataSource dataSource;
+
+    @Inject
+    private DataProductionManager dataProductionManager;
+
+    @Inject
+    private CdiCamelContext camelContext;
+
+    @Inject
+    private ApiRequestDataExporter dataExporter;
+
+    @Inject
+    private FdxTableMapper fdxTableMapper;
+
+    @Override
+    public void publishData() {
+
+        List<DataProduction> dataProductions = dataProductionsToPublish();
+
+        for (DataProduction d : dataProductions) {
+            QueryCriterion queryCriterion = constructQueryCriterion(d);
+
+            try ( Connection connection = new DBConnection(dataSource).connection()) {
+                SelectQueryResult result = new FdxApiTable(
+                        d.getCodeTypeFichier(),
+                        d.getReferentielVersion(),
+                        connection
+                ).selectResultWithAllColumns(queryCriterion);
+                FdxConsultationIntegrationData integrationData = new FdxConsultationIntegrationData(fdxTableMapper.fdxTableRowListToFdxTableRowDtoList(result.rows()), d);
+
+                if (!integrationData.getRows().isEmpty()) {
+                    System.out.println("********************dataProduction Id " + integrationData.getDataProduction().getId() + " rows to send " + integrationData.getRows().size());
+                    sendData(integrationData);
+                    System.out.println("****************************Really send " + integrationData.getDataProduction().getId());
+                }
+            } catch (Exception ex) {
+                Logger.getLogger(TypeFichierDataJobImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+                throw new com.megatim.commons.tools.exceptions.ApplicationServerException(ex.getMessage());
+            }
+        }
+
+    }
+
+    private QueryCriterion constructQueryCriterion(DataProduction d) {
+
+        if (d.getDateMiseAJour() == null) {
+            return new QueryCriterion(new DataProductionIdColumnDefinition().name(),
+                    d.getId(),
+                    Operateur.EQUALS,
+                    null,
+                    Arrays.asList());
+        } else {
+            return new QueryCriterion(null, null, null, CriteriaLogicConnector.AND,
+                    Arrays.asList(new QueryCriterion(new DataProductionIdColumnDefinition().name(),
+                            d.getId(),
+                            Operateur.EQUALS,
+                            null,
+                            Arrays.asList()),
+                            new QueryCriterion(CustomColumns.DATE_ACTION_COLUMN,
+                                    d.getDateMiseAJour(),
+                                    Operateur.EQUALS,
+                                    null,
+                                    Arrays.asList())
+                    ));
+        }
+    }
+
+    private void sendData(FdxConsultationIntegrationData integrationData) throws IOException {
+        System.out.println("*************************PRODUCING DATA FOR FILE " + integrationData.getDataProduction().getCodeTypeFichier());
+
+        if (integrationData.getDataProduction().getSource().equals(DataProductionSource.API)) {
+            String standaloneTmpDir
+                    = new CamelRouteConfiguration(AppContext.PROPERTY_FILE_PATH)
+                            .standaloneTmpDir();
+            dataExporter.export(integrationData, standaloneTmpDir);
+        }
+
+        ProducerTemplate producerTemplate = camelContext.createProducerTemplate();
+        producerTemplate.sendBody("direct:" + AppContext.DATA_TO_API_DIRECT,
+                new FdxConsultationIntegrationDataDto(integrationData.getRows(), integrationData.getDataProduction()));
+
+    }
+
+    private List<DataProduction> dataProductionsToPublish() {
+        DataProductionSearch searchEntity = new DataProductionSearch();
+        searchEntity.setStatutDataProduction(StatutDataProduction.A_CONSOMMER);
+
+        List<DataProduction> dataProductions = dataProductionManager.getAll(searchEntity);
+
+        return dataProductions;
+
+    }
+}

--
Gitblit v1.10.0