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

org.molgenis.data.elasticsearch.config.EmbeddedElasticSearchConfig Maven / Gradle / Ivy

The newest version!
package org.molgenis.data.elasticsearch.config;

import java.io.File;
import java.util.Collections;

import org.elasticsearch.common.logging.ESLoggerFactory;
import org.elasticsearch.common.logging.slf4j.Slf4jESLoggerFactory;
import org.molgenis.data.DataService;
import org.molgenis.data.elasticsearch.ElasticsearchEntityFactory;
import org.molgenis.data.elasticsearch.ElasticsearchService;
import org.molgenis.data.elasticsearch.SearchService;
import org.molgenis.data.elasticsearch.factory.EmbeddedElasticSearchServiceFactory;
import org.molgenis.data.transaction.MolgenisTransactionManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Spring config for embedded elastic search server. Use this in your own app by importing this in your spring config:
 *  @Import(EmbeddedElasticSearchConfig.class)
 * 
 * @author erwin
 * 
 */
@Configuration
public class EmbeddedElasticSearchConfig
{
	static
	{
		// force Elasticsearch to use slf4j instead of default log4j logging
		ESLoggerFactory.setDefaultFactory(new Slf4jESLoggerFactory());
	}

	@Autowired
	private DataService dataService;

	@Autowired
	private ElasticsearchEntityFactory elasticsearchEntityFactory;

	@Autowired
	public MolgenisTransactionManager molgenisTransactionManager;

	@Bean(destroyMethod = "close")
	public EmbeddedElasticSearchServiceFactory embeddedElasticSearchServiceFactory()
	{
		// get molgenis home directory
		String molgenisHomeDir = System.getProperty("molgenis.home");
		if (molgenisHomeDir == null)
		{
			throw new IllegalArgumentException("missing required java system property 'molgenis.home'");
		}
		if (!molgenisHomeDir.endsWith("/")) molgenisHomeDir = molgenisHomeDir + '/';

		// create molgenis data directory if not exists
		String molgenisDataDirStr = molgenisHomeDir + "data";
		File molgenisDataDir = new File(molgenisDataDirStr);
		if (!molgenisDataDir.exists())
		{
			if (!molgenisDataDir.mkdir())
			{
				throw new RuntimeException("failed to create directory: " + molgenisDataDirStr);
			}
		}

		return new EmbeddedElasticSearchServiceFactory(Collections.singletonMap("path.data", molgenisDataDirStr));
	}

	@Bean
	public SearchService searchService()
	{
		ElasticsearchService elasticSearchService = embeddedElasticSearchServiceFactory().create(dataService,
				elasticsearchEntityFactory);
		molgenisTransactionManager.addTransactionListener(elasticSearchService);

		return elasticSearchService;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy