All Downloads are FREE. Search and download functionalities are using the official Maven repository.

be.vlaanderen.informatievlaanderen.ldes.ldio.config.LdioAmqpOutAutoConfig Maven / Gradle / Ivy

package be.vlaanderen.informatievlaanderen.ldes.ldio.config;

import be.vlaanderen.informatievlaanderen.ldes.ldi.rdf.formatter.LdiRdfWriter;
import be.vlaanderen.informatievlaanderen.ldes.ldi.rdf.formatter.LdiRdfWriterProperties;
import be.vlaanderen.informatievlaanderen.ldes.ldi.types.LdiComponent;
import be.vlaanderen.informatievlaanderen.ldes.ldio.LdioAmqpOut;
import be.vlaanderen.informatievlaanderen.ldes.ldio.pipeline.creation.valueobjects.ComponentProperties;
import be.vlaanderen.informatievlaanderen.ldes.ldio.pipeline.creation.LdioOutputConfigurator;
import org.apache.qpid.jms.JmsConnectionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.core.JmsTemplate;

import static be.vlaanderen.informatievlaanderen.ldes.ldi.rdf.formatter.LdiRdfWriterProperties.RDF_WRITER;
import static be.vlaanderen.informatievlaanderen.ldes.ldio.config.AmqpConfig.*;

@Configuration
public class LdioAmqpOutAutoConfig {

    @SuppressWarnings("java:S6830")
    @Bean(LdioAmqpOut.NAME)
    public LdioJmsOutConfigurator ldioConfigurator() {
        return new LdioJmsOutConfigurator();
    }

    public static class LdioJmsOutConfigurator implements LdioOutputConfigurator {

        @Override
        public LdiComponent configure(ComponentProperties config) {
            final var pipelineName = config.getPipelineName();
            final var remoteUrl = new RemoteUrlExtractor(config).getRemoteUrl();
            final var connectionFactory =
                    new JmsConnectionFactory(config.getProperty(USERNAME), config.getProperty(PASSWORD), remoteUrl);
            final var jmsTemplate = new JmsTemplate(connectionFactory);
            final var rdfWriter = LdiRdfWriter.getRdfWriter(
                    new LdiRdfWriterProperties(config.extractNestedProperties(RDF_WRITER).getConfig())
            );
            return new LdioAmqpOut(config.getProperty(QUEUE), jmsTemplate, pipelineName, rdfWriter);
        }

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy