public boolean isOperative(ISegment seg) { if (seg.getStatus() != SegmentStatusEnum.READY) return false; for (ISegment other : this) { if (other == seg) continue; if (other.getSegRange().overlaps(seg.getSegRange())) return false; } return true; } }
@Override public int compareTo(ISegment other) { int comp = this.getSegRange().start.compareTo(other.getSegRange().start); if (comp != 0) return comp; return this.getSegRange().end.compareTo(other.getSegRange().end); }
public Pair<Boolean, Boolean> fitInSegments(ISegment newOne) { if (this.isEmpty()) return null; ISegment first = this.get(0); ISegment last = this.get(this.size() - 1); Endpoint start = newOne.getSegRange().start; Endpoint end = newOne.getSegRange().end; boolean startFit = false; boolean endFit = false; for (ISegment sss : this) { if (sss == newOne) continue; startFit = startFit || (start.equals(sss.getSegRange().start) || start.equals(sss.getSegRange().end)); endFit = endFit || (end.equals(sss.getSegRange().start) || end.equals(sss.getSegRange().end)); } if (!startFit && endFit && newOne == first) startFit = true; if (!endFit && startFit && newOne == last) endFit = true; return Pair.newPair(startFit, endFit); }
public Segments<T> getMergingSegments(T mergedSegment) { Segments<T> result = new Segments(); if (mergedSegment == null) return result; for (T seg : this) { if (seg.getStatus() != SegmentStatusEnum.READY && seg.getStatus() != SegmentStatusEnum.READY_PENDING) continue; if (seg == mergedSegment) continue; if (mergedSegment.getSegRange().contains(seg.getSegRange())) { result.add(seg); } } return result; }
for (ISegment seg : ready) { if (pre != null) { if (pre.getSegRange().overlaps(seg.getSegRange())) throw new IllegalStateException("Segments overlap: " + pre + " and " + seg); if (pre.getSegRange().apartBefore(seg.getSegRange())) logger.warn("Hole between adjacent READY segments " + pre + " and " + seg); for (ISegment seg : news) { if (pre != null) { if (pre.getSegRange().overlaps(seg.getSegRange())) throw new IllegalStateException("Segments overlap: " + pre + " and " + seg); if (seg.getSegRange().overlaps(aReady.getSegRange()) && !seg.getSegRange().contains(aReady.getSegRange())) throw new IllegalStateException("Segments overlap: " + aReady + " and " + seg);
if (is.getSegRange().start.compareTo(js.getSegRange().start) == 0) { if (is.getSegRange().end.compareTo(js.getSegRange().end) <= 0) { tobe.remove(i); } else { if (is.getSegRange().end.compareTo(js.getSegRange().start) <= 0) { i++; j++;
public Pair<T, T> findMergeOffsetsByDateRange(TSRange tsRange, long skipSegDateRangeCap) { // must be offset cube Segments result = new Segments(); for (ISegment seg : this) { // include if date range overlaps if (tsRange.overlaps(seg.getTSRange())) { // reject too big segment if (seg.getTSRange().duration() > skipSegDateRangeCap) break; // reject holes if (result.size() > 0 && !result.getLast().getSegRange().connects(seg.getSegRange())) break; result.add(seg); } } if (result.size() <= 1) return null; else return (Pair<T, T>) Pair.newPair(result.getFirst(), result.getLast()); }
if (building.getSegRange().contains(ready.getSegRange())) { mergingSegs.add(ready); return new SegmentRange(p.getFirst().getSegRange().start.v, p.getSecond().getSegRange().end.v);
public boolean isOperative(ISegment seg) { if (seg.getStatus() != SegmentStatusEnum.READY) return false; for (ISegment other : this) { if (other == seg) continue; if (other.getSegRange().overlaps(seg.getSegRange())) return false; } return true; } }
@Override public int compareTo(ISegment other) { int comp = this.getSegRange().start.compareTo(other.getSegRange().start); if (comp != 0) return comp; return this.getSegRange().end.compareTo(other.getSegRange().end); }
public Pair<Boolean, Boolean> fitInSegments(ISegment newOne) { if (this.isEmpty()) return null; ISegment first = this.get(0); ISegment last = this.get(this.size() - 1); Endpoint start = newOne.getSegRange().start; Endpoint end = newOne.getSegRange().end; boolean startFit = false; boolean endFit = false; for (ISegment sss : this) { if (sss == newOne) continue; startFit = startFit || (start.equals(sss.getSegRange().start) || start.equals(sss.getSegRange().end)); endFit = endFit || (end.equals(sss.getSegRange().start) || end.equals(sss.getSegRange().end)); } if (!startFit && endFit && newOne == first) startFit = true; if (!endFit && startFit && newOne == last) endFit = true; return Pair.newPair(startFit, endFit); }
public Segments<T> getMergingSegments(T mergedSegment) { Segments<T> result = new Segments(); if (mergedSegment == null) return result; for (T seg : this) { if (seg.getStatus() != SegmentStatusEnum.READY && seg.getStatus() != SegmentStatusEnum.READY_PENDING) continue; if (seg == mergedSegment) continue; if (mergedSegment.getSegRange().contains(seg.getSegRange())) { result.add(seg); } } return result; }
for (ISegment seg : ready) { if (pre != null) { if (pre.getSegRange().overlaps(seg.getSegRange())) throw new IllegalStateException("Segments overlap: " + pre + " and " + seg); if (pre.getSegRange().apartBefore(seg.getSegRange())) logger.warn("Hole between adjacent READY segments " + pre + " and " + seg); for (ISegment seg : news) { if (pre != null) { if (pre.getSegRange().overlaps(seg.getSegRange())) throw new IllegalStateException("Segments overlap: " + pre + " and " + seg); if (seg.getSegRange().overlaps(aReady.getSegRange()) && !seg.getSegRange().contains(aReady.getSegRange())) throw new IllegalStateException("Segments overlap: " + aReady + " and " + seg);
if (is.getSegRange().start.compareTo(js.getSegRange().start) == 0) { if (is.getSegRange().end.compareTo(js.getSegRange().end) <= 0) { tobe.remove(i); } else { if (is.getSegRange().end.compareTo(js.getSegRange().start) <= 0) { i++; j++;
if (building.getSegRange().contains(ready.getSegRange())) { mergingSegs.add(ready); return new SegmentRange(p.getFirst().getSegRange().start.v, p.getSecond().getSegRange().end.v);
public Pair<T, T> findMergeOffsetsByDateRange(TSRange tsRange, long skipSegDateRangeCap) { // must be offset cube Segments result = new Segments(); for (ISegment seg : this) { // include if date range overlaps if (tsRange.overlaps(seg.getTSRange())) { // reject too big segment if (seg.getTSRange().duration() > skipSegDateRangeCap) break; // reject holes if (result.size() > 0 && !result.getLast().getSegRange().connects(seg.getSegRange())) break; result.add(seg); } } if (result.size() <= 1) return null; else return (Pair<T, T>) Pair.newPair(result.getFirst(), result.getLast()); }