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

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

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

import io.sphere.sdk.search.FilterExpression;
import io.sphere.sdk.search.TermFacetedSearchExpression;
import io.sphere.sdk.search.model.FacetedSearchSearchModel;
import io.sphere.sdk.search.model.TermFacetedSearchSearchModel;
import play.mvc.Http;

import javax.annotation.Nullable;
import java.util.List;
import java.util.Optional;

public interface TermFacetedSearchFormSettings extends ConfiguredTermFacetedSearchFormSettings, BaseTermFacetedSearchFormSettings {

    ConfiguredTermFacetedSearchFormSettings configuration();

    @Override
    default Optional mapFieldValueToValue(final String fieldValue) {
        return Optional.of(fieldValue);
    }

    @Override
    default boolean isValidValue(@Nullable final String value) {
        return value != null && !value.trim().isEmpty();
    }

    @Override
    default List> buildFilterExpressions(final Http.Context httpContext) {
        final List selectedValues = getAllSelectedValues(httpContext);
        final FacetedSearchSearchModel searchModel = TermFacetedSearchSearchModel.of(getAttributePath());
        final TermFacetedSearchExpression facetedSearchExpr;
        if (selectedValues.isEmpty()) {
            facetedSearchExpr = searchModel.allTerms();
        } else if (isMatchingAll()) {
            facetedSearchExpr = searchModel.containsAll(selectedValues);
        } else {
            facetedSearchExpr = searchModel.containsAny(selectedValues);
        }
        return facetedSearchExpr.filterExpressions();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy