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

com.commercetools.sunrise.search.facetedsearch.bucketranges.BucketRangeFacetedSearchFormSettings Maven / Gradle / Ivy

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

import com.commercetools.sunrise.framework.viewmodels.forms.FormSettingsWithOptions;
import com.commercetools.sunrise.search.facetedsearch.FacetedSearchFormSettings;
import io.sphere.sdk.search.*;
import io.sphere.sdk.search.model.FilterRange;
import io.sphere.sdk.search.model.RangeTermFacetSearchModel;
import io.sphere.sdk.search.model.RangeTermFacetedSearchSearchModel;
import io.sphere.sdk.search.model.TypeSerializer;
import play.mvc.Http;

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

import static com.commercetools.sunrise.search.facetedsearch.bucketranges.BucketRangeUtils.optionsToFacetRange;
import static com.commercetools.sunrise.search.facetedsearch.bucketranges.BucketRangeUtils.optionsToFilterRange;

public interface BucketRangeFacetedSearchFormSettings extends ConfiguredBucketRangeFacetedSearchFormSettings, FacetedSearchFormSettings, FormSettingsWithOptions {

    ConfiguredBucketRangeFacetedSearchFormSettings configuration();

    @Override
    default RangeFacetExpression buildFacetExpression() {
        return RangeTermFacetSearchModel.of(getAttributePath(), TypeSerializer.ofString())
                .withCountingProducts(isCountDisplayed())
                .onlyRange(optionsToFacetRange(getOptions()));
    }

    @Override
    default List> buildFilterExpressions(final Http.Context httpContext) {
        final List> selectedRanges = optionsToFilterRange(getAllSelectedOptions(httpContext));
        final RangeTermFacetedSearchSearchModel filterSearchModel = RangeTermFacetedSearchSearchModel.of(getAttributePath());
        final RangeFacetedSearchExpression facetedSearchExpr;
        if (selectedRanges.isEmpty()) {
            facetedSearchExpr = filterSearchModel.allRanges();
        } else if (isMatchingAll()) {
            facetedSearchExpr = filterSearchModel.isBetweenAll(selectedRanges);
        } else {
            facetedSearchExpr = filterSearchModel.isBetweenAny(selectedRanges);
        }
        return facetedSearchExpr.filterExpressions();
    }

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

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy