
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