/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.search.result; import java.util.Map; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.search.facet.Facet; import org.elasticsearch.search.facet.Facets; import org.elasticsearch.search.facet.datehistogram.DateHistogramFacet; import org.elasticsearch.search.facet.histogram.HistogramFacet; import org.elasticsearch.search.facet.range.RangeFacet; import org.elasticsearch.search.facet.terms.TermsFacet; import org.elasticsearch.search.facet.termsstats.TermsStatsFacet; public class FacetsResultSetCreator { private final TermFacetResultSetCreator termFacetResultSetCreator = new TermFacetResultSetCreator(); private final RangeFacetResultSetCreator rangeFacetResultSetCreator = new RangeFacetResultSetCreator(); private final HistogramFacetResultSetCreator histogramFacetResultSetCreator = new HistogramFacetResultSetCreator(); private final DateHistogramFacetResultSetCreator dateHistogramFacetResultSetCreator = new DateHistogramFacetResultSetCreator(); private final TermsStatsFacetResultSetCreator termsStatsFacetResultSetCreator = new TermsStatsFacetResultSetCreator(); public FacetsResultSet createResultSet( SearchResponse searchResponse ) { Facets facets = searchResponse.getFacets(); if ( facets == null ) { return null; } FacetsResultSet facetsResultSet = new FacetsResultSet(); final Map<String, Facet> facetsMap = facets.getFacets(); for ( String facetName : facetsMap.keySet() ) { final Facet facet = facetsMap.get( facetName ); if ( facet instanceof TermsFacet ) { facetsResultSet.addFacetResultSet( termFacetResultSetCreator.create( facetName, (TermsFacet) facet ) ); } else if ( facet instanceof RangeFacet ) { facetsResultSet.addFacetResultSet( rangeFacetResultSetCreator.create( facetName, (RangeFacet) facet ) ); } else if ( facet instanceof HistogramFacet ) { facetsResultSet.addFacetResultSet( histogramFacetResultSetCreator.create( facetName, (HistogramFacet) facet ) ); } else if ( facet instanceof DateHistogramFacet ) { facetsResultSet.addFacetResultSet( dateHistogramFacetResultSetCreator.create( facetName, (DateHistogramFacet) facet ) ); } else if ( facet instanceof TermsStatsFacet ) { facetsResultSet.addFacetResultSet( termsStatsFacetResultSetCreator.create( facetName, (TermsStatsFacet) facet ) ); } } return facetsResultSet; } }