
io.sphere.sdk.search.model.TermFacetedSearchBaseSearchModel Maven / Gradle / Ivy
The newest version!
package io.sphere.sdk.search.model;
import io.sphere.sdk.models.Base;
import io.sphere.sdk.search.FilterExpression;
import io.sphere.sdk.search.TermFacetedSearchExpression;
import io.sphere.sdk.search.TermFacetExpression;
import java.util.List;
import static java.util.Collections.emptyList;
import static java.util.Collections.singletonList;
/**
* Model to build term facets and filters.
* This class is abstract to force the subclass to select the methods that need to be highlighted and/or extended.
* @param type of the resource
*/
abstract class TermFacetedSearchBaseSearchModel extends Base implements FacetedSearchSearchModel {
protected static final TypeSerializer TYPE_SERIALIZER = TypeSerializer.ofString();
protected final SearchModel searchModel;
private final TermFacetExpression facetExpression;
private final TermFilterSearchModel filterSearchModel;
TermFacetedSearchBaseSearchModel(final SearchModel searchModel) {
this.searchModel = searchModel;
this.facetExpression = new TermFacetSearchModelImpl<>(searchModel, TYPE_SERIALIZER).allTerms();
this.filterSearchModel = new TermFilterSearchModelImpl<>(searchModel, TYPE_SERIALIZER);
}
@Override
public SearchModel getSearchModel() {
return searchModel;
}
/**
* {@inheritDoc}
*/
@Override
public TermFacetedSearchExpression allTerms() {
return buildExpression(emptyList());
}
/**
* {@inheritDoc}
*/
@Override
public TermFacetedSearchExpression is(final String value) {
return containsAny(singletonList(value));
}
/**
* {@inheritDoc}
*/
@Override
public TermFacetedSearchExpression containsAny(final Iterable values) {
return buildExpression(filterSearchModel.containsAnyAsString(values));
}
/**
* {@inheritDoc}
*/
@Override
public TermFacetedSearchExpression containsAll(final Iterable values) {
return buildExpression(filterSearchModel.containsAll(values));
}
private TermFacetedSearchExpression buildExpression(final List> filterExpressions) {
return TermFacetedSearchExpression.of(facetExpression, filterExpressions);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy