List of usage examples for com.google.common.collect Range hasLowerBound
public boolean hasLowerBound()
From source file:org.apache.hadoop.hive.ql.optimizer.calcite.druid.DruidIntervalUtils.java
protected static List<Range> condenseRanges(List<Range> ranges) { if (ranges.size() <= 1) { return ranges; }/*from w w w .j ava2s. com*/ Comparator<Range> startThenEnd = new Comparator<Range>() { @Override public int compare(Range lhs, Range rhs) { int compare = 0; if (lhs.hasLowerBound() && rhs.hasLowerBound()) { compare = lhs.lowerEndpoint().compareTo(rhs.lowerEndpoint()); } else if (!lhs.hasLowerBound() && rhs.hasLowerBound()) { compare = -1; } else if (lhs.hasLowerBound() && !rhs.hasLowerBound()) { compare = 1; } if (compare != 0) { return compare; } if (lhs.hasUpperBound() && rhs.hasUpperBound()) { compare = lhs.upperEndpoint().compareTo(rhs.upperEndpoint()); } else if (!lhs.hasUpperBound() && rhs.hasUpperBound()) { compare = -1; } else if (lhs.hasUpperBound() && !rhs.hasUpperBound()) { compare = 1; } return compare; } }; TreeSet<Range> sortedIntervals = Sets.newTreeSet(startThenEnd); sortedIntervals.addAll(ranges); List<Range> retVal = Lists.newArrayList(); Iterator<Range> intervalsIter = sortedIntervals.iterator(); Range currInterval = intervalsIter.next(); while (intervalsIter.hasNext()) { Range next = intervalsIter.next(); if (currInterval.encloses(next)) { continue; } if (mergeable(currInterval, next)) { currInterval = currInterval.span(next); } else { retVal.add(currInterval); currInterval = next; } } retVal.add(currInterval); return retVal; }
From source file:com.tinspx.util.io.callbacks.FileChannelCallback.java
/** * Normalizes lower bound to a closed bound type (if exists) and the * upper bound to an open bound type (if exists). Missing bounds remain * missing. Lower bound must be non-negative and upper bound must be * positive. The range cannot be empty.// w ww . j a v a 2 s .co m */ static Range<Long> checkAndNormalize(Range<Long> range) { checkArgument(!range.isEmpty(), "range %s is empty", range); boolean make = false; long lower = -1; long upper = -1; if (range.hasLowerBound()) { lower = range.lowerEndpoint(); if (range.lowerBoundType() == BoundType.OPEN) { make = true; lower++; } checkArgument(lower >= 0, "closed lower bound (%s) may not be negative", lower); } if (range.hasUpperBound()) { upper = range.upperEndpoint(); if (range.upperBoundType() == BoundType.CLOSED) { make = true; upper++; } checkArgument(upper > 0, "open upper bound (%s) must be positive", upper); } if (make) { if (lower >= 0) { if (upper > 0) { range = Range.closedOpen(lower, upper); } else { range = Range.atLeast(lower); } } else { assert upper > 0 : upper; range = Range.lessThan(upper); } checkArgument(!range.isEmpty(), "normalized range %s is empty", range); } return range; }
From source file:org.apache.kylin.common.util.RangeUtil.java
/** * remove from self the elements that exist in other * @return//ww w. ja v a 2 s. c o m */ 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:org.openmhealth.shimmer.common.transformer.FixedTimeZoneDateTimeRangeTransformer.java
@Override public Range<OffsetDateTime> transformRange(Range<OffsetDateTime> inputRange) { if (inputRange.hasLowerBound() && inputRange.hasUpperBound()) { return Range.closedOpen(toFixedTimeZone(inputRange.lowerEndpoint()), toFixedTimeZone(inputRange.upperEndpoint())); }/*from ww w. j a va 2s . com*/ if (inputRange.hasLowerBound()) { return Range.atLeast(toFixedTimeZone(inputRange.lowerEndpoint())); } if (inputRange.hasUpperBound()) { return Range.lessThan(toFixedTimeZone(inputRange.upperEndpoint())); } return Range.all(); }
From source file:com.wealdtech.utils.RangeComparator.java
@Override public int compare(Range<C> range1, Range<C> range2) { int result = ((Boolean) range1.hasLowerBound()).compareTo(range2.hasLowerBound()); if (result == 0) { if (range1.hasLowerBound()) { result = range1.lowerEndpoint().compareTo(range2.lowerEndpoint()); if (result == 0) { result = range1.lowerBoundType().compareTo(range2.lowerBoundType()); }//from www . j a v a 2 s .com } } if (result == 0) { result = ((Boolean) range1.hasUpperBound()).compareTo(range2.hasUpperBound()); if (result == 0) { if (range1.hasUpperBound()) { result = range1.upperEndpoint().compareTo(range2.upperEndpoint()); if (result == 0) { result = range1.upperBoundType().compareTo(range2.upperBoundType()); } } } } return result; }
From source file:org.sonatype.nexus.repository.partial.RangeParser.java
private boolean isSatisfiable(final Range<Long> range, final long contentSize) { if (!range.hasLowerBound()) { return true; }//from ww w . ja va 2 s . c o m // Per RFC 2616, a requested range is satisfiable as long as its lower bound is within the content size. // Requests for ranges that extend beyond the content size are okay. return range.lowerEndpoint() < contentSize - 1; }
From source file:org.openmhealth.dsu.repository.MongoDataPointRepositoryImpl.java
void addCreationTimestampCriteria(Query query, Range<OffsetDateTime> timestampRange) { if (timestampRange.hasLowerBound() || timestampRange.hasUpperBound()) { Criteria timestampCriteria = where("header.creation_date_time"); if (timestampRange.hasLowerBound()) { if (timestampRange.lowerBoundType() == CLOSED) { timestampCriteria = timestampCriteria.gte(timestampRange.lowerEndpoint()); } else { timestampCriteria = timestampCriteria.gt(timestampRange.lowerEndpoint()); }//w ww .j ava 2 s.co m } if (timestampRange.hasUpperBound()) { if (timestampRange.upperBoundType() == CLOSED) { timestampCriteria = timestampCriteria.lte(timestampRange.upperEndpoint()); } else { timestampCriteria = timestampCriteria.lt(timestampRange.upperEndpoint()); } } query.addCriteria(timestampCriteria); } }
From source file:com.techshroom.wood.ModuleDependency.java
@Override public String toString() { StringBuilder builder = new StringBuilder(getId()).append(':'); Range<SemVer> r = getVersionRange(); if (r.hasLowerBound()) { builder.append(r.lowerBoundType() == BoundType.OPEN ? '(' : '[').append(r.lowerEndpoint()); } else {/* w ww. java 2 s . c om*/ builder.append('('); } builder.append(','); if (r.hasUpperBound()) { builder.append(r.upperEndpoint()).append(r.upperBoundType() == BoundType.OPEN ? ')' : ']'); } else { builder.append(')'); } return builder.toString(); }
From source file:org.noroomattheinn.timeseries.InMemoryTS.java
@Override public NavigableMap<Long, Row> getIndex(Range<Long> period) { long from = period.hasLowerBound() ? period.lowerEndpoint() : 0; long to = period.hasUpperBound() ? period.upperEndpoint() : Long.MAX_VALUE; return index.subMap(from, true, to, true); }
From source file:com.axemblr.provisionr.api.network.RuleBuilder.java
public RuleBuilder ports(Range<Integer> ports) { checkArgument(ports.hasUpperBound(), "ports should have a closed upper bound"); checkArgument(ports.hasLowerBound(), "ports should have a closed lower bound "); checkArgument(ports.lowerEndpoint() > 0, "ports should be a positive range"); checkArgument(ports.upperEndpoint() < 65535, "ports upper bound should less than 65535"); this.ports = checkNotNull(ports, "ports is null"); return this; }