package io.searchbox.core.search.aggregation; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import java.util.ArrayList; import java.util.List; import java.util.Objects; import static io.searchbox.core.search.aggregation.AggregationField.*; /** * @author cfstout */ public class RangeAggregation extends BucketAggregation { public static final String TYPE = "range"; private List<Range> ranges; public RangeAggregation(String name, JsonObject rangeAggregation) { super(name, rangeAggregation); ranges = new ArrayList<Range>(); //todo support keyed:true as well for (JsonElement bucketElement : rangeAggregation.get(String.valueOf(BUCKETS)).getAsJsonArray()) { JsonObject bucket = bucketElement.getAsJsonObject(); Range range = new Range( bucket, bucket.has(String.valueOf(FROM)) ? bucket.get(String.valueOf(FROM)).getAsDouble() : null, bucket.has(String.valueOf(TO)) ? bucket.get(String.valueOf(TO)).getAsDouble() : null, bucket.get(String.valueOf(DOC_COUNT)).getAsLong()); ranges.add(range); } } public List<Range> getBuckets() { return ranges; } public String getName() { return name; } @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (obj == this) { return true; } if (obj.getClass() != getClass()) { return false; } RangeAggregation rhs = (RangeAggregation) obj; return super.equals(obj) && Objects.equals(ranges, rhs.ranges); } @Override public int hashCode() { return Objects.hash(super.hashCode(), ranges); } }