
io.sphere.client.facets.FacetExpr Maven / Gradle / Ivy
package io.sphere.client.facets;
import com.google.common.collect.Range;
import io.sphere.client.facets.expressions.FacetExpressions.*;
import io.sphere.internal.util.SearchUtil.Names;
import org.joda.time.DateTime;
import java.math.BigDecimal;
import static io.sphere.internal.util.ListUtil.list;
/** Convenience DSL for creating facet expressions.
*
*
* Example:
*
{@code
*FacetExpr.stringAttribute("color").termsMultiSelect("blue", "green")
*}
* */
public final class FacetExpr {
private FacetExpr() {}
/** Requests facet counts for the categories attribute to be calculated. */
public static CategoriesDSL categories = new CategoriesDSL();
public static class CategoriesDSL {
/** Counts occurrences of each distinct category found in the result set. */
public Terms terms() { return new Terms(Names.categories); }
/** Counts occurrences of each distinct category and filters the result set by selected values. */
public Categories.TermsMultiSelect termsMultiSelect(String selectedCategoryId, String... selectedCategoryIds) {
return termsMultiSelect(list(selectedCategoryId, selectedCategoryIds));
}
/** Counts occurrences of each distinct category and filters the result set by selected values. */
public Categories.TermsMultiSelect termsMultiSelect(Iterable selectedCategoryIds) {
return new Categories.TermsMultiSelect(selectedCategoryIds);
}
}
/** Requests facet counts for a custom string attribute to be calculated. */
public static StringAttrDSL stringAttribute(String name) { return new StringAttrDSL(name); }
public static class StringAttrDSL {
private final String name;
public StringAttrDSL(String name) { this.name = name; }
/** Counts occurrences of each distinct value found in the result set. */
public Terms terms() { return new Terms(name); }
/** Counts occurrences of each distinct value and filters the result set by selected values. */
public StringAttribute.TermsMultiSelect termsMultiSelect(String selectedValue, String... selectedValues) {
return termsMultiSelect(list(selectedValue, selectedValues));
}
/** Counts occurrences of each distinct value and filters the result set by selected values. */
public StringAttribute.TermsMultiSelect termsMultiSelect(Iterable selectedValues) {
return new StringAttribute.TermsMultiSelect(name, selectedValues);
}
@Override
public String toString() {
return "StringAttrDSL{" +
"name='" + name + '\'' +
'}';
}
}
/** Requests facet counts for a custom number attribute to be calculated. */
public static NumberAttrDSL numberAttribute(String name) { return new NumberAttrDSL(name); }
public static class NumberAttrDSL {
private final String name;
public NumberAttrDSL(String name) { this.name = name; }
/** Counts occurrences of each distinct value found in the result set. */
public Terms terms() { return new Terms(name); }
/** Counts occurrences of each distinct value and filters the result set by selected values. */
public NumberAttribute.TermsMultiSelect termsMultiSelect(Double selectedValue, Double... selectedValues) {
return termsMultiSelect(list(selectedValue, selectedValues));
}
/** Counts occurrences of each distinct value and filters the result set by selected values. */
public NumberAttribute.TermsMultiSelect termsMultiSelect(Iterable selectedValues) {
return new NumberAttribute.TermsMultiSelect(name, selectedValues);
}
/** For each range, counts how many results fall into that range. */
public NumberAttribute.Ranges ranges(Range range, Range... ranges) {
return ranges(list(range, ranges));
}
/** For each range, counts how many results fall into that range. */
public NumberAttribute.Ranges ranges(Iterable> ranges) {
return new NumberAttribute.Ranges(name, ranges);
}
/** For each range, counts how many results fall into that range. */
public RangesMultiSelectDSL rangesMultiSelect(Range range, Range... ranges) {
return rangesMultiSelect(list(range, ranges));
}
/** For each range, counts how many results fall into that range. */
public RangesMultiSelectDSL rangesMultiSelect(Iterable> ranges) {
return new RangesMultiSelectDSL(ranges);
}
public class RangesMultiSelectDSL {
private final Iterable> ranges;
public RangesMultiSelectDSL(Iterable> ranges) {
this.ranges = ranges;
}
/** Specified selected ranges. Only results that fall into any of the ranges will be returned. */
public NumberAttribute.RangesMultiSelect selected(Range selectedRange, Range... selectedRanges) {
return selected(list(selectedRange, selectedRanges));
}
/** Specified selected ranges. Only results that fall into any of the ranges will be returned. */
public NumberAttribute.RangesMultiSelect selected(Iterable> selectedRanges) {
return new NumberAttribute.RangesMultiSelect(name, selectedRanges, ranges);
}
}
@Override
public String toString() {
return "NumberAttrDSL{" +
"name='" + name + '\'' +
'}';
}
}
/** Requests facet counts for a custom money attribute to be calculated. */
public static MoneyAttrDSL moneyAttribute(String name) { return new MoneyAttrDSL(name); }
public static class MoneyAttrDSL {
private final String name;
public MoneyAttrDSL(String name) { this.name = name; }
/** Counts occurrences of each distinct value found in the result set. */
public Terms terms() { return new Terms(name); }
/** Counts occurrences of each distinct value and filters the result set by selected values. */
public MoneyAttribute.TermsMultiSelect termsMultiSelect(BigDecimal selectedValue, BigDecimal... selectedValues) {
return termsMultiSelect(list(selectedValue, selectedValues));
}
/** Counts occurrences of each distinct value and filters the result set by selected values. */
public MoneyAttribute.TermsMultiSelect termsMultiSelect(Iterable selectedValues) {
return new MoneyAttribute.TermsMultiSelect(name, selectedValues);
}
/** For each range, counts how many results fall into that range. */
public MoneyAttribute.Ranges ranges(Range range, Range... ranges) {
return ranges(list(range, ranges));
}
/** For each range, counts how many results fall into that range. */
public MoneyAttribute.Ranges ranges(Iterable> ranges) {
return new MoneyAttribute.Ranges(name, ranges);
}
/** For each range, counts how many results fall into that range. */
public RangesMultiSelectDSL rangesMultiSelect(Range range, Range... ranges) {
return rangesMultiSelect(list(range, ranges));
}
/** For each range, counts how many results fall into that range. */
public RangesMultiSelectDSL rangesMultiSelect(Iterable> ranges) {
return new RangesMultiSelectDSL(ranges);
}
@Override
public String toString() {
return "MoneyAttrDSL{" +
"name='" + name + '\'' +
'}';
}
public class RangesMultiSelectDSL {
private final Iterable> ranges;
public RangesMultiSelectDSL(Iterable> ranges) {
this.ranges = ranges;
}
/** Specified selected ranges. Only results that fall into any of the ranges will be returned. */
public MoneyAttribute.RangesMultiSelect selected(Range selectedRange, Range... selectedRanges) {
return selected(list(selectedRange, selectedRanges));
}
/** Specified selected ranges. Only results that fall into any of the ranges will be returned. */
public MoneyAttribute.RangesMultiSelect selected(Iterable> selectedRanges) {
return new MoneyAttribute.RangesMultiSelect(name, selectedRanges, ranges);
}
@Override
public String toString() {
return "RangesMultiSelectDSL{" +
"ranges=" + ranges +
'}';
}
}
}
/** Requests facet counts for the price attribute to be calculated. */
public static PriceDSL price = new PriceDSL();
public static class PriceDSL {
/** Counts occurrences of each distinct value found in the result set. */
public Terms terms() { return new Terms(Names.priceFull); }
/** Counts occurrences of each distinct value and filters the result set by selected values. */
public Price.TermsMultiSelect termsMultiSelect(BigDecimal selectedValue, BigDecimal... selectedValues) {
return termsMultiSelect(list(selectedValue, selectedValues));
}
/** Counts occurrences of each distinct value and filters the result set by selected values. */
public Price.TermsMultiSelect termsMultiSelect(Iterable selectedValues) {
return new Price.TermsMultiSelect(selectedValues);
}
/** For each range, counts how many results fall into that range. */
public Price.Ranges ranges(Range range, Range... ranges) {
return ranges(list(range, ranges));
}
/** For each range, counts how many results fall into that range. */
public Price.Ranges ranges(Iterable> ranges) {
return new Price.Ranges(ranges);
}
/** For each range, counts how many results fall into that range. */
public RangesMultiSelectDSL rangesMultiSelect(Range range, Range... ranges) {
return rangesMultiSelect(list(range, ranges));
}
/** For each range, counts how many results fall into that range. */
public RangesMultiSelectDSL rangesMultiSelect(Iterable> ranges) {
return new RangesMultiSelectDSL(ranges);
}
public class RangesMultiSelectDSL {
private final Iterable> ranges;
public RangesMultiSelectDSL(Iterable> ranges) {
this.ranges = ranges;
}
/** Specified selected ranges. Only results that fall into any of the ranges will be returned. */
public Price.RangesMultiSelect selected(Range selectedRange, Range... selectedRanges) {
return selected(list(selectedRange, selectedRanges));
}
/** Specified selected ranges. Only results that fall into any of the ranges will be returned. */
public Price.RangesMultiSelect selected(Iterable> selectedRanges) {
return new Price.RangesMultiSelect(selectedRanges, ranges);
}
@Override
public String toString() {
return "RangesMultiSelectDSL{" +
"ranges=" + ranges +
'}';
}
}
}
/** Requests facet counts for a custom DateTime attribute to be calculated. */
public static DateTimeAttrDSL dateTimeAttribute(String name) { return new DateTimeAttrDSL(name); }
public static class DateTimeAttrDSL {
private final String name;
public DateTimeAttrDSL(String name) { this.name = name; }
/** Counts occurrences of each distinct value found in the result set. */
public Terms terms() { return new Terms(name); }
/** Counts occurrences of each distinct value and filters the result set by selected values. */
public DateTimeAttribute.TermsMultiSelect termsMultiSelect(DateTime selectedValue, DateTime... selectedValues) {
return termsMultiSelect(list(selectedValue, selectedValues));
}
/** Counts occurrences of each distinct value and filters the result set by selected values. */
public DateTimeAttribute.TermsMultiSelect termsMultiSelect(Iterable selectedValues) {
return new DateTimeAttribute.TermsMultiSelect(name, selectedValues);
}
/** For each range, counts how many results fall into that range. */
public DateTimeAttribute.Ranges ranges(Range range, Range... ranges) {
return ranges(list(range, ranges));
}
/** For each range, counts how many results fall into that range. */
public DateTimeAttribute.Ranges ranges(Iterable> ranges) {
return new DateTimeAttribute.Ranges(name, ranges);
}
/** For each range, counts how many results fall into that range. */
public RangesMultiSelectDSL rangesMultiSelect(Range range, Range... ranges) {
return rangesMultiSelect(list(range, ranges));
}
/** For each range, counts how many results fall into that range. */
public RangesMultiSelectDSL rangesMultiSelect(Iterable> ranges) {
return new RangesMultiSelectDSL(ranges);
}
@Override
public String toString() {
return "DateTimeAttrDSL{" +
"name='" + name + '\'' +
'}';
}
public class RangesMultiSelectDSL {
private final Iterable> ranges;
public RangesMultiSelectDSL(Iterable> ranges) {
this.ranges = ranges;
}
/** Specified selected ranges. Only results that fall into any of the ranges will be returned. */
public DateTimeAttribute.RangesMultiSelect selected(Range selectedRange, Range... selectedRanges) {
return selected(list(selectedRange, selectedRanges));
}
/** Specified selected ranges. Only results that fall into any of the ranges will be returned. */
public DateTimeAttribute.RangesMultiSelect selected(Iterable> selectedRanges) {
return new DateTimeAttribute.RangesMultiSelect(name, selectedRanges, ranges);
}
@Override
public String toString() {
return "RangesMultiSelectDSL{" +
"ranges=" + ranges +
'}';
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy