/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.portal.search.web.internal.folder.facet.portlet; import com.liferay.portal.kernel.search.SearchContext; import com.liferay.portal.kernel.search.facet.Facet; import com.liferay.portal.kernel.search.facet.MultiValueFacet; import com.liferay.portal.kernel.search.facet.config.FacetConfiguration; import com.liferay.portal.kernel.util.StringUtil; /** * @author Lino Alves */ public class FolderFacetBuilder { public FolderFacetBuilder(FolderFacetFactory folderFacetFactory) { _folderFacetFactory = folderFacetFactory; } public Facet build() { MultiValueFacet multiValueFacet = _folderFacetFactory.newInstance( _searchContext); multiValueFacet.setFacetConfiguration( buildFacetConfiguration(multiValueFacet)); if (_selectedFolders != null) { multiValueFacet.setValues(_selectedFolders); _searchContext.setAttribute( multiValueFacet.getFieldName(), StringUtil.merge(_selectedFolders)); _searchContext.setFolderIds(_selectedFolders); } return multiValueFacet; } public void setFrequencyThreshold(int frequencyThreshold) { _frequencyThreshold = frequencyThreshold; } public void setMaxTerms(int maxTerms) { _maxTerms = maxTerms; } public void setSearchContext(SearchContext searchContext) { _searchContext = searchContext; } public void setSelectedFolders(long... selectedFolders) { _selectedFolders = selectedFolders; } protected FacetConfiguration buildFacetConfiguration(Facet facet) { FacetConfiguration facetConfiguration = new FacetConfiguration(); facetConfiguration.setFieldName(facet.getFieldName()); facetConfiguration.setLabel("any-folder"); facetConfiguration.setOrder("OrderHitsDesc"); facetConfiguration.setStatic(false); facetConfiguration.setWeight(1.4); FolderFacetConfiguration folderFacetConfiguration = new FolderFacetConfigurationImpl(facetConfiguration); folderFacetConfiguration.setFrequencyThreshold(_frequencyThreshold); folderFacetConfiguration.setMaxTerms(_maxTerms); return facetConfiguration; } private final FolderFacetFactory _folderFacetFactory; private int _frequencyThreshold; private int _maxTerms; private SearchContext _searchContext; private long[] _selectedFolders; }