/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.search;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.settings.ImmutableSettings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.enonic.cms.core.config.ConfigProperties;
public abstract class AbstractElasticsearchSettingsBuilder
{
final static String ELASTICSEARCH_PROPERTIES_PREFIX = "cms.elasticsearch";
final static String INDEX_PROPERTIES_PREFIX = ELASTICSEARCH_PROPERTIES_PREFIX + ".index";
ConfigProperties configProperties;
private final Logger LOG = LoggerFactory.getLogger( AbstractElasticsearchSettingsBuilder.class );
String subtractPrefixFromProperty( final String property, final String propertyPrefix )
{
return StringUtils.substringAfter( property, propertyPrefix + "." );
}
void populateSettings( final ImmutableSettings.Builder settings, final Map<String, String> propertyMap, final String propertyPrefix )
{
for ( final String property : propertyMap.keySet() )
{
String indexProperyValue = propertyMap.get( property );
indexProperyValue = cleanUpPropertyValue( indexProperyValue );
final String indexPropertyName = subtractPrefixFromProperty( property, propertyPrefix );
LOG.info( "Apply elasticsearch setting: " + indexPropertyName + " = " + indexProperyValue );
settings.put( indexPropertyName, indexProperyValue );
}
}
private String cleanUpPropertyValue( String indexProperyValue )
{
indexProperyValue = Strings.trimLeadingWhitespace( indexProperyValue );
indexProperyValue = Strings.trimTrailingWhitespace( indexProperyValue );
return indexProperyValue;
}
@Autowired
public void setConfigProperties( final ConfigProperties configProperties )
{
this.configProperties = configProperties;
}
}