package io.sphere.sdk.facets;
import io.sphere.sdk.models.Builder;
import io.sphere.sdk.search.*;
import javax.annotation.Nullable;
import java.util.List;
public final class SelectFacetBuilder<T> extends BaseSelectFacetBuilder<SelectFacetBuilder<T>> implements Builder<SelectFacet<T>> {
private final UntypedSearchModel<T> searchModel;
private SelectFacetBuilder(final String key, final String label, final UntypedSearchModel<T> searchModel) {
super(key, label, DefaultFacetType.SELECT);
this.searchModel = searchModel;
}
@Override
public SelectFacet<T> build() {
return new SelectFacetImpl<>(getKey(), getLabel(), countHidden, getType(), searchModel, multiSelect, matchingAll, selectedValues,
facetResult.orElse(null), threshold.orElse(null), limit.orElse(null));
}
@Override
public SelectFacetBuilder<T> multiSelect(final boolean multiSelect) {
return super.multiSelect(multiSelect);
}
@Override
public SelectFacetBuilder<T> matchingAll(final boolean matchingAll) {
return super.matchingAll(matchingAll);
}
@Override
public SelectFacetBuilder<T> selectedValues(final List<String> selectedValues) {
return super.selectedValues(selectedValues);
}
@Override
public SelectFacetBuilder<T> facetResult(@Nullable final TermFacetResult facetResult) {
return super.facetResult(facetResult);
}
@Override
public SelectFacetBuilder<T> threshold(@Nullable final Long threshold) {
return super.threshold(threshold);
}
@Override
public SelectFacetBuilder<T> limit(@Nullable final Long limit) {
return super.limit(limit);
}
public static <T> SelectFacetBuilder<T> of(final String key, final String label, final TermModel<T, ?> searchModel) {
return new SelectFacetBuilder<>(key, label, searchModel.untyped());
}
public static <T> SelectFacetBuilder<T> of(final SelectFacetImpl<T> facet) {
final SelectFacetBuilder<T> builder = new SelectFacetBuilder<>(facet.getKey(), facet.getLabel(), facet.getSearchModel());
builder.countHidden = facet.isCountHidden();
builder.multiSelect = facet.isMultiSelect();
builder.matchingAll = facet.isMatchingAll();
builder.threshold = facet.getThreshold();
builder.limit = facet.getLimit();
builder.facetResult = facet.getFacetResult();
builder.selectedValues = facet.getSelectedValues();
builder.matchingAll = facet.isMatchingAll();
return builder;
}
@Override
protected SelectFacetBuilder<T> getThis() {
return this;
}
}