/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.search.facet.builder;
import org.elasticsearch.search.facet.histogram.HistogramFacetBuilder;
import com.google.common.base.Strings;
import com.enonic.cms.core.search.facet.FacetQueryException;
import com.enonic.cms.core.search.facet.model.HistogramFacetModel;
public class ElasticsearchHistogramFacetBuilder
extends AbstractElasticsearchFacetBuilder
{
final HistogramFacetBuilder build( HistogramFacetModel histogramFacetModel )
{
try
{
histogramFacetModel.validate();
}
catch ( Exception e )
{
throw new FacetQueryException( "Error in histogram-facet definition", e );
}
HistogramFacetBuilder builder = new HistogramFacetBuilder( histogramFacetModel.getName() );
setField( histogramFacetModel, builder );
setInterval( histogramFacetModel, builder );
return builder;
}
private void setInterval( final HistogramFacetModel histogramFacetModel, final HistogramFacetBuilder builder )
{
builder.interval( histogramFacetModel.getInterval() );
}
protected void setField( final HistogramFacetModel histogramFacetModel, final HistogramFacetBuilder builder )
{
final String indexName = histogramFacetModel.getIndex();
if ( !Strings.isNullOrEmpty( histogramFacetModel.getValueIndex() ) )
{
builder.keyField( createNumericFieldName( indexName ) );
builder.valueField( createNumericFieldName( histogramFacetModel.getValueIndex() ) );
}
else
{
builder.field( createNumericFieldName( indexName ) );
}
}
}