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

com.commercetools.sunrise.search.facetedsearch.sliderranges.SliderRangeFacetedSearchFormSettings Maven / Gradle / Ivy

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

import com.commercetools.sunrise.search.facetedsearch.FacetedSearchFormSettings;
import io.sphere.sdk.search.FilterExpression;
import io.sphere.sdk.search.PagedSearchResult;
import io.sphere.sdk.search.RangeFacetExpression;
import io.sphere.sdk.search.RangeFacetedSearchExpression;
import io.sphere.sdk.search.model.RangeTermFacetSearchModel;
import io.sphere.sdk.search.model.RangeTermFacetedSearchSearchModel;
import io.sphere.sdk.search.model.SimpleRangeStats;
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.RangeUtils.parseFilterRange;

public interface SliderRangeFacetedSearchFormSettings extends ConfiguredSliderRangeFacetedSearchFormSettings, FacetedSearchFormSettings {

    ConfiguredSliderRangeFacetedSearchFormSettings configuration();

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

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

    @Override
    default List> buildFilterExpressions(final Http.Context httpContext) {
        final RangeTermFacetedSearchSearchModel searchModel = RangeTermFacetedSearchSearchModel.of(getAttributePath());
        return parseFilterRange(
                getLowerEndpointSettings().getSelectedValueOrDefault(httpContext),
                getUpperEndpointSettings().getSelectedValueOrDefault(httpContext))
                .map(searchModel::isBetween)
                .orElseGet(searchModel::allRanges).filterExpressions();
    }

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy