List of usage examples for com.google.common.collect Range isConnected
public boolean isConnected(Range<C> other)
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; } } }