package org.zstack.network.securitygroup; import org.zstack.utils.data.Pair; import org.zstack.utils.network.NetworkUtils; import java.util.ArrayList; import java.util.List; public class SecurityGroupIngressRuleTO extends SecurityGroupRuleInventory { private List<String> friendCidrs; public SecurityGroupIngressRuleTO() { } public SecurityGroupIngressRuleTO(SecurityGroupRuleInventory parent) { this.setAllowedCidr(parent.getAllowedCidr()); this.setCreateDate(parent.getCreateDate()); this.setEndPort(parent.getEndPort()); this.setLastOpDate(parent.getLastOpDate()); this.setProtocol(parent.getProtocol()); this.setSecurityGroupUuid(parent.getSecurityGroupUuid()); this.setStartPort(parent.getStartPort()); this.setType(parent.getType()); this.setUuid(parent.getUuid()); } public List<String> getFriendCidrs() { return friendCidrs; } public void setFriendCidrs(List<String> friendCidrs) { this.friendCidrs = friendCidrs; } public void setFirendCidrsByUnrangedIps(List<String> f) { List<Pair<String, String>> ranges = NetworkUtils.findConsecutiveIpRange(f); friendCidrs = new ArrayList<String>(ranges.size()); for (Pair<String, String> r : ranges) { if (r.first().equals(r.second())) { friendCidrs.add(r.first()); } else { friendCidrs.add(String.format("%s-%s", r.first(), r.second())); } } } }