/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.search.result; import java.util.Iterator; import org.jdom.Document; import org.jdom.Element; public class FacetResultSetXmlCreator { private final RangeFacetResultSetXmlCreator rangeFacetResultSetXmlCreator = new RangeFacetResultSetXmlCreator(); private final TermFacetResultSetXmlCreator termFacetResultSetXmlCreator = new TermFacetResultSetXmlCreator(); private final HistogramFacetResultSetXmlCreator histogramFacetResultSetXmlCreator = new HistogramFacetResultSetXmlCreator(); private final DateHistogramFacetResultSetXmlCreator dateHistogramFacetResultSetXmlCreator = new DateHistogramFacetResultSetXmlCreator(); private final TermsStatsFacetResultSetXmlCreator termsStatsFacetResultSetXmlCreator = new TermsStatsFacetResultSetXmlCreator(); public void addFacetResultXml( Document doc, FacetsResultSet facetsResultSet ) { Element root = doc.getRootElement(); Element facetsNode = new Element( "facets" ); root.addContent( facetsNode ); final Iterator<FacetResultSet> iterator = facetsResultSet.iterator(); while ( iterator.hasNext() ) { final FacetResultSet facetResultSet = iterator.next(); final FacetResultType facetResultType = facetResultSet.getFacetResultType(); switch ( facetResultType ) { case TERMS: addTermFacetResult( facetsNode, (TermsFacetResultSet) facetResultSet ); break; case RANGE: addRangeFacetResult( facetsNode, (RangeFacetResultSet) facetResultSet ); break; case HISTOGRAM: addHistogramFacetResult( facetsNode, (HistogramFacetResultSet) facetResultSet ); break; case DATE_HISTOGRAM: addDateHistogramFacetResult( facetsNode, (DateHistogramFacetResultSet) facetResultSet ); break; case TERMS_STATS: addTermsStatsFacetResult( facetsNode, (TermsStatsFacetResultSet) facetResultSet ); break; } } } private void addTermsStatsFacetResult( final Element facetsRoot, final TermsStatsFacetResultSet facetResultSet ) { facetsRoot.addContent( termsStatsFacetResultSetXmlCreator.create( facetResultSet ) ); } private void addDateHistogramFacetResult( final Element facetsRoot, final DateHistogramFacetResultSet facet ) { facetsRoot.addContent( dateHistogramFacetResultSetXmlCreator.create( facet ) ); } private void addHistogramFacetResult( final Element facetsRoot, final HistogramFacetResultSet facet ) { facetsRoot.addContent( histogramFacetResultSetXmlCreator.create( facet ) ); } private void addRangeFacetResult( final Element facetsRoot, final RangeFacetResultSet facet ) { facetsRoot.addContent( rangeFacetResultSetXmlCreator.create( facet ) ); } private void addTermFacetResult( final Element facetsRoot, final TermsFacetResultSet facet ) { facetsRoot.addContent( termFacetResultSetXmlCreator.create( facet ) ); } }