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