
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