All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.commercetools.sunrise.search.facetedsearch.terms.BaseTermFacetedSearchFormSettings Maven / Gradle / Ivy

The newest version!
package com.commercetools.sunrise.search.facetedsearch.terms;

import com.commercetools.sunrise.framework.viewmodels.forms.FormSettings;
import com.commercetools.sunrise.search.facetedsearch.FacetedSearchFormSettings;
import io.sphere.sdk.search.*;
import io.sphere.sdk.search.model.TermFacetSearchModel;
import io.sphere.sdk.search.model.TypeSerializer;
import play.mvc.Http;

import java.util.List;
import java.util.Optional;

public interface BaseTermFacetedSearchFormSettings extends ConfiguredTermFacetedSearchFormSettings, FacetedSearchFormSettings, FormSettings {

    ConfiguredTermFacetedSearchFormSettings configuration();

    @Override
    default TermFacetedSearchExpression buildFacetedSearchExpression(final Http.Context httpContext) {
        final TermFacetExpression facetExpression = buildFacetExpression();
        final List> filterExpressions = buildFilterExpressions(httpContext);
        return TermFacetedSearchExpression.of(facetExpression, filterExpressions);
    }

    @Override
    default TermFacetExpression buildFacetExpression() {
        final TermFacetSearchModel searchModel = TermFacetSearchModel.of(getAttributePath(), TypeSerializer.ofString());
        return searchModel
                .withCountingProducts(isCountDisplayed())
                .allTerms();
    }

    default Optional findFacetResult(final PagedSearchResult pagedSearchResult) {
        final TermFacetExpression facetExpression = buildFacetExpression();
        return Optional.ofNullable(pagedSearchResult.getFacetResult(facetExpression));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy