/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.search.query.factory; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import com.enonic.cms.core.search.query.IndexQueryException; import com.enonic.cms.core.search.query.QueryField; import com.enonic.cms.core.search.query.QueryFieldAndValue; import com.enonic.cms.core.search.query.QueryValue; public class InQueryBuilderFactory extends BaseQueryBuilderFactory { public QueryBuilder buildInQuery( final QueryField queryField, final QueryValue[] values ) { if ( values == null || values.length == 0 ) { throw new IndexQueryException( "Cannot execute empty 'IN' statements" ); } BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); for ( QueryValue value : values ) { boolQuery.should( new TermQueryBuilderFactory().buildTermQuery( new QueryFieldAndValue( queryField, value ) ) ); } return boolQuery; } }