/** * 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.user.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 UserFacetBuilder { public UserFacetBuilder(UserFacetFactory userFacetFactory) { _userFacetFactory = userFacetFactory; } public Facet build() { MultiValueFacet multiValueFacet = _userFacetFactory.newInstance( _searchContext); multiValueFacet.setFacetConfiguration( buildFacetConfiguration(multiValueFacet)); if (_selectedUsers != null) { multiValueFacet.setValues(_selectedUsers); _searchContext.setAttribute( multiValueFacet.getFieldName(), StringUtil.merge(_selectedUsers)); } 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 setSelectedUsers(String... selectedUsers) { _selectedUsers = selectedUsers; } protected FacetConfiguration buildFacetConfiguration(Facet facet) { FacetConfiguration facetConfiguration = new FacetConfiguration(); facetConfiguration.setFieldName(facet.getFieldName()); facetConfiguration.setLabel("any-user"); facetConfiguration.setOrder("OrderHitsDesc"); facetConfiguration.setStatic(false); facetConfiguration.setWeight(1.1); UserFacetConfiguration userFacetConfiguration = new UserFacetConfigurationImpl(facetConfiguration); userFacetConfiguration.setFrequencyThreshold(_frequencyThreshold); userFacetConfiguration.setMaxTerms(_maxTerms); return facetConfiguration; } private int _frequencyThreshold; private int _maxTerms; private SearchContext _searchContext; private String[] _selectedUsers; private final UserFacetFactory _userFacetFactory; }