List of usage examples for com.google.common.collect Range lessThan
public static <C extends Comparable<?>> Range<C> lessThan(C endpoint)
From source file:org.apache.kylin.storage.cache.TsConditionExtractor.java
private static Range<Long> extractTsConditionInternal(TupleFilter filter, TblColRef colRef) { if (filter == null) { return Range.all(); }/*from ww w. j a v a2 s. c o m*/ if (filter instanceof LogicalTupleFilter) { if (filter.getOperator() == TupleFilter.FilterOperatorEnum.AND) { Range<Long> ret = Range.all(); for (TupleFilter child : filter.getChildren()) { Range childRange = extractTsConditionInternal(child, colRef); if (childRange != null) { if (ret.isConnected(childRange) && !ret.intersection(childRange).isEmpty()) { ret = ret.intersection(childRange); } else { return null; } } else { return null; } } return ret.isEmpty() ? null : ret; } else { //for conditions like date > DATE'2000-11-11' OR date < DATE '1999-01-01' //we will use Ranges.all() rather than two ranges to represent them return Range.all(); } } if (filter instanceof CompareTupleFilter) { CompareTupleFilter compareTupleFilter = (CompareTupleFilter) filter; if (compareTupleFilter.getColumn() == null)// column will be null at filters like " 1<>1" return Range.all(); if (compareTupleFilter.getColumn().equals(colRef)) { Object firstValue = compareTupleFilter.getFirstValue(); long t; switch (compareTupleFilter.getOperator()) { case EQ: t = DateFormat.stringToMillis((String) firstValue); return Range.closed(t, t); case LT: t = DateFormat.stringToMillis((String) firstValue); return Range.lessThan(t); case LTE: t = DateFormat.stringToMillis((String) firstValue); return Range.atMost(t); case GT: t = DateFormat.stringToMillis((String) firstValue); return Range.greaterThan(t); case GTE: t = DateFormat.stringToMillis((String) firstValue); return Range.atLeast(t); case NEQ: case IN://not handled for now break; default: } } } return Range.all(); }
From source file:org.jpmml.evaluator.DiscretizationUtil.java
static public Range<Double> toRange(Interval interval) { Double leftMargin = interval.getLeftMargin(); Double rightMargin = interval.getRightMargin(); // "The attributes leftMargin and rightMargin are optional but at least one value must be defined" if (leftMargin == null && rightMargin == null) { throw new InvalidFeatureException(interval); } // End if/*from w w w . j ava 2s. c o m*/ if (leftMargin != null && rightMargin != null && (leftMargin).compareTo(rightMargin) > 0) { throw new InvalidFeatureException(interval); } Interval.Closure closure = interval.getClosure(); switch (closure) { case OPEN_OPEN: { if (leftMargin == null) { return Range.lessThan(rightMargin); } else if (rightMargin == null) { return Range.greaterThan(leftMargin); } return Range.open(leftMargin, rightMargin); } case OPEN_CLOSED: { if (leftMargin == null) { return Range.atMost(rightMargin); } else if (rightMargin == null) { return Range.greaterThan(leftMargin); } return Range.openClosed(leftMargin, rightMargin); } case CLOSED_OPEN: { if (leftMargin == null) { return Range.lessThan(rightMargin); } else if (rightMargin == null) { return Range.atLeast(leftMargin); } return Range.closedOpen(leftMargin, rightMargin); } case CLOSED_CLOSED: { if (leftMargin == null) { return Range.atMost(rightMargin); } else if (rightMargin == null) { return Range.atLeast(leftMargin); } return Range.closed(leftMargin, rightMargin); } default: throw new UnsupportedFeatureException(interval, closure); } }
From source file:org.apache.kylin.common.util.RangeUtil.java
/** * remove from self the elements that exist in other * @return/*from w ww.j ava 2 s . c om*/ */ public static <C extends Comparable<?>> List<Range<C>> remove(Range<C> self, Range<C> other) { // mimic the following logic in guava 18: // RangeSet<C> rangeSet = TreeRangeSet.create(); // rangeSet.add(self); // rangeSet.remove(other); // return Lists.newArrayList(rangeSet.asRanges()); if (other == null || !self.isConnected(other)) { return Collections.singletonList(self); } Range<C> share = self.intersection(other); if (share.isEmpty()) { return Collections.singletonList(self); } List<Range<C>> ret = Lists.newArrayList(); //see left part if (!self.hasLowerBound()) { if (share.hasLowerBound()) { if (share.lowerBoundType() == BoundType.CLOSED) { ret.add(Range.lessThan(share.lowerEndpoint())); } else { ret.add(Range.atMost(share.lowerEndpoint())); } } } else { if (self.lowerEndpoint() != share.lowerEndpoint()) { if (self.lowerBoundType() == BoundType.CLOSED) { if (share.lowerBoundType() == BoundType.CLOSED) { ret.add(Range.closedOpen(self.lowerEndpoint(), share.lowerEndpoint())); } else { ret.add(Range.closed(self.lowerEndpoint(), share.lowerEndpoint())); } } else { if (share.lowerBoundType() == BoundType.CLOSED) { ret.add(Range.open(self.lowerEndpoint(), share.lowerEndpoint())); } else { ret.add(Range.openClosed(self.lowerEndpoint(), share.lowerEndpoint())); } } } else { if (self.lowerBoundType() == BoundType.CLOSED && share.lowerBoundType() == BoundType.OPEN) { ret.add(Range.closed(self.lowerEndpoint(), share.lowerEndpoint())); } } } //see right part if (!self.hasUpperBound()) { if (share.hasUpperBound()) { if (share.upperBoundType() == BoundType.CLOSED) { ret.add(Range.greaterThan(share.upperEndpoint())); } else { ret.add(Range.atLeast(share.upperEndpoint())); } } } else { if (self.upperEndpoint() != share.upperEndpoint()) { if (self.upperBoundType() == BoundType.CLOSED) { if (share.upperBoundType() == BoundType.CLOSED) { ret.add(Range.openClosed(share.upperEndpoint(), self.upperEndpoint())); } else { ret.add(Range.closed(share.upperEndpoint(), self.upperEndpoint())); } } else { if (share.upperBoundType() == BoundType.CLOSED) { ret.add(Range.open(share.upperEndpoint(), self.upperEndpoint())); } else { ret.add(Range.closedOpen(share.upperEndpoint(), self.upperEndpoint())); } } } else { if (self.upperBoundType() == BoundType.CLOSED && share.upperBoundType() == BoundType.OPEN) { ret.add(Range.closed(self.upperEndpoint(), share.upperEndpoint())); } } } return ret; }
From source file:dollar.api.types.DollarRange.java
public DollarRange(boolean lowerBounds, boolean upperBounds, boolean closedLeft, boolean closedRight, @Nullable Value lower, @Nullable Value upper) { super();/* w w w . ja va2 s . c o m*/ Value lowerBound; Value upperBound; if ((lower != null) && (upper != null) && (lower.compareTo(upper) > 0)) { lowerBound = upper; upperBound = lower; reversed = true; } else { lowerBound = lower; upperBound = upper; } if (!lowerBounds && !upperBounds) { range = Range.all(); } else if (!lowerBounds) { if (closedRight) { range = Range.atMost(upperBound); } else { range = Range.lessThan(upperBound); } } else if (!upperBounds) { if (closedLeft) { range = Range.atLeast(lowerBound); } else { range = Range.greaterThan(lowerBound); } } else if (closedLeft) { if (closedRight) { range = Range.closed(lowerBound, upperBound); } else { //openRight range = Range.closedOpen(lowerBound, upperBound); } } else if (!closedLeft) { //openLeft if (closedRight) { range = Range.openClosed(lowerBound, upperBound); } else { //openRight if (lowerBound.equals(upperBound)) { throw new IllegalArgumentException( "Cannot have an open range with lower bounds being the same as upper " + "bounds"); } else { range = Range.open(lowerBound, upperBound); } } } else { throw new IllegalStateException(); } }
From source file:com.wealdtech.jackson.modules.DateTimeRangeDeserializer.java
public static Range<DateTime> deserialize(final String txt) throws IOException { final int txtLen = txt.length(); final int firstDateChar; boolean lowerClosed; if (txt.charAt(0) == '[') { firstDateChar = 1;// ww w . ja v a 2s. c o m lowerClosed = true; } else if (txt.charAt(0) == '(') { firstDateChar = 1; lowerClosed = false; } else if (txt.charAt(0) >= '0' && txt.charAt(0) <= '9') { // Lazy version firstDateChar = 0; lowerClosed = true; } else { throw new DataError.Bad("Unexpected first character in range \"" + txt + "\""); } boolean upperClosed; if (txt.charAt(txtLen - 1) == ']') { upperClosed = true; } else if (txt.charAt(txtLen - 1) == ')') { upperClosed = false; } else if (firstDateChar == 0) { upperClosed = false; } else { throw new DataError.Bad("Unexpected last character in range \"" + txt + "\""); } final Iterator<String> dateTimes; if (txt.indexOf(WEALD_SPLITTER_CHAR) != -1) { dateTimes = WEALD_SPLITTER.split(txt.substring(firstDateChar, txtLen - firstDateChar)).iterator(); } else if (txt.indexOf(GUAVA_SPLITTER_CHAR) != -1) { dateTimes = GUAVA_SPLITTER.split(txt.substring(firstDateChar, txtLen - firstDateChar)).iterator(); } else { throw new DataError.Bad("Cannot find a range separator in range \"" + txt + "\""); } String start = dateTimes.next(); String end = dateTimes.next(); boolean lowerBound; final DateTime lowerPoint; if (start.equals(NEGATIVE_INFINITY)) { lowerBound = false; lowerPoint = null; } else { lowerBound = true; lowerPoint = DateTimeDeserializer.deserialize(start); } boolean upperBound; final DateTime upperPoint; if (end.equals(POSITIVE_INFINITY)) { upperBound = false; upperPoint = null; } else { upperBound = true; upperPoint = DateTimeDeserializer.deserialize(end); } if (lowerBound == false && upperBound == false) { return Range.all(); } else if (lowerBound == false) { // Upper present if (upperClosed == true) { return Range.lessThan(upperPoint); } else { return Range.atMost(upperPoint); } } else if (upperBound == false) { // Lower present if (lowerClosed == true) { return Range.atLeast(lowerPoint); } else { return Range.greaterThan(lowerPoint); } } else { // Both present if (lowerClosed == true) { if (upperClosed == true) { return Range.closed(lowerPoint, upperPoint); } else { return Range.closedOpen(lowerPoint, upperPoint); } } else { if (upperClosed == true) { return Range.openClosed(lowerPoint, upperPoint); } else { return Range.open(lowerPoint, upperPoint); } } } }
From source file:com.pingcap.tikv.predicates.RangeBuilder.java
/** * Turn CNF filters into range//from w w w .j a v a 2 s . c o m * * @param accessConditions filters in CNF list * @param type index column type * @return access ranges */ @SuppressWarnings("unchecked") static List<Range> exprToRanges(List<TiExpr> accessConditions, DataType type) { if (accessConditions == null || accessConditions.size() == 0) { return ImmutableList.of(); } RangeSet ranges = TreeRangeSet.create(); ranges.add(Range.all()); for (TiExpr ac : accessConditions) { NormalizedCondition cond = AccessConditionNormalizer.normalize(ac); TiConstant constVal = cond.constantVals.get(0); Comparable<?> comparableVal = Comparables.wrap(constVal.getValue()); TiExpr expr = cond.condition; if (expr instanceof GreaterThan) { ranges = ranges.subRangeSet(Range.greaterThan(comparableVal)); } else if (expr instanceof GreaterEqual) { ranges = ranges.subRangeSet(Range.atLeast(comparableVal)); } else if (expr instanceof LessThan) { ranges = ranges.subRangeSet(Range.lessThan(comparableVal)); } else if (expr instanceof LessEqual) { ranges = ranges.subRangeSet(Range.atMost(comparableVal)); } else if (expr instanceof Equal) { ranges = ranges.subRangeSet(Range.singleton(comparableVal)); } else if (expr instanceof NotEqual) { RangeSet left = ranges.subRangeSet(Range.lessThan(comparableVal)); RangeSet right = ranges.subRangeSet(Range.greaterThan(comparableVal)); ranges = TreeRangeSet.create(left); ranges.addAll(right); } else { throw new TiClientInternalException( "Unsupported conversion to Range " + expr.getClass().getSimpleName()); } } return ImmutableList.copyOf(ranges.asRanges()); }
From source file:org.openmhealth.shimmer.common.domain.DataPointSearchCriteria.java
protected Range<OffsetDateTime> asRange(OffsetDateTime onOrAfterDateTime, OffsetDateTime beforeDateTime) { if (onOrAfterDateTime != null && beforeDateTime != null) { return Range.closedOpen(onOrAfterDateTime, beforeDateTime); }//from ww w.j a v a2 s . c om if (onOrAfterDateTime != null) { return Range.atLeast(onOrAfterDateTime); } else if (beforeDateTime != null) { return Range.lessThan(beforeDateTime); } return Range.all(); }
From source file:org.obiba.opal.web.gwt.app.client.magma.derive.helper.NumericalVariableDerivationHelper.java
public static <N extends Number & Comparable<N>> Range<N> buildRange(@Nullable N lower, @Nullable N upper) { if (lower == null) { return Range.lessThan(upper); }//from w ww . j a v a2 s. com if (upper == null) { return Range.atLeast(lower); } if (lower.equals(upper)) { return Range.closed(lower, upper); } return Range.closedOpen(lower, upper); }
From source file:org.apache.druid.query.filter.SelectorDimFilter.java
@Override public RangeSet<String> getDimensionRangeSet(String dimension) { if (!Objects.equals(getDimension(), dimension) || getExtractionFn() != null) { return null; }/*from w ww . j a v a 2 s . c om*/ RangeSet<String> retSet = TreeRangeSet.create(); String valueEquivalent = NullHandling.nullToEmptyIfNeeded(value); if (valueEquivalent == null) { // Case when SQL compatible null handling is enabled // Nulls are less than empty String in segments retSet.add(Range.lessThan("")); } else { retSet.add(Range.singleton(valueEquivalent)); } return retSet; }
From source file:org.apache.calcite.adapter.druid.DruidDateTimeUtils.java
protected static List<Range<Calendar>> leafToRanges(RexCall call, boolean withNot) { switch (call.getKind()) { case EQUALS://from ww w . ja va 2 s . c o m case LESS_THAN: case LESS_THAN_OR_EQUAL: case GREATER_THAN: case GREATER_THAN_OR_EQUAL: { final Calendar value; if (call.getOperands().get(0) instanceof RexInputRef && literalValue(call.getOperands().get(1)) != null) { value = literalValue(call.getOperands().get(1)); } else if (call.getOperands().get(1) instanceof RexInputRef && literalValue(call.getOperands().get(0)) != null) { value = literalValue(call.getOperands().get(0)); } else { return null; } switch (call.getKind()) { case LESS_THAN: return ImmutableList.of(withNot ? Range.atLeast(value) : Range.lessThan(value)); case LESS_THAN_OR_EQUAL: return ImmutableList.of(withNot ? Range.greaterThan(value) : Range.atMost(value)); case GREATER_THAN: return ImmutableList.of(withNot ? Range.atMost(value) : Range.greaterThan(value)); case GREATER_THAN_OR_EQUAL: return ImmutableList.of(withNot ? Range.lessThan(value) : Range.atLeast(value)); default: if (!withNot) { return ImmutableList.of(Range.closed(value, value)); } return ImmutableList.of(Range.lessThan(value), Range.greaterThan(value)); } } case BETWEEN: { final Calendar value1; final Calendar value2; if (literalValue(call.getOperands().get(2)) != null && literalValue(call.getOperands().get(3)) != null) { value1 = literalValue(call.getOperands().get(2)); value2 = literalValue(call.getOperands().get(3)); } else { return null; } boolean inverted = value1.compareTo(value2) > 0; if (!withNot) { return ImmutableList.of(inverted ? Range.closed(value2, value1) : Range.closed(value1, value2)); } return ImmutableList.of(Range.lessThan(inverted ? value2 : value1), Range.greaterThan(inverted ? value1 : value2)); } case IN: { ImmutableList.Builder<Range<Calendar>> ranges = ImmutableList.builder(); for (RexNode operand : Util.skip(call.operands)) { final Calendar element = literalValue(operand); if (element == null) { return null; } if (withNot) { ranges.add(Range.lessThan(element)); ranges.add(Range.greaterThan(element)); } else { ranges.add(Range.closed(element, element)); } } return ranges.build(); } default: return null; } }