public List<Range> mergeAndSort() { List<Range> ret = merge(); sort(); return ret; }
public List<String> sortAndToString() { List<String> strList = new ArrayList<String>(); if (ranges.isEmpty()){ return strList; } sort(); Iterator<Range> it = ranges.iterator(); while (it.hasNext()){ Range range = it.next(); for (long i = range.start; i <= range.end; i++){ strList.add(Long.toString(i)); } } return strList; }
public List<Range> merge() { List<Range> ret = new ArrayList<Range>(); if (ranges.isEmpty()) { return ret; } sort(); Range r = ranges.get(0); for (int i=1; i<ranges.size(); i++) { Range r1 = ranges.get(i); if (r.isOverlap(r1) || r.isConnected(r1)) { r.merge(r1); } else { ret.add(r); r = r1; } } ret.add(r); return ret; }
private void checkVipPortConfliction(String vipUuid, String protocol, RangeSet.Range range){ RangeSet portRangeList = getVipPortRangeList(vipUuid, protocol); portRangeList.sort(); Iterator<RangeSet.Range> it = portRangeList.getRanges().iterator(); while (it.hasNext()){ RangeSet.Range cur = it.next(); if (cur.isOverlap(range) || range.isOverlap(cur)){ throw new ApiMessageInterceptionException(operr("Current port range[%s, %s] is conflicted with used port range [%s, %s] with vip[uuid: %s] protocol: %s ", Long.toString(range.getStart()), Long.toString(range.getEnd()), Long.toString(cur.getStart()), Long.toString(cur.getEnd()), vipUuid, protocol)); } } } }
private RangeSet getVipPortRangeList(String vipUuid, String protocol){ String useFor = Q.New(VipVO.class).select(VipVO_.useFor).eq(VipVO_.uuid, vipUuid).findValue(); VipUseForList vipUseForList; if (useFor != null){ vipUseForList = new VipUseForList(useFor); } else { vipUseForList = new VipUseForList(); } List<RangeSet.Range> portRangeList = new ArrayList<RangeSet.Range>(); for (VipGetUsedPortRangeExtensionPoint ext : pluginRgty.getExtensionList(VipGetUsedPortRangeExtensionPoint.class)){ RangeSet range = ext.getVipUsePortRange(vipUuid, protocol, vipUseForList); portRangeList.addAll(range.getRanges()); } RangeSet portRange = new RangeSet(); portRange.setRanges(portRangeList); portRange.sort(); return portRange; }