List of usage examples for com.google.common.collect Range downTo
public static <C extends Comparable<?>> Range<C> downTo(C endpoint, BoundType boundType)
From source file:google.registry.model.common.PersistedRangeLong.java
public Range<Long> asRange() { Range<Long> range = Range.all(); if (lowerBound != null) { range = range.intersection(Range.downTo(lowerBound, lowerBoundType)); }/*from w w w. j a v a 2 s . c om*/ if (upperBound != null) { range = range.intersection(Range.upTo(upperBound, upperBoundType)); } return range; }
From source file:com.techshroom.wood.ModuleDependency.java
public static ModuleDependency fromString(String dependency) { // Dependency format: '<id>:<version>' // List format: '<dep>;<dep>;<dep>' // Version range format: // Any version: [0.0.0,) or * or omitted // Any version above 1.0.0: [1.0.0,) // Any version with major 1: [1.0.0,2.0.0) // Any version with major.minor 1.0: [1.0.0,1.1.0) // 1.0.0-1.2.0: [1.0.0,1.2.0] // etc. Basically works like Range. String id;/* www. j a va 2 s .c om*/ Range<SemVer> range; String[] idSplit = dependency.split(":", 2); id = idSplit[0]; if (idSplit.length == 2 && !idSplit[1].equals("*")) { String r = idSplit[1]; Matcher matcher = VERSION_RANGE_PATTERN.matcher(r); checkArgument(matcher.matches(), "'%s' is not a valid range", r); BoundType lowBound = matcher.group(1).equals("(") ? BoundType.OPEN : BoundType.CLOSED; BoundType hiBound = matcher.group(4).equals(")") ? BoundType.OPEN : BoundType.CLOSED; String lowVersion = matcher.group(2); String hiVersion = matcher.group(3); checkArgument(lowVersion != null || hiVersion != null, "A bound must have at least one version. Use \"[0.0.0,)\" or '*' for any."); if (lowVersion == null) { checkArgument(lowBound == BoundType.OPEN, "must use '(' with no lower bound"); range = Range.upTo(SemVer.fromString(hiVersion), hiBound); } else if (hiVersion == null) { checkArgument(hiBound == BoundType.OPEN, "must use ')' with no upper bound"); range = Range.downTo(SemVer.fromString(lowVersion), lowBound); } else { range = Range.range(SemVer.fromString(lowVersion), lowBound, SemVer.fromString(hiVersion), hiBound); } } else { range = Range.downTo(ZERO, BoundType.CLOSED); } return fromFields(id, range); }
From source file:org.apache.lens.server.api.driver.hooks.QueryCostBasedQueryHook.java
public Range<T> parseRange(String rangeStr) { if (rangeStr == null) { return null; }//from w w w.j av a 2 s. com rangeStr = rangeStr.trim(); BoundType lowerBound, upperBound; if (rangeStr.startsWith("[")) { lowerBound = BoundType.CLOSED; } else if (rangeStr.startsWith("(")) { lowerBound = BoundType.OPEN; } else { throw new IllegalArgumentException("Range should start with either ( or ["); } if (rangeStr.endsWith("]")) { upperBound = BoundType.CLOSED; } else if (rangeStr.endsWith(")")) { upperBound = BoundType.OPEN; } else { throw new IllegalArgumentException("Range should end with either ) or ]"); } String[] pair = rangeStr.substring(1, rangeStr.length() - 1).split(","); String leftStr = pair[0].trim(); String rightStr = pair[1].trim(); if (leftStr.isEmpty() && rightStr.isEmpty()) { return Range.all(); } else if (leftStr.isEmpty()) { return Range.upTo(parser.parse(rightStr), upperBound); } else if (rightStr.isEmpty()) { return Range.downTo(parser.parse(leftStr), lowerBound); } else { return Range.range(parser.parse(leftStr), lowerBound, parser.parse(rightStr), upperBound); } }
From source file:org.apache.druid.sql.calcite.filtration.MoveTimeFiltersToIntervals.java
private static Range<Long> toLongRange(final Range<BoundValue> range) { if (!range.hasUpperBound() && !range.hasLowerBound()) { return Range.all(); } else if (range.hasUpperBound() && !range.hasLowerBound()) { return Range.upTo(Long.parseLong(range.upperEndpoint().getValue()), range.upperBoundType()); } else if (!range.hasUpperBound() && range.hasLowerBound()) { return Range.downTo(Long.parseLong(range.lowerEndpoint().getValue()), range.lowerBoundType()); } else {// www . ja va 2 s .com return Range.range(Long.parseLong(range.lowerEndpoint().getValue()), range.lowerBoundType(), Long.parseLong(range.upperEndpoint().getValue()), range.upperBoundType()); } }
From source file:net.sourceforge.ganttproject.task.algorithm.SchedulerImpl.java
private void schedule(Node node) { Logger logger = GPLogger.getLogger(this); GPLogger.debug(logger, "Scheduling node %s", node); Range<Date> startRange = Range.all(); Range<Date> endRange = Range.all(); Range<Date> weakStartRange = Range.all(); Range<Date> weakEndRange = Range.all(); List<Date> subtaskRanges = Lists.newArrayList(); List<DependencyEdge> incoming = node.getIncoming(); GPLogger.debug(logger, ".. #incoming edges=%d", incoming.size()); for (DependencyEdge edge : incoming) { if (!edge.refresh()) { continue; }//from w w w . j ava2 s . co m if (edge instanceof ImplicitSubSuperTaskDependency) { subtaskRanges.add(edge.getStartRange().upperEndpoint()); subtaskRanges.add(edge.getEndRange().lowerEndpoint()); } else { if (edge.isWeak()) { weakStartRange = weakStartRange.intersection(edge.getStartRange()); weakEndRange = weakEndRange.intersection(edge.getEndRange()); } else { startRange = startRange.intersection(edge.getStartRange()); endRange = endRange.intersection(edge.getEndRange()); } } if (startRange.isEmpty() || endRange.isEmpty()) { GPLogger.logToLogger("both start and end ranges were calculated as empty for task=" + node.getTask() + ". Skipping it"); } } GPLogger.debug(logger, "..Ranges: start=%s end=%s weakStart=%s weakEnd=%s", startRange, endRange, weakStartRange, weakEndRange); Range<Date> subtasksSpan = subtaskRanges.isEmpty() ? Range.closed(node.getTask().getStart().getTime(), node.getTask().getEnd().getTime()) : Range.encloseAll(subtaskRanges); Range<Date> subtreeStartUpwards = subtasksSpan .span(Range.downTo(node.getTask().getStart().getTime(), BoundType.CLOSED)); Range<Date> subtreeEndDownwards = subtasksSpan .span(Range.upTo(node.getTask().getEnd().getTime(), BoundType.CLOSED)); GPLogger.debug(logger, "..Subtasks span=%s", subtasksSpan); if (!startRange.equals(Range.all())) { startRange = startRange.intersection(weakStartRange); } else if (!weakStartRange.equals(Range.all())) { startRange = weakStartRange.intersection(subtreeStartUpwards); } if (!endRange.equals(Range.all())) { endRange = endRange.intersection(weakEndRange); } else if (!weakEndRange.equals(Range.all())) { endRange = weakEndRange.intersection(subtreeEndDownwards); } if (node.getTask().getThirdDateConstraint() == TaskImpl.EARLIESTBEGIN && node.getTask().getThird() != null) { startRange = startRange .intersection(Range.downTo(node.getTask().getThird().getTime(), BoundType.CLOSED)); GPLogger.debug(logger, ".. applying earliest start=%s. Now start range=%s", node.getTask().getThird(), startRange); } if (!subtaskRanges.isEmpty()) { startRange = startRange.intersection(subtasksSpan); endRange = endRange.intersection(subtasksSpan); } GPLogger.debug(logger, ".. finally, start range=%s", startRange); if (startRange.hasLowerBound()) { modifyTaskStart(node.getTask(), startRange.lowerEndpoint()); } if (endRange.hasUpperBound()) { GPCalendarCalc cal = node.getTask().getManager().getCalendar(); Date endDate = endRange.upperEndpoint(); TimeUnit timeUnit = node.getTask().getDuration().getTimeUnit(); if (DayMask.WORKING == (cal.getDayMask(endDate) & DayMask.WORKING)) { // in case if calculated end date falls on first day after holidays (say, on Monday) // we'll want to modify it a little bit, so that it falls on that holidays start // If we don't do this, it will be done automatically the next time task activities are recalculated, // and thus task end date will keep changing Date closestWorkingEndDate = cal.findClosest(endDate, timeUnit, GPCalendarCalc.MoveDirection.BACKWARD, GPCalendar.DayType.WORKING); Date closestNonWorkingEndDate = cal.findClosest(endDate, timeUnit, GPCalendarCalc.MoveDirection.BACKWARD, GPCalendar.DayType.NON_WORKING, closestWorkingEndDate); // If there is a non-working date between current task end and closest working date // then we're really just after holidays if (closestNonWorkingEndDate != null && closestWorkingEndDate.before(closestNonWorkingEndDate)) { // we need to adjust-right closest working date to position to the very beginning of the holidays interval Date nonWorkingPeriodStart = timeUnit.adjustRight(closestWorkingEndDate); if (nonWorkingPeriodStart.after(node.getTask().getStart().getTime())) { endDate = nonWorkingPeriodStart; } } } modifyTaskEnd(node.getTask(), endDate); } }
From source file:org.apache.cassandra.cql3.restrictions.TokenFilter.java
/** * Converts the specified slice into a range set. * * @param slice the slice to convert/*www .ja v a 2s .c o m*/ * @param options the query option * @return the range set corresponding to the specified slice * @throws InvalidRequestException if the request is invalid */ private static RangeSet<Token> toRangeSet(TokenRestriction slice, QueryOptions options) throws InvalidRequestException { if (slice.hasBound(START)) { Token start = deserializeToken(slice.bounds(START, options).get(0)); BoundType startBoundType = toBoundType(slice.isInclusive(START)); if (slice.hasBound(END)) { BoundType endBoundType = toBoundType(slice.isInclusive(END)); Token end = deserializeToken(slice.bounds(END, options).get(0)); if (start.equals(end) && (BoundType.OPEN == startBoundType || BoundType.OPEN == endBoundType)) return ImmutableRangeSet.of(); if (start.compareTo(end) <= 0) return ImmutableRangeSet.of(Range.range(start, startBoundType, end, endBoundType)); return ImmutableRangeSet.<Token>builder().add(Range.upTo(end, endBoundType)) .add(Range.downTo(start, startBoundType)).build(); } return ImmutableRangeSet.of(Range.downTo(start, startBoundType)); } Token end = deserializeToken(slice.bounds(END, options).get(0)); return ImmutableRangeSet.of(Range.upTo(end, toBoundType(slice.isInclusive(END)))); }
From source file:org.immutables.mongo.repository.internal.Support.java
@SuppressWarnings("unchecked") public static <T extends Comparable<T>> Range<Comparable<Object>> writable(TypeAdapter<T> adapter, Range<T> range) {/*from w ww . java 2 s.co m*/ if (range.hasLowerBound() && range.hasUpperBound()) { return Range.range((Comparable<Object>) writable(adapter, range.lowerEndpoint()), range.lowerBoundType(), (Comparable<Object>) writable(adapter, range.upperEndpoint()), range.upperBoundType()); } else if (range.hasLowerBound()) { return Range.downTo((Comparable<Object>) writable(adapter, range.lowerEndpoint()), range.lowerBoundType()); } else if (range.hasUpperBound()) { return Range.upTo((Comparable<Object>) writable(adapter, range.upperEndpoint()), range.upperBoundType()); } throw new AssertionError(); }
From source file:com.tinspx.util.base.NumberUtils.java
@SuppressWarnings("unchecked") public static Range<Long> toLongRange(@NonNull Range<? extends Number> range) { if (range.hasLowerBound()) { if (range.hasUpperBound()) { if (range.lowerEndpoint() instanceof Long && range.upperEndpoint() instanceof Long) { return (Range<Long>) range; }/*from w w w. ja va 2 s. co m*/ return Range.range(range.lowerEndpoint().longValue(), range.lowerBoundType(), range.upperEndpoint().longValue(), range.upperBoundType()); } else { if (range.lowerEndpoint() instanceof Long) { return (Range<Long>) range; } return Range.downTo(range.lowerEndpoint().longValue(), range.lowerBoundType()); } } else if (range.hasUpperBound()) { if (range.upperEndpoint() instanceof Long) { return (Range<Long>) range; } return Range.upTo(range.upperEndpoint().longValue(), range.upperBoundType()); } else { return Range.all(); } }
From source file:com.tinspx.util.base.NumberUtils.java
@SuppressWarnings("rawtypes") public static <F extends Comparable, T extends Comparable> Range<T> transform(@NonNull Range<F> range, @NonNull Function<? super F, ? extends T> function) { if (range.hasLowerBound()) { if (range.hasUpperBound()) { return Range.range(function.apply(range.lowerEndpoint()), range.lowerBoundType(), function.apply(range.upperEndpoint()), range.upperBoundType()); } else {//from ww w .j a v a 2s.c o m return Range.downTo(function.apply(range.lowerEndpoint()), range.lowerBoundType()); } } else if (range.hasUpperBound()) { return Range.upTo(function.apply(range.upperEndpoint()), range.upperBoundType()); } else { return Range.all(); } }
From source file:org.nmdp.ngs.fca.Interval.java
/** * Find the interval that extends ahead of this one. * @return interval with lower endpoint equal to this upper endpoint and * upper endpoint equal to infinity//w w w . jav a 2 s.c o m * @see #behind() */ public Interval<C> ahead() { if (this.hasNone()) { return new Interval(this.dimension, Range.all()); } if (this.range.equals(Range.all())) { return new Interval(this.dimension); } return new Interval(this.dimension, Range.downTo(this.range.upperEndpoint(), reverse(this.range.upperBoundType()))); }