private void validateIntersections( final PreparedUpdate update, final UpdateContext updateContext, final IpInterval ipInterval, final IpTree ipTree) { final List<IpEntry> parent = ipTree.findFirstLessSpecific(ipInterval); Validate.notEmpty(parent, "Should always have a parent"); Interval firstIntersecting = null; final List<IpEntry> childEntries = ipTree.findFirstMoreSpecific((IpInterval) parent.get(0).getKey()); for (final IpEntry childEntry : childEntries) { final Interval child = childEntry.getKey(); if (child.intersects(ipInterval) && !(child.contains(ipInterval) || ipInterval.contains(child))) { if (firstIntersecting == null || firstIntersecting .singletonIntervalAtLowerBound() .compareUpperBound(child.singletonIntervalAtLowerBound()) > 0) { firstIntersecting = child; } } } if (firstIntersecting != null) { updateContext.addMessage(update, UpdateMessages.intersectingRange(firstIntersecting)); } }
@SuppressWarnings("unchecked") private List<RpslObject> getIpObjects(final IpTree ipTree, final IpInterval addressPrefix) { final List<IpEntry> ipEntries = ipTree.findExactOrFirstLessSpecific(addressPrefix); final List<RpslObject> ipObjects = Lists.newArrayListWithCapacity(ipEntries.size()); for (final IpEntry ipEntry : ipEntries) { ipObjects.add(objectDao.getById(ipEntry.getObjectId())); } return ipObjects; }