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-core-impl/src/main/java/com/megatim/apifdxweb/core/impl/helper/DataProductionOperationsImpl.java | 171 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 171 insertions(+), 0 deletions(-)
diff --git a/apifdxweb/api/apifdxweb-core-impl/src/main/java/com/megatim/apifdxweb/core/impl/helper/DataProductionOperationsImpl.java b/apifdxweb/api/apifdxweb-core-impl/src/main/java/com/megatim/apifdxweb/core/impl/helper/DataProductionOperationsImpl.java
new file mode 100644
index 0000000..5afd744
--- /dev/null
+++ b/apifdxweb/api/apifdxweb-core-impl/src/main/java/com/megatim/apifdxweb/core/impl/helper/DataProductionOperationsImpl.java
@@ -0,0 +1,171 @@
+package com.megatim.apifdxweb.core.impl.helper;
+
+import com.megatim.apifdxweb.core.ifaces.helper.DataProductionOperations;
+import com.megatim.apifdxweb.core.ifaces.helper.RoutingChecker;
+import com.megatim.apifdxweb.model.request.UpdateRequest;
+import com.megatim.apifdxweb.tools.AppContext;
+import com.megatim.commons.tools.exceptions.ApplicationServerException;
+import com.megatim.fdxcommons.core.ifaces.helper.DataInMemoryHandler;
+import com.megatim.fdxcommons.model.dataproduction.DataProduction;
+import com.megatim.fdxcommons.model.dataproduction.DataProductionSource;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.tools.database.connection.DBConnection;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.tables.FdxApiTable;
+import com.megatim.fdxcommons.tools.exceptions.CommonRessourceNotFoundException;
+import com.megatim.fdxcommons.tools.utils.CriteriaEntityFromViewToQueryCriterion;
+import java.sql.Connection;
+import java.time.LocalDateTime;
+import java.util.LinkedHashMap;
+import java.util.List;
+import javax.annotation.Resource;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.sql.DataSource;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Dependent
+public class DataProductionOperationsImpl implements DataProductionOperations {
+
+ @Resource(lookup = AppContext.JNDI_NAME)
+ private DataSource dataSource;
+
+ @Inject
+ private DataInMemoryHandler dataInMemoryHandler;
+
+ @Inject
+ private RoutingChecker routingChecker;
+
+ @Override
+ public void saveAll(String codeTypeFichier, List<LinkedHashMap<String, Object>> datas, String connectedParticipant) {
+
+ stopIfProductionNotPermitted(codeTypeFichier, connectedParticipant);
+
+ try ( Connection connection = new DBConnection(dataSource).connection()) {
+ connection.setAutoCommit(false);
+
+ DataProduction dataProduction = newDataProduction(codeTypeFichier, connectedParticipant);
+ table(connection, codeTypeFichier).insert((List<LinkedHashMap<String, Object>>) datas, dataProduction);
+
+ connection.commit();
+ } catch (Exception ex) {
+ throw new ApplicationServerException(ex.getMessage());
+ }
+ }
+
+ @Override
+ public void saveOne(String codeTypeFichier, LinkedHashMap<String, Object> data, String connectedParticipant) {
+
+ stopIfProductionNotPermitted(codeTypeFichier, connectedParticipant);
+
+ try ( Connection connection = new DBConnection(dataSource).connection()) {
+ connection.setAutoCommit(false);
+
+ DataProduction dataProduction = newDataProduction(codeTypeFichier, connectedParticipant);
+ table(connection, codeTypeFichier).insert(data, dataProduction);
+
+ connection.commit();
+ } catch (Exception ex) {
+ throw new ApplicationServerException(ex.getMessage());
+ }
+ }
+
+ @Override
+ public void updateAll(String codeTypeFichier, UpdateRequest updateRequest, String connectedParticipant) {
+
+ stopIfProductionNotPermitted(codeTypeFichier, connectedParticipant);
+
+ try ( Connection connection = new DBConnection(dataSource).connection()) {
+ connection.setAutoCommit(false);
+
+ QueryCriterion queryCriterion = new CriteriaEntityFromViewToQueryCriterion(updateRequest.getCriteriaEntityFromView()).queryCriterion();
+ table(connection, codeTypeFichier).update(updateRequest.getDataToUpdate(), queryCriterion);
+
+ connection.commit();
+ } catch (Exception ex) {
+ throw new ApplicationServerException(ex.getMessage());
+ }
+ }
+
+ @Override
+ public void updateOne(String codeTypeFichier, UpdateRequest updateRequest, String connectedParticipant) {
+
+ stopIfProductionNotPermitted(codeTypeFichier, connectedParticipant);
+
+ try ( Connection connection = new DBConnection(dataSource).connection()) {
+ connection.setAutoCommit(false);
+
+ QueryCriterion queryCriterion = new CriteriaEntityFromViewToQueryCriterion(updateRequest.getCriteriaEntityFromView()).queryCriterion();
+ table(connection, codeTypeFichier).updateOne(updateRequest.getDataToUpdate(), queryCriterion);
+
+ connection.commit();
+ } catch (Exception ex) {
+ throw new ApplicationServerException(ex.getMessage());
+ }
+ }
+
+ @Override
+ public void deleteAll(String codeTypeFichier, CriteriaEntityFromView criterionFromView, String connectedParticipant) {
+
+ stopIfProductionNotPermitted(codeTypeFichier, connectedParticipant);
+
+ try ( Connection connection = new DBConnection(dataSource).connection()) {
+ connection.setAutoCommit(false);
+
+ QueryCriterion queryCriterion = new CriteriaEntityFromViewToQueryCriterion(criterionFromView).queryCriterion();
+ table(connection, codeTypeFichier).delete(queryCriterion);
+
+ connection.commit();
+ } catch (Exception ex) {
+ throw new ApplicationServerException(ex.getMessage());
+ }
+ }
+
+ @Override
+ public void deleteOne(String codeTypeFichier, CriteriaEntityFromView criterionFromView, String connectedParticipant) {
+
+ stopIfProductionNotPermitted(codeTypeFichier, connectedParticipant);
+
+ try ( Connection connection = new DBConnection(dataSource).connection()) {
+ connection.setAutoCommit(false);
+
+ QueryCriterion queryCriterion = new CriteriaEntityFromViewToQueryCriterion(criterionFromView).queryCriterion();
+ table(connection, codeTypeFichier).deleteOne(queryCriterion);
+
+ connection.commit();
+ } catch (Exception ex) {
+ throw new ApplicationServerException(ex.getMessage());
+ }
+ }
+
+ private FdxApiTable table(Connection connection, String codeTypeFichier) {
+ return new FdxApiTable(codeTypeFichier, versionReferentiel(), connection);
+ }
+
+ private DataProduction newDataProduction(String codeTypeFichier, String codeParticipant) {
+ DataProduction dataProduction = new DataProduction();
+ dataProduction.setDateProduction(LocalDateTime.now());
+ dataProduction.setReferentielVersion(versionReferentiel());
+ dataProduction.setCodeTypeFichier(codeTypeFichier);
+ dataProduction.setCodeParticipant(codeParticipant);
+ dataProduction.setSource(DataProductionSource.API);
+
+ return dataProduction;
+ }
+
+ private String versionReferentiel() {
+ return dataInMemoryHandler.getDataInMemory().getReferentielEnCours().getVersion();
+ }
+
+ private void stopIfProductionNotPermitted(String codeTypeFichier, String connectedParticipant) {
+ if (dataInMemoryHandler.getDataInMemory().getReferentielEnCours() == null) {
+ throw new CommonRessourceNotFoundException("Aucun référentiel en cours");
+ }
+ routingChecker.stopIfTypeFichierNotExists(codeTypeFichier, dataInMemoryHandler.getDataInMemory());
+ routingChecker.stopIfNotProducer(codeTypeFichier, dataInMemoryHandler.getDataInMemory(), connectedParticipant);
+ }
+
+}
--
Gitblit v1.10.0