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/camel/CamelBootstrap.java |  157 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 157 insertions(+), 0 deletions(-)

diff --git a/apifdxweb/api/apifdxweb-service-impl/src/main/java/com/megatim/apifdxweb/service/impl/camel/CamelBootstrap.java b/apifdxweb/api/apifdxweb-service-impl/src/main/java/com/megatim/apifdxweb/service/impl/camel/CamelBootstrap.java
new file mode 100644
index 0000000..6f4c660
--- /dev/null
+++ b/apifdxweb/api/apifdxweb-service-impl/src/main/java/com/megatim/apifdxweb/service/impl/camel/CamelBootstrap.java
@@ -0,0 +1,157 @@
+package com.megatim.apifdxweb.service.impl.camel;
+
+import com.megatim.apifdxweb.service.impl.camel.config.CamelRouteConfiguration;
+import com.megatim.apifdxweb.service.impl.camel.routes.in.FichierIntegrationLocalRoute;
+import com.megatim.apifdxweb.service.impl.camel.routes.in.FichierIntegrationRemoteRoute;
+import com.megatim.apifdxweb.service.impl.camel.routes.out.FdxStandaloneRoute;
+import com.megatim.apifdxweb.service.impl.camel.routes.out.FileIntegrationRoute;
+import com.megatim.apifdxweb.service.impl.camel.routes.in.TokenAuthentificationRoute;
+import com.megatim.apifdxweb.service.impl.camel.routes.in.ReferentielIntegrationLocalRoute;
+import com.megatim.apifdxweb.service.impl.camel.routes.in.ReferentielIntegrationRemoteRoute;
+import com.megatim.apifdxweb.service.impl.camel.routes.in.UserActionsRoute;
+import com.megatim.apifdxweb.service.impl.camel.routes.timers.DataIntegrationTimerRoute;
+import com.megatim.apifdxweb.service.impl.camel.routes.timers.DeleteConsumedFilesTimer;
+import com.megatim.apifdxweb.service.impl.camel.routes.timers.DeleteExpiredTokensTimer;
+import com.megatim.apifdxweb.service.impl.camel.routes.timers.MergeTypeFichierBatchDataTimer;
+import com.megatim.apifdxweb.tools.AppContext;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import javax.ejb.Singleton;
+import javax.ejb.Startup;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.naming.NamingException;
+import javax.sql.DataSource;
+import org.apache.camel.cdi.CdiCamelConfiguration;
+import org.apache.camel.cdi.CdiCamelContext;
+import org.apache.camel.component.jdbc.JdbcComponent;
+import org.apache.camel.component.rabbitmq.RabbitMQComponent;
+
+@Singleton
+@Startup
+public class CamelBootstrap {
+
+    @Inject
+    private CdiCamelContext camelContext;
+
+    @Resource(lookup = AppContext.JNDI_NAME)
+    private DataSource dataSource;
+
+    @Inject
+    private FdxStandaloneRoute fdxStandaloneRoute;
+
+    @Inject
+    private FileIntegrationRoute fileIntegrationRoute;
+
+    @Inject
+    private TokenAuthentificationRoute tokenAuthentificationRoute;
+
+    @Inject
+    private UserActionsRoute userActionsRoute;
+
+    @Inject
+    private FichierIntegrationLocalRoute fichierIntegrationLocalRoute;
+
+    @Inject
+    private ReferentielIntegrationLocalRoute referentielIntegrationLocalRoute;
+
+    @Inject
+    private FichierIntegrationRemoteRoute fichierIntegrationRemoteRoute;
+
+    @Inject
+    private ReferentielIntegrationRemoteRoute referentielIntegrationRemoteRoute;
+
+    @Inject
+    private DataIntegrationTimerRoute dataIntegrationTimerRoute;
+
+    @Inject
+    private MergeTypeFichierBatchDataTimer mergeBatchDataTimer;
+
+    @Inject
+    private DeleteConsumedFilesTimer deleteConsumedFilesTimer;
+
+    @Inject
+    private DeleteExpiredTokensTimer deleteExpiredTokensTimer;
+
+    @PostConstruct
+    public void init() {
+
+        try {
+
+            addDataSourceToContext();
+            addRabbitMQComponent();
+
+            loadJMSRoutes();
+            loadIntegrationRoutes();
+            loadTimers();
+
+        } catch (Exception ex) {
+            Logger.getLogger(CamelBootstrap.class.getName()).log(Level.SEVERE, null, ex);
+        }
+
+    }
+
+    private void loadIntegrationRoutes() throws Exception {
+
+        CamelRouteConfiguration camelRouteConfiguration = new CamelRouteConfiguration(AppContext.PROPERTY_FILE_PATH);
+        if (camelRouteConfiguration.hasCorrectLocalConfig()) {
+
+            loadLocalIntegrationRoutes();
+
+            if (camelRouteConfiguration.hasCorrectStfpConfig()) {
+                loadRemoteIntegrationRoutes();
+            }
+        }
+
+    }
+
+    private void loadRemoteIntegrationRoutes() throws Exception {
+        camelContext.addRoutes(fichierIntegrationRemoteRoute);
+        camelContext.addRoutes(referentielIntegrationRemoteRoute);
+    }
+
+    private void loadLocalIntegrationRoutes() throws Exception {
+        camelContext.addRoutes(fichierIntegrationLocalRoute);
+        camelContext.addRoutes(referentielIntegrationLocalRoute);
+        camelContext.addRoutes(fdxStandaloneRoute);
+    }
+
+    private void loadJMSRoutes() throws Exception {
+        camelContext.addRoutes(fileIntegrationRoute);
+        camelContext.addRoutes(tokenAuthentificationRoute);
+        camelContext.addRoutes(userActionsRoute);
+    }
+
+    private void loadTimers() throws Exception {
+        camelContext.addRoutes(dataIntegrationTimerRoute);
+        camelContext.addRoutes(mergeBatchDataTimer);
+        camelContext.addRoutes(deleteConsumedFilesTimer);
+        camelContext.addRoutes(deleteExpiredTokensTimer);
+    }
+
+    private void addDataSourceToContext() throws NamingException {
+        JdbcComponent jdbcComponent = new JdbcComponent();
+        jdbcComponent.setDataSource(dataSource);
+        camelContext.addComponent("jdbc", jdbcComponent);
+    }
+
+    private void addRabbitMQComponent() throws NamingException {
+
+        // Add RabbitMQ Component with connection details
+        RabbitMQComponent rabbitMQComponent = new RabbitMQComponent();
+        rabbitMQComponent.setHostname("localhost");
+        rabbitMQComponent.setPortNumber(5672);
+        rabbitMQComponent.setPortNumber(5672);
+        rabbitMQComponent.setUsername("guest");
+        rabbitMQComponent.setPassword("guest");
+
+        camelContext.addComponent("rabbitmq", rabbitMQComponent);
+    }
+
+    public static void configuration(@Observes CdiCamelConfiguration configuration) {
+        configuration.autoConfigureRoutes(false);
+    }
+
+}

--
Gitblit v1.10.0