public static RangeSet valueOf(Collection<Long> numbers) { RangeSet results = new RangeSet(); if (numbers.isEmpty()) { return results; } List<Long> asc = numbers.stream().sorted().distinct().collect(Collectors.toList()); Long begin = asc.remove(0); Long end = begin; for (long n : asc) { long lastEnd = end; if (n != ++end) { results.ranges.add(new Range(begin, lastEnd)); begin = n; end = n; } } results.ranges.add(new Range(begin, end)); return results; }
@Override public RangeSet getVipUsePortRange(String vipUuid, String protocol, VipUseForList useForList){ RangeSet portRangeList = new RangeSet(); List<RangeSet.Range> portRanges = new ArrayList<RangeSet.Range>(); List<String> protocols = new ArrayList<>(); if (LoadBalancerConstants.LB_PROTOCOL_UDP.equals(protocol.toLowerCase())) { protocols.add(LoadBalancerConstants.LB_PROTOCOL_UDP); } else { protocols.add(LoadBalancerConstants.LB_PROTOCOL_TCP); protocols.add(LoadBalancerConstants.LB_PROTOCOL_HTTP); protocols.add(LoadBalancerConstants.LB_PROTOCOL_HTTPS); } List<Tuple> lbPortList = SQL.New("select lbl.loadBalancerPort, lbl.loadBalancerPort from LoadBalancerListenerVO lbl, LoadBalancerVO lb " + "where lbl.protocol in (:protocols) and lbl.loadBalancerUuid=lb.uuid and lb.vipUuid = :vipUuid", Tuple.class). param("protocols", protocols). param("vipUuid", vipUuid).list(); Iterator<Tuple> it = lbPortList.iterator(); while (it.hasNext()) { Tuple strRange = it.next(); int start = strRange.get(0, Integer.class); int end = strRange.get(1, Integer.class); RangeSet.Range range = new RangeSet.Range(start, end); portRanges.add(range); } portRangeList.setRanges(portRanges); return portRangeList; }
@Override public RangeSet getVipUsePortRange(String vipUuid, String protocol, VipUseForList useForList){ RangeSet portRangeList = new RangeSet(); List<RangeSet.Range> portRanges = new ArrayList<RangeSet.Range>(); if (protocol.toUpperCase().equals(PortForwardingProtocolType.UDP.toString()) || protocol.toUpperCase().equals(PortForwardingProtocolType.TCP.toString())) { List<Tuple> pfPortList = Q.New(PortForwardingRuleVO.class).select(PortForwardingRuleVO_.vipPortStart, PortForwardingRuleVO_.vipPortEnd) .eq(PortForwardingRuleVO_.vipUuid, vipUuid).eq(PortForwardingRuleVO_.protocolType, PortForwardingProtocolType.valueOf(protocol.toUpperCase())).listTuple(); Iterator<Tuple> it = pfPortList.iterator(); while (it.hasNext()){ Tuple strRange = it.next(); int start = strRange.get(0, Integer.class); int end = strRange.get(1, Integer.class); RangeSet.Range range = new RangeSet.Range(start, end); portRanges.add(range); } } portRangeList.setRanges(portRanges); return portRangeList; }
private List<String> getVipUsedPortList(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 : vipGetUsedPortRangeExtensionPoints) { RangeSet range = ext.getVipUsePortRange(vipUuid, protocol, vipUseForList); portRangeList.addAll(range.getRanges()); } RangeSet portRange = new RangeSet(); portRange.setRanges(portRangeList); return portRange.sortAndToString(); }
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; }