private void checkSegmentOffset(List<RealizationEntry> realizationEntries) { List<SegmentRange> segmentRanges = Lists.newArrayList(); for (RealizationEntry entry : realizationEntries) { if (entry.getType() != RealizationType.CUBE) { throw new IllegalArgumentException("Wrong realization type: " + entry.getType() + ", only cube supported. "); } CubeInstance cubeInstance = cubeManager.getCube(entry.getRealization()); Segments<CubeSegment> segments = cubeInstance.getSegments(); for (CubeSegment segment : segments) { segmentRanges.add(segment.getSegRange()); } } if (segmentRanges.size() >= 2) { Collections.sort(segmentRanges); for (int i = 0; i < segmentRanges.size() - 1; i++) { if (segmentRanges.get(i).overlaps(segmentRanges.get(i + 1))) { throw new IllegalArgumentException("Segments has overlap, could not hybrid. First Segment Range: [" + segmentRanges.get(i).start.v + "," + segmentRanges.get(i).end.v + "], Second Segment Range: [" + segmentRanges.get(i + 1).start.v + "," + segmentRanges.get(i + 1).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; } }
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())) 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);
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; } }
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())) 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);