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/TypeFichierDataTmpJobImpl.java | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 119 insertions(+), 0 deletions(-)
diff --git a/apifdxweb/api/apifdxweb-service-impl/src/main/java/com/megatim/apifdxweb/service/impl/scheduler/TypeFichierDataTmpJobImpl.java b/apifdxweb/api/apifdxweb-service-impl/src/main/java/com/megatim/apifdxweb/service/impl/scheduler/TypeFichierDataTmpJobImpl.java
new file mode 100644
index 0000000..da11d28
--- /dev/null
+++ b/apifdxweb/api/apifdxweb-service-impl/src/main/java/com/megatim/apifdxweb/service/impl/scheduler/TypeFichierDataTmpJobImpl.java
@@ -0,0 +1,119 @@
+package com.megatim.apifdxweb.service.impl.scheduler;
+
+import com.megatim.apifdxweb.core.ifaces.tmp.TokenTmpManager;
+import com.megatim.apifdxweb.core.ifaces.tmp.TypeFichierDataTmpManager;
+import com.megatim.apifdxweb.model.tmp.StatutTmp;
+import com.megatim.apifdxweb.model.tmp.TokenTmp;
+import com.megatim.apifdxweb.model.tmp.TypeFichierDataTmp;
+import com.megatim.apifdxweb.service.ifaces.scheduler.TypeFichierDataTmpJob;
+import com.megatim.apifdxweb.tools.AppContext;
+import com.megatim.fdxcommons.core.ifaces.helper.DataInMemoryHandler;
+import com.megatim.fdxcommons.model.dataproduction.DataProduction;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.transaction.Transactional;
+import com.megatim.fdxcommons.model.dataproduction.DataProductionSource;
+import com.megatim.fdxcommons.tools.database.connection.DBConnection;
+import com.megatim.fdxcommons.tools.database.tables.FdxApiTable;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.time.LocalDateTime;
+import javax.annotation.Resource;
+import javax.naming.NamingException;
+import javax.sql.DataSource;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class TypeFichierDataTmpJobImpl implements TypeFichierDataTmpJob {
+
+ @Inject
+ private TokenTmpManager tokenTmpManager;
+
+ @Inject
+ private TypeFichierDataTmpManager dataTmpManager;
+
+ @Inject
+ private DataInMemoryHandler dataInMemoryHandler;
+
+ @Resource(lookup = AppContext.JNDI_NAME)
+ private DataSource dataSource;
+
+ @Override
+ public void mergeData() {
+ List<TokenTmp> tokens = tokenTmpManager.getByStatutTmp(StatutTmp.ACHEVE);
+ tokens.stream().forEach(t -> {
+ try {
+ List<LinkedHashMap<String, Object>> data = dataTmpManager.getByStructuredLines(t.getToken(), t.getCodeTypeFichier());
+ updateDatabase(data, t);
+ } catch (Exception ex) {
+ Logger.getLogger(TypeFichierDataTmpJobImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ });
+ }
+
+ @Override
+ @Transactional
+ public void deleteExpiredTokens() {
+ List<TokenTmp> tokenExpired = tokenTmpManager.getExpiredToken();
+
+ for (TokenTmp t : tokenExpired) {
+ List<TypeFichierDataTmp> data = dataTmpManager.getByToken(t.getToken());
+ for (TypeFichierDataTmp d : data) {
+ dataTmpManager.delete(d);
+ }
+ tokenTmpManager.delete(t);
+ }
+ }
+
+ @Transactional
+ private void updateDatabase(List<LinkedHashMap<String, Object>> data, TokenTmp tokenTmp) throws Exception {
+ insert(tokenTmp.getCodeTypeFichier(),
+ dataInMemoryHandler.getDataInMemory().getReferentielEnCours().getVersion(),
+ data,
+ tokenTmp.getCodeParticipant());
+
+ deleteTokenTmp(tokenTmp);
+ }
+
+ private void insert(String codeTypeFichier, String referentielVersion, List<LinkedHashMap<String, Object>> data, String connectedParticipant) throws SQLException, NamingException, Exception {
+ DataProduction dataProduction = newDataProduction(codeTypeFichier, connectedParticipant, referentielVersion);
+
+ try ( Connection connection = new DBConnection(dataSource).connection()) {
+ connection.setAutoCommit(false);
+
+ new FdxApiTable(codeTypeFichier,
+ referentielVersion,
+ connection)
+ .insert(data, dataProduction);
+ connection.commit();
+ }
+
+ }
+
+ private void deleteTokenTmp(TokenTmp tokenTmp) {
+ List<TypeFichierDataTmp> dataTmp = dataTmpManager.getByToken(tokenTmp.getToken());
+ for (TypeFichierDataTmp td : dataTmp) {
+ dataTmpManager.delete(td);
+ }
+ TokenTmp t = tokenTmpManager.getById(tokenTmp.getToken());
+ tokenTmpManager.delete(t);
+ }
+
+ private DataProduction newDataProduction(String codeTypeFichier, String codeParticipant, String referentielVersion) {
+ DataProduction dataProduction = new DataProduction();
+ dataProduction.setDateProduction(LocalDateTime.now());
+ dataProduction.setReferentielVersion(referentielVersion);
+ dataProduction.setCodeTypeFichier(codeTypeFichier);
+ dataProduction.setCodeParticipant(codeParticipant);
+ dataProduction.setSource(DataProductionSource.API);
+
+ return dataProduction;
+ }
+}
--
Gitblit v1.10.0