@Override public boolean rightAligned(final Interval s) { return (getEnd() == s.getEnd()); }
@Override public boolean immediatelyFollows(final Interval s) { return (getStart() == s.getEnd()); }
/** * Copy constructor. * * @param interval * the original interval. */ public ImmutableInterval(final Interval interval) { this(interval.getStart(), interval.getEnd()); }
@Override public boolean follows(final Interval s) { return (getStart() >= s.getEnd()); }
@Override public boolean endsEarilerThan(final Interval i) { return getEnd() < i.getEnd(); }
@Override public boolean endsLaterThan(final Interval i) { return getEnd() > i.getEnd(); }
@Override public boolean endsSameAs(final Interval s) { return getEnd() == s.getEnd(); }
public static Interval grow(final Collection<? extends Interval> ivals) { if (ivals.size() == 0) { return null; } final Interval first = ivals.iterator().next(); int start = first.getStart(); int end = first.getEnd(); for (final Interval s : ivals) { if (s.getStart() < start) { start = s.getStart(); } if (s.getEnd() > end) { end = s.getEnd(); } } return new ImmutableInterval(start, end); }
@Override public boolean sameExtent(final Interval s) { return (getStart() == s.getStart()) && (getEnd() == s.getEnd()); }
/** * Returns true if the current includes the given interval. The inclusion does not have to be * proper, so equal boundaries are allowed. */ @Override public boolean contains(final Interval i) { return (getStart() <= i.getStart()) && (getEnd() >= i.getEnd()); }
@Override public boolean overlaps(final Interval i) { // Cases: // // start end // | | // 1 ####### | // 2 | ####### // 3 #################################### // 4 | ####### | // | | return (((i.getStart() <= getStart()) && (getStart() < i.getEnd())) || // Case 1-3 ((i.getStart() < getEnd()) && (getEnd() <= i.getEnd())) || // Case 1-3 ((getStart() <= i.getStart()) && (i.getEnd() <= getEnd()))); // Case 4 }
@Override public boolean overlapsLeft(final Interval i) { return (getStart() <= i.getStart()) && (getEnd() >= i.getStart()) && (getEnd() <= i.getEnd()); }
@Override public Interval overlap(final Interval i) { final boolean start_inside = (getStart() <= i.getStart()) && (i.getStart() < getEnd()); final boolean end_inside = (getStart() < i.getEnd()) && (i.getEnd() <= getEnd()); if (start_inside) { if (end_inside) { return new ImmutableInterval(i); } else if (getEnd() <= i.getEnd()) { return new ImmutableInterval(i.getStart(), getEnd()); } } else if (end_inside && (i.getStart() <= getStart())) { return new ImmutableInterval(getStart(), i.getEnd()); } else if ((i.getStart() <= getStart()) && (getEnd() <= i.getEnd())) { return new ImmutableInterval(this); } return null; }
private void updateOffsets(CAS sourceView, JCas targetView, AlignedString as, PositiveIntSet aCopiedFs) throws CASException, AnalysisEngineProcessException { // We only update annotations that were copied, nothing that was already there. IntListIterator it = aCopiedFs.iterator(); while (it.hasNext()) { FeatureStructure fs = targetView.getLowLevelCas().ll_getFSForRef(it.next()); if (fs instanceof Annotation) { // Now we update the offsets Annotation a = (Annotation) fs; // System.out.printf("Orig %s %3d %3d : %s%n", a.getType().getShortName(), // a.getBegin(), a.getEnd(), // sourceView.getDocumentText().substring(a.getBegin(), a.getEnd())); // System.out.printf("Before %s %3d %3d : %s%n", a.getType().getShortName(), // a.getBegin(), a.getEnd(), a.getCoveredText()); Interval resolved = as.resolve(new ImmutableInterval(a.getBegin(), a.getEnd())); a.setBegin(resolved.getStart()); a.setEnd(resolved.getEnd()); // System.out.printf("After %s %3d %3d : %s%n", a.getType().getShortName(), // a.getBegin(), a.getEnd(), a.getCoveredText()); } } } }
.getBegin(), annoFs.getEnd())); fsCopy.setIntValue(beginFeature, i.getStart()); fsCopy.setIntValue(endFeature, i.getEnd());
final int ulend = ulpos.getEnd();