Example usage for com.google.common.collect Range isConnected

List of usage examples for com.google.common.collect Range isConnected

Introduction

In this page you can find the example usage for com.google.common.collect Range isConnected.

Prototype

public boolean isConnected(Range<C> other) 

Source Link

Document

Returns true if there exists a (possibly empty) range which is #encloses enclosed by both this range and other .

Usage

From source file:com.wandrell.tabletop.interval.util.IntervalArithmeticsUtils.java

/**
 * Indicates if two intervals overlap./*from w ww  .j a  va2s . c  o  m*/
 * 
 * @param intervalA
 *            first interval for the check
 * @param intervalB
 *            second interval for the check
 * @return {@code true} if they overlap, {@code false} otherwise
 */
public static final Boolean isOverlapped(final Interval intervalA, final Interval intervalB) {
    final Range<Integer> rangeA;
    final Range<Integer> rangeB;

    checkNotNull(intervalA, "Received a null pointer as the first interval");
    checkNotNull(intervalB, "Received a null pointer as the second interval");

    checkArgument(isValid(intervalA), "Received an invalid interval as the first argument");
    checkArgument(isValid(intervalB), "Received an invalid interval as the second argument");

    rangeA = Range.closed(intervalA.getLowerLimit(), intervalA.getUpperLimit());
    rangeB = Range.closed(intervalB.getLowerLimit(), intervalB.getUpperLimit());

    return rangeA.isConnected(rangeB);
}

From source file:org.sonatype.nexus.repository.partial.RangeParser.java

private List<Range<Long>> ensureSatisfiable(Range<Long> requested, Range content) {
    if (requested.isConnected(content)) {
        return singletonList(requested.intersection(content));
    } else {/*from  www . jav  a 2 s .com*/
        return UNSATISFIABLE;
    }
}

From source file:org.sonatype.nexus.repository.http.RangeParser.java

private List<Range<Long>> ensureSatisfiable(Range<Long> requested, Range<Long> content) {
    if (requested.isConnected(content)) {
        return singletonList(requested.intersection(content));
    } else {//from  ww w .  j a va2  s  .c  o  m
        return UNSATISFIABLE;
    }
}

From source file:com.giaybac.traprange.TrapRangeBuilder.java

/**
 * The result will be ordered by lowerEndpoint ASC
 *
 * @return/*from www .j  a  va2  s  .  c  o  m*/
 */
public List<Range<Integer>> build() {
    List<Range<Integer>> retVal = new ArrayList<>();
    //order range by lower Bound
    Collections.sort(ranges, new Comparator<Range>() {
        @Override
        public int compare(Range o1, Range o2) {
            return o1.lowerEndpoint().compareTo(o2.lowerEndpoint());
        }
    });

    for (Range<Integer> range : ranges) {
        if (retVal.isEmpty()) {
            retVal.add(range);
        } else {
            Range<Integer> lastRange = retVal.get(retVal.size() - 1);
            if (lastRange.isConnected(range)) {
                Range newLastRange = lastRange.span(range);
                retVal.set(retVal.size() - 1, newLastRange);
            } else {
                retVal.add(range);
            }
        }
    }
    //debug
    logger.debug("Found " + retVal.size() + " trap-range(s)");
    //return
    return retVal;
}

From source file:org.obiba.opal.web.gwt.app.client.magma.derive.helper.NumericalVariableDerivationHelper.java

public boolean isRangeOverlap(Range<N> range) {
    for (ValueMapEntry e : valueMapEntries) {
        Range<N> r = entryRangeMap.get(e);
        if (r != null && r.isConnected(range) && !r.intersection(range).isEmpty()) {
            // range overlap
            return true;
        }/*from   w ww  .java  2 s  . c o m*/
    }
    return false;
}

From source file:org.obiba.opal.web.gwt.app.client.magma.derive.helper.DerivedNumericalVariableGenerator.java

private void appendBounds(Iterable<Range<N>> ranges) {
    scriptBuilder.append("[");

    boolean first = true;
    Range<N> previousRange = null;
    N bound = null;//from w  w w.java  2 s  . c om
    for (Range<N> range : ranges) {
        if (previousRange != null && !previousRange.isConnected(range)) {
            appendBound(previousRange.upperEndpoint(), first);
            first = false;
        }

        if (range.hasLowerBound()) {
            bound = range.lowerEndpoint();
            appendBound(bound, first);
            first = false;
        }

        previousRange = range;
    }
    // close the last range
    if (previousRange != null && previousRange.hasUpperBound()) {
        appendBound(previousRange.upperEndpoint(), false);
    }
    scriptBuilder.append("]");
}

From source file:org.eclipse.fx.ui.controls.styledtext.internal.LineHelper.java

public Range<Integer> getSelection(int index) {
    Range<Integer> selection = getSelection();
    if (selection.isEmpty()) {
        return null;
    }//  www . j av  a 2  s  .  c o  m

    Range<Integer> range = getRange(index);

    Range<Integer> localSelection = null;

    if (range.isConnected(selection)) {
        Range<Integer> intersection = selection.intersection(range);
        localSelection = mapToLocal(index, intersection);
    }

    return localSelection;
}

From source file:com.cinchapi.concourse.server.concurrent.RangeLockService.java

/**
 * Return {@code true} if an attempt to used {@code token} for a
 * {@code type} lock is range blocked. Range blocking occurs when there is
 * another READ or WRITE happening such that allowing the proposed operation
 * to proceed could lead to inconsistent results (i.e. I want to write X but
 * there is a READ trying to find all values less than Y).
 * /*from w  w w. j a va  2s . c  om*/
 * @param type
 * @param token
 * @return {@code true} if range blocked
 */
protected final boolean isRangeBlocked(LockType type, RangeToken token) {
    Value value = token.getValues()[0];
    if (type == LockType.READ) {
        Preconditions.checkArgument(token.getOperator() != null);
        switch (token.getOperator()) {
        case EQUALS:
            return info.writes(token.getKey()).contains(value);
        case NOT_EQUALS:
            return info.writes(token.getKey()).size() > 1 || (info.writes(token.getKey()).size() == 1
                    && !info.writes(token.getKey()).contains(value));
        default:
            Iterator<Value> it = info.writes(token.getKey()).iterator();
            while (it.hasNext()) {
                Iterable<Range<Value>> ranges = RangeTokens.convertToRange(token);
                Value current = it.next();
                Range<Value> point = Range.singleton(current);
                for (Range<Value> range : ranges) {
                    RangeReadWriteLock lock = null;
                    if (range.isConnected(point) && !range.intersection(point).isEmpty()
                            && (lock = locks.get(RangeToken.forWriting(token.getKey(), current))) != null
                            && !lock.isWriteLockedByCurrentThread()) {
                        return true;
                    }
                }
            }
            return false;
        }
    } else {
        // If I want to WRITE X, I am blocked if there is a READ that
        // touches X (e.g. direct read for X or a range read that includes
        // X)
        return info.reads(token.getKey()).contains(value);

    }
}

From source file:edu.cmu.lti.oaqa.framework.eval.passage.PassageMAPEvalAggregator.java

private float getAvgPsgMAP(List<Passage> docs, List<Passage> gs) {
    if (gs.size() == 0) {
        return 0;
    }//ww  w .  j a  va2  s.c om
    int totalChars = 0;
    int overlapLength = 0;
    float sumPrecision = 0;
    int count = 0;
    Set<Passage> foundGoldTriplets = Sets.newHashSet();
    for (Passage doc : docs) {
        Range<Integer> docRange = Range.closedOpen(doc.getBegin(), doc.getEnd());
        totalChars += docRange.upperEndpoint() - docRange.lowerEndpoint();
        for (Passage g : gs) {
            if (!g.getUri().equals(doc.getUri()))
                continue;
            Range<Integer> gRange = Range.closedOpen(g.getBegin(), g.getEnd());
            if (!docRange.isConnected(gRange)) {
                continue;
            }
            Range<Integer> overlap = docRange.intersection(gRange);
            if (overlap.isEmpty()) {
                continue;
            }
            overlapLength += overlap.upperEndpoint() - overlap.lowerEndpoint();
            sumPrecision += (float) overlapLength / (float) totalChars;
            count++;
            foundGoldTriplets.add(g);
            break;
        }
    }
    int numZeros = Sets.difference(Sets.newHashSet(gs), foundGoldTriplets).size();
    return (float) sumPrecision / (float) (count + numZeros);
}

From source file:com.google.eclipse.protobuf.validation.ProtobufJavaValidator.java

private void errorOnConflicts(Range<Long> range, Multimap<EObject, Range<Long>> rangeUsages,
        EObject errorSource, EStructuralFeature errorFeature) {
    for (Map.Entry<EObject, Range<Long>> rangeUsage : rangeUsages.entries()) {
        Range<Long> usedRange = rangeUsage.getValue();
        if (range.isConnected(usedRange)) {
            EObject rangeUser = rangeUsage.getKey();

            boolean rangeIsSingular = range.hasUpperBound() && range.upperEndpoint() == range.lowerEndpoint();
            String template = rangeIsSingular ? tagNumberConflict : tagNumberRangeConflict;

            String rangeUserString;
            String usedRangeString = rangeToString(usedRange);
            if (rangeUser instanceof MessageField) {
                rangeUserString = String.format(conflictingField, nameResolver.nameOf(rangeUser),
                        usedRangeString);
            } else if (rangeUser instanceof Group) {
                rangeUserString = String.format(conflictingGroup, nameResolver.nameOf(rangeUser),
                        usedRangeString);
            } else if (rangeUser instanceof Reserved) {
                rangeUserString = String.format(conflictingReservedNumber, usedRangeString);
            } else {
                rangeUserString = String.format(conflictingExtensions, usedRangeString);
            }/* ww w  .j a  va  2s  . c  o m*/

            String message = String.format(template, rangeToString(range), rangeUserString);
            error(message, errorSource, errorFeature);

            // Don't report more than one error per element.
            return;
        }
    }
}