package com.megatim.apifdxweb.service.impl.camel.routes.out;
|
|
import com.megatim.apifdxweb.tools.AppContext;
|
import com.megatim.fdxcommons.model.dataproduction.DataProduction;
|
import com.megatim.fdxcommons.model.enumeration.StatutDataProduction;
|
import com.megatim.fdxcommons.tools.integration.FdxConsultationIntegrationData;
|
import com.megatim.fdxcommons.tools.integration.dto.FdxConsultationIntegrationDataDto;
|
import com.megatim.fdxcommons.tools.resolvers.JacksonMapperFormat;
|
import java.time.LocalDateTime;
|
import javax.enterprise.context.ApplicationScoped;
|
import org.apache.camel.builder.RouteBuilder;
|
import org.apache.camel.jta.JtaTransactionErrorHandlerBuilder;
|
|
/**
|
*
|
* @author lenovo
|
*/
|
@ApplicationScoped
|
public class FileIntegrationRoute extends RouteBuilder {
|
|
@Override
|
public void configure() throws Exception {
|
|
JtaTransactionErrorHandlerBuilder transactionErrorHandler = new JtaTransactionErrorHandlerBuilder();
|
errorHandler(transactionErrorHandler);
|
|
onException(Exception.class)
|
.handled(true)
|
.log("Exception occured: ${exception.message}")
|
.logStackTrace(true)
|
.end();
|
|
from("direct:" + AppContext.DATA_TO_API_DIRECT)
|
.transacted()
|
.marshal(JacksonMapperFormat.jacksonDataFormat(FdxConsultationIntegrationDataDto.class))
|
.to("rabbitmq:"
|
+ com.megatim.fdxcommons.tools.context.AppContext.DATA_INTEGRATION_EXCHANGE
|
+ "?queue=" + com.megatim.fdxcommons.tools.context.AppContext.DATA_INTEGRATION_QUEUE
|
+ "&routingKey=" + com.megatim.fdxcommons.tools.context.AppContext.DATA_INTEGRATION_ROUTING_KEY
|
+ "&autoDelete=false")
|
.unmarshal(JacksonMapperFormat.jacksonDataFormat(FdxConsultationIntegrationDataDto.class))
|
.process(ex -> {
|
|
FdxConsultationIntegrationDataDto dto = ex.getIn().getBody(FdxConsultationIntegrationDataDto.class);
|
FdxConsultationIntegrationData integrationData = new FdxConsultationIntegrationData(dto.getRows(), dto.getDataProduction());
|
ex.getIn().setHeader("id", integrationData.getDataProduction().getId());
|
ex.getIn().setHeader("statutDataProduction", StatutDataProduction.CONSOMME.name());
|
ex.getIn().setHeader("dateMiseAJour", LocalDateTime.now());
|
|
String query = "UPDATE " + DataProduction.class.getSimpleName().toLowerCase()
|
+ " SET statutDataProduction= :?statutDataProduction, dateMiseAJour = :?dateMiseAJour"
|
+ " WHERE id = :?id";
|
|
ex.getIn().setBody(query);
|
})
|
.to("jdbc:datasource?useHeadersAsParameters=true&resetAutoCommit=false")
|
.end();
|
}
|
|
}
|