Java Code Examples for com.google.common.collect.Range#openClosed()

The following examples show how to use com.google.common.collect.Range#openClosed() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: DateRangeRules.java    From Quicksql with MIT License 6 votes vote down vote up
private Range<Calendar> ceilRange(TimeUnitRange timeUnit, SqlKind comparison,
    Calendar c) {
  final Calendar ceil = ceil(c, timeUnit);
  boolean boundary = ceil.equals(c);
  switch (comparison) {
  case EQUALS:
    return Range.openClosed(boundary ? decrement(ceil, timeUnit) : ceil, ceil);
  case LESS_THAN:
    return Range.atMost(decrement(ceil, timeUnit));
  case LESS_THAN_OR_EQUAL:
    return boundary ? Range.atMost(ceil) : Range.atMost(decrement(ceil, timeUnit));
  case GREATER_THAN:
    return boundary ? Range.greaterThan(ceil) : Range.greaterThan(decrement(ceil, timeUnit));
  case GREATER_THAN_OR_EQUAL:
    return Range.greaterThan(decrement(ceil, timeUnit));
  default:
    throw Util.unexpected(comparison);
  }
}
 
Example 2
Source File: DateRangeRules.java    From calcite with Apache License 2.0 6 votes vote down vote up
private Range<Calendar> ceilRange(TimeUnitRange timeUnit, SqlKind comparison,
    Calendar c) {
  final Calendar ceil = ceil(c, timeUnit);
  boolean boundary = ceil.equals(c);
  switch (comparison) {
  case EQUALS:
    return Range.openClosed(boundary ? decrement(ceil, timeUnit) : ceil, ceil);
  case LESS_THAN:
    return Range.atMost(decrement(ceil, timeUnit));
  case LESS_THAN_OR_EQUAL:
    return boundary ? Range.atMost(ceil) : Range.atMost(decrement(ceil, timeUnit));
  case GREATER_THAN:
    return boundary ? Range.greaterThan(ceil) : Range.greaterThan(decrement(ceil, timeUnit));
  case GREATER_THAN_OR_EQUAL:
    return Range.greaterThan(decrement(ceil, timeUnit));
  default:
    throw Util.unexpected(comparison);
  }
}
 
Example 3
Source File: ConcurrentOpenLongPairRangeSetTest.java    From pulsar with Apache License 2.0 6 votes vote down vote up
@Test
public void testLastRange() {
    ConcurrentOpenLongPairRangeSet<LongPair> set = new ConcurrentOpenLongPairRangeSet<>(consumer);
    assertNull(set.lastRange());
    Range<LongPair> range = Range.openClosed(new LongPair(0, 97), new LongPair(0, 99));
    set.add(range);
    assertEquals(set.lastRange(), range);
    assertEquals(set.size(), 1);
    range = Range.openClosed(new LongPair(0, 98), new LongPair(0, 105));
    set.add(range);
    assertEquals(set.lastRange(), Range.openClosed(new LongPair(0, 97), new LongPair(0, 105)));
    assertEquals(set.size(), 1);
    range = Range.openClosed(new LongPair(1, 5), new LongPair(1, 75));
    set.add(range);
    assertEquals(set.lastRange(), range);
    assertEquals(set.size(), 2);
    range = Range.openClosed(new LongPair(1, 80), new LongPair(1, 120));
    set.add(range);
    assertEquals(set.lastRange(), range);
    assertEquals(set.size(), 3);
}
 
Example 4
Source File: ConcurrentOpenLongPairRangeSetTest.java    From pulsar with Apache License 2.0 6 votes vote down vote up
@Test
public void testFirstRange() {
    ConcurrentOpenLongPairRangeSet<LongPair> set = new ConcurrentOpenLongPairRangeSet<>(consumer);
    assertNull(set.firstRange());
    Range<LongPair> range = Range.openClosed(new LongPair(0, 97), new LongPair(0, 99));
    set.add(range);
    assertEquals(set.firstRange(), range);
    assertEquals(set.size(), 1);
    range = Range.openClosed(new LongPair(0, 98), new LongPair(0, 105));
    set.add(range);
    assertEquals(set.firstRange(), Range.openClosed(new LongPair(0, 97), new LongPair(0, 105)));
    assertEquals(set.size(), 1);
    range = Range.openClosed(new LongPair(0, 5), new LongPair(0, 75));
    set.add(range);
    assertEquals(set.firstRange(), range);
    assertEquals(set.size(), 2);
}
 
Example 5
Source File: DateRangeRules.java    From Bats with Apache License 2.0 6 votes vote down vote up
private Range<Calendar> ceilRange(TimeUnitRange timeUnit, SqlKind comparison, Calendar c) {
    final Calendar ceil = ceil(c, timeUnit);
    boolean boundary = ceil.equals(c);
    switch (comparison) {
    case EQUALS:
        return Range.openClosed(boundary ? decrement(ceil, timeUnit) : ceil, ceil);
    case LESS_THAN:
        return Range.atMost(decrement(ceil, timeUnit));
    case LESS_THAN_OR_EQUAL:
        return boundary ? Range.atMost(ceil) : Range.atMost(decrement(ceil, timeUnit));
    case GREATER_THAN:
        return boundary ? Range.greaterThan(ceil) : Range.greaterThan(decrement(ceil, timeUnit));
    case GREATER_THAN_OR_EQUAL:
        return Range.greaterThan(decrement(ceil, timeUnit));
    default:
        throw Util.unexpected(comparison);
    }
}
 
Example 6
Source File: ConcurrentOpenLongPairRangeSet.java    From pulsar with Apache License 2.0 5 votes vote down vote up
@Override
public Range<T> lastRange() {
    if (rangeBitSetMap.isEmpty()) {
        return null;
    }
    Entry<Long, BitSet> lastSet = rangeBitSetMap.lastEntry();
    int upper = lastSet.getValue().previousSetBit(lastSet.getValue().size());
    int lower = Math.min(lastSet.getValue().previousClearBit(upper), upper);
    return Range.openClosed(consumer.apply(lastSet.getKey(), lower), consumer.apply(lastSet.getKey(), upper));
}
 
Example 7
Source File: RangeHeader.java    From notification with Apache License 2.0 5 votes vote down vote up
/**
 * Constructor
 *
 * @param builder
 */
private RangeHeader(final Builder builder) {

  this.field = builder.field;

  if (builder.fromId != null && builder.toId != null) {
    if (builder.fromInclusive && builder.toInclusive) {
      range = Range.closed(builder.fromId, builder.toId);
    } else if (builder.fromInclusive && !builder.toInclusive) {
      range = Range.closedOpen(builder.fromId, builder.toId);
    } else if (!builder.fromInclusive && builder.toInclusive) {
      range = Range.openClosed(builder.fromId, builder.toId);
    } else {
      range = Range.open(builder.fromId, builder.toId);
    }
  } else if (builder.fromId != null && builder.toId == null) {
    if (builder.fromInclusive) {
      range = Range.atLeast(builder.fromId);
    } else {
      range = Range.greaterThan(builder.fromId);
    }
  } else if (builder.fromId == null && builder.toId != null) {
    if (builder.toInclusive) {
      range = Range.atMost(builder.toId);
    } else {
      range = Range.lessThan(builder.toId);
    }
  } else {
    range = Range.all();
  }

  this.max = builder.max;
}
 
Example 8
Source File: ConcurrentOpenLongPairRangeSetTest.java    From pulsar with Apache License 2.0 5 votes vote down vote up
private List<Range<LongPair>> getConnectedRange(Set<Range<LongPair>> gRanges) {
    List<Range<LongPair>> gRangeConnected = Lists.newArrayList();
    Range<LongPair> lastRange = null;
    for (Range<LongPair> range : gRanges) {
        if (lastRange == null) {
            lastRange = range;
            continue;
        }
        LongPair previousUpper = lastRange.upperEndpoint();
        LongPair currentLower = range.lowerEndpoint();
        int previousUpperValue = (int) (lastRange.upperBoundType().equals(BoundType.CLOSED)
                ? previousUpper.getValue()
                : previousUpper.getValue() - 1);
        int currentLowerValue = (int) (range.lowerBoundType().equals(BoundType.CLOSED) ? currentLower.getValue()
                : currentLower.getValue() + 1);
        boolean connected = (previousUpper.getKey() == currentLower.getKey())
                ? (previousUpperValue >= currentLowerValue)
                : false;
        if (connected) {
            lastRange = Range.closed(lastRange.lowerEndpoint(), range.upperEndpoint());
        } else {
            gRangeConnected.add(lastRange);
            lastRange = range;
        }
    }
    int lowerOpenValue = (int) (lastRange.lowerBoundType().equals(BoundType.CLOSED)
            ? (lastRange.lowerEndpoint().getValue() - 1)
            : lastRange.lowerEndpoint().getValue());
    lastRange = Range.openClosed(new LongPair(lastRange.lowerEndpoint().getKey(), lowerOpenValue),
            lastRange.upperEndpoint());
    gRangeConnected.add(lastRange);
    return gRangeConnected;
}
 
Example 9
Source File: ConcurrentOpenLongPairRangeSetTest.java    From pulsar with Apache License 2.0 5 votes vote down vote up
@Test
public void testToString() {
    ConcurrentOpenLongPairRangeSet<LongPair> set = new ConcurrentOpenLongPairRangeSet<>(consumer);
    Range<LongPair> range = Range.openClosed(new LongPair(0, 97), new LongPair(0, 99));
    set.add(range);
    assertEquals(set.toString(), "[(0:97..0:99]]");
    range = Range.openClosed(new LongPair(0, 98), new LongPair(0, 105));
    set.add(range);
    assertEquals(set.toString(), "[(0:97..0:105]]");
    range = Range.openClosed(new LongPair(0, 5), new LongPair(0, 75));
    set.add(range);
    assertEquals(set.toString(), "[(0:5..0:75],(0:97..0:105]]");
}
 
Example 10
Source File: ConcurrentOpenLongPairRangeSet.java    From pulsar with Apache License 2.0 5 votes vote down vote up
@Override
public Range<T> firstRange() {
    if (rangeBitSetMap.isEmpty()) {
        return null;
    }
    Entry<Long, BitSet> firstSet = rangeBitSetMap.firstEntry();
    int lower = firstSet.getValue().nextSetBit(0);
    int upper = Math.max(lower, firstSet.getValue().nextClearBit(lower) - 1);
    return Range.openClosed(consumer.apply(firstSet.getKey(), lower - 1), consumer.apply(firstSet.getKey(), upper));
}
 
Example 11
Source File: ConcurrentOpenLongPairRangeSet.java    From pulsar with Apache License 2.0 5 votes vote down vote up
@Override
public Range<T> span() {
    Entry<Long, BitSet> firstSet = rangeBitSetMap.firstEntry();
    Entry<Long, BitSet> lastSet = rangeBitSetMap.lastEntry();
    int first = firstSet.getValue().nextSetBit(0);
    int last = lastSet.getValue().previousSetBit(lastSet.getValue().size());
    return Range.openClosed(consumer.apply(firstSet.getKey(), first - 1), consumer.apply(lastSet.getKey(), last));
}
 
Example 12
Source File: UnifiedParquetReader.java    From dremio-oss with Apache License 2.0 5 votes vote down vote up
private void computeLocality(ParquetMetadata footer) throws ExecutionSetupException {
  try {
    BlockMetaData block = footer.getBlocks().get(readEntry.getRowGroupIndex());

    Iterable<FileBlockLocation> blockLocations = fs.getFileBlockLocations(Path.of(readEntry.getPath()), block.getStartingPos(), block.getCompressedSize());

    String localHost = InetAddress.getLocalHost().getCanonicalHostName();

    List<Range<Long>> intersectingRanges = new ArrayList<>();

    Range<Long> rowGroupRange = Range.openClosed(block.getStartingPos(), block.getStartingPos() + block.getCompressedSize());

    for (FileBlockLocation loc : blockLocations) {
      for (String host : loc.getHosts()) {
        if (host.equals(localHost)) {
          intersectingRanges.add(Range.closedOpen(loc.getOffset(), loc.getOffset() + loc.getSize()).intersection(rowGroupRange));
        }
      }
    }

    long totalIntersect = 0;
    for (Range<Long> range : intersectingRanges) {
      totalIntersect += (range.upperEndpoint() - range.lowerEndpoint());
    }
    if (totalIntersect < block.getCompressedSize()) {
      context.getStats().addLongStat(Metric.NUM_REMOTE_READERS, 1);
    } else {
      context.getStats().addLongStat(Metric.NUM_REMOTE_READERS, 0);
    }
  } catch (IOException e) {
    throw new ExecutionSetupException(e);
  }
}
 
Example 13
Source File: MetricPoint.java    From java-monitoring-client-library with Apache License 2.0 5 votes vote down vote up
/**
 * Returns a new {@link MetricPoint} representing a value over an {@link Range} from {@code
 * startTime} to {@code endTime}.
 *
 * <p>Callers should insure that the count of {@code labelValues} matches the count of labels for
 * the given metric.
 */
@VisibleForTesting
public static <V> MetricPoint<V> create(
    Metric<V> metric,
    ImmutableList<String> labelValues,
    Instant startTime,
    Instant endTime,
    V value) {
  MetricsUtils.checkLabelValuesLength(metric, labelValues);

  return new AutoValue_MetricPoint<>(
      metric, labelValues, Range.openClosed(startTime, endTime), value);
}
 
Example 14
Source File: MetricPoint.java    From java-monitoring-client-library with Apache License 2.0 5 votes vote down vote up
/**
 * Returns a new {@link MetricPoint} representing a value at a specific {@link Instant}.
 *
 * <p>Callers should insure that the count of {@code labelValues} matches the count of labels for
 * the given metric.
 */
@VisibleForTesting
public static <V> MetricPoint<V> create(
    Metric<V> metric, ImmutableList<String> labelValues, Instant timestamp, V value) {
  MetricsUtils.checkLabelValuesLength(metric, labelValues);

  return new AutoValue_MetricPoint<>(
      metric, labelValues, Range.openClosed(timestamp, timestamp), value);
}
 
Example 15
Source File: DremioORCRecordUtils.java    From dremio-oss with Apache License 2.0 4 votes vote down vote up
private void computeLocality(FileSystem fs, Path path, DiskRangeList range) {
  if (this.remoteRead) {
    return;
  }

  boolean currentReadIsRemote = false;
  try {
    String localHost = InetAddress.getLocalHost().getCanonicalHostName();
    while (range != null) {
      int len = (int) (range.getEnd() - range.getOffset());
      long off = range.getOffset();
      BlockLocation[] blockLocations = fs.getFileBlockLocations(path, off, len);
      List<Range<Long>> intersectingRanges = new ArrayList<>();
      Range<Long> rowGroupRange = Range.openClosed(off, off+len);
      for (BlockLocation loc : blockLocations) {
        for (String host : loc.getHosts()) {
          if (host.equals(localHost)) {
            intersectingRanges.add(Range.closedOpen(loc.getOffset(), loc.getOffset() + loc.getLength()).intersection(rowGroupRange));
          }
        }
      }
      long totalIntersect = 0;
      for (Range<Long> intersectingRange : intersectingRanges) {
        totalIntersect += (intersectingRange.upperEndpoint() - intersectingRange.lowerEndpoint());
      }
      if (totalIntersect < len) {
        currentReadIsRemote = true;
        break;
      }
      range = range.next;
    }
  } catch (Throwable e) {
    // ignoring any exception in this code path as it is used to collect
    // remote readers metric in profile for debugging
    logger.debug("computeLocality failed with message: {} for path {}", e.getMessage(), path, e);
  }

  if (currentReadIsRemote) {
    this.remoteRead = true;
  }
}
 
Example 16
Source File: DremioORCRecordUtils.java    From dremio-oss with Apache License 2.0 4 votes vote down vote up
private void computeLocality(FileSystem fs, Path path, DiskRangeList range) {
  if (this.remoteRead) {
    return;
  }

  boolean currentReadIsRemote = false;
  try {
    String localHost = InetAddress.getLocalHost().getCanonicalHostName();
    while (range != null) {
      int len = (int) (range.getEnd() - range.getOffset());
      long off = range.getOffset();
      BlockLocation[] blockLocations = fs.getFileBlockLocations(path, off, len);
      List<Range<Long>> intersectingRanges = new ArrayList<>();
      Range<Long> rowGroupRange = Range.openClosed(off, off+len);
      for (BlockLocation loc : blockLocations) {
        for (String host : loc.getHosts()) {
          if (host.equals(localHost)) {
            intersectingRanges.add(Range.closedOpen(loc.getOffset(), loc.getOffset() + loc.getLength()).intersection(rowGroupRange));
          }
        }
      }
      long totalIntersect = 0;
      for (Range<Long> intersectingRange : intersectingRanges) {
        totalIntersect += (intersectingRange.upperEndpoint() - intersectingRange.lowerEndpoint());
      }
      if (totalIntersect < len) {
        currentReadIsRemote = true;
        break;
      }
      range = range.next;
    }
  } catch (Throwable e) {
    // ignoring any exception in this code path as it is used to collect
    // remote readers metric in profile for debugging
    logger.debug("computeLocality failed with message: {} for path {}", e.getMessage(), path, e);
  }

  if (currentReadIsRemote) {
    this.remoteRead = true;
  }
}
 
Example 17
Source File: DiscretizationUtil.java    From jpmml-evaluator with GNU Affero General Public License v3.0 4 votes vote down vote up
static
public Range<Double> toRange(Interval interval){
	Double leftMargin = NumberUtil.asDouble(interval.getLeftMargin());
	Double rightMargin = NumberUtil.asDouble(interval.getRightMargin());

	// "The leftMargin and rightMargin attributes are optional, but at least one value must be defined"
	if(leftMargin == null && rightMargin == null){
		throw new MissingAttributeException(interval, PMMLAttributes.INTERVAL_LEFTMARGIN);
	} // End if

	if(leftMargin != null && rightMargin != null && NumberUtil.compare(leftMargin, rightMargin) > 0){
		throw new InvalidElementException(interval);
	}

	Interval.Closure closure = interval.getClosure();
	if(closure == null){
		throw new MissingAttributeException(interval, PMMLAttributes.INTERVAL_CLOSURE);
	}

	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 UnsupportedAttributeException(interval, closure);
	}
}
 
Example 18
Source File: AssertJGuavaUnitTest.java    From tutorials with MIT License 4 votes vote down vote up
@Test
public void givenRange_whenVerifying_thenShouldBeCorrect() throws Exception {
    final Range<String> range = Range.openClosed("a", "g");

    assertThat(range).hasOpenedLowerBound().isNotEmpty().hasClosedUpperBound().contains("b");
}