Package fr.ippon.tatami.config

Source Code of fr.ippon.tatami.config.SearchConfiguration

package fr.ippon.tatami.config;

import fr.ippon.tatami.service.elasticsearch.ElasticsearchEngine;
import fr.ippon.tatami.service.elasticsearch.EmbeddedElasticsearchEngine;
import fr.ippon.tatami.service.elasticsearch.RemoteElasticsearchEngine;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;

import javax.inject.Inject;

import static fr.ippon.tatami.config.Constants.EMBEDDED_ENGINE;
import static fr.ippon.tatami.config.Constants.REMOTE_ENGINE;

/**
* Search configuration, with Elastic Search.
*/
@Configuration
public class SearchConfiguration {

    private final Logger log = LoggerFactory.getLogger(SearchConfiguration.class);

    @Inject
    private Environment env;

    @Bean
    public ElasticsearchEngine elasticsearchEngine() {
        log.info("Starting Elasticsearch");
        String mode = env.getRequiredProperty("elasticsearch.engine.mode");
        if (REMOTE_ENGINE.equalsIgnoreCase(mode)) {
            return new RemoteElasticsearchEngine();
        } else if (EMBEDDED_ENGINE.equalsIgnoreCase(mode)) {
            return new EmbeddedElasticsearchEngine();
        } else {
            //Log do not support log.fatal
            log.error("Elasticsearch engine mode is not defined, please configure the \"elasticsearch.engine.mode\" property");
            throw new IllegalArgumentException("Elasticsearch engine mode " + mode + " not defined");
        }
    }

    @Bean
    public String indexNamePrefix() {
        return env.getProperty("elasticsearch.indexNamePrefix");
    }
}
TOP

Related Classes of fr.ippon.tatami.config.SearchConfiguration

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.