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);
|
}
|
|
}
|