package nl.ipo.cds.etl.theme.protectedSite.config;
import java.io.IOException;
import java.util.concurrent.Executor;
import javax.inject.Inject;
import javax.sql.DataSource;
import javax.xml.bind.JAXBException;
import nl.ipo.cds.etl.generalization.DefaultGeneralizer;
import nl.ipo.cds.etl.generalization.GeneralizeReader;
import nl.ipo.cds.etl.generalization.GeneralizeWriter;
import nl.ipo.cds.etl.generalization.GeneralizerConfig;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
import org.springframework.core.io.ClassPathResource;
import org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor;
@Configuration
public class GeneralizationConfig {
@Bean
public GeneralizerConfig generalizerConfig () throws IOException, JAXBException {
final GeneralizerConfig config = new GeneralizerConfig ();
config.setConfigResource (new ClassPathResource ("nl/ipo/cds/etl/protectedSite/config/generalize.xml"));
return config;
}
@Bean
@Scope (ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public DefaultGeneralizer generalizer () {
final DefaultGeneralizer generalizer = new DefaultGeneralizer ();
return generalizer;
}
@Bean
@Scope (ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public GeneralizeWriter generalizeWriter () {
final GeneralizeWriter writer = new GeneralizeWriter ();
writer.setNativeJdbcExtractorAdapter (new CommonsDbcpNativeJdbcExtractor ());
return writer;
}
@Bean
@Inject
public GeneralizeReader generalizeReader (final DataSource dataSource, final GeneralizerConfig generalizerConfig, final Executor executor) {
final GeneralizeReader reader = new GeneralizeReader ();
reader.setDataSource (dataSource);
reader.setGeneralizerConfig (generalizerConfig);
reader.setExecuter (executor);
return reader;
}
}