private void normalize(List<ApplianceVmFirewallRuleVO> vos) { String l3Uuid = null; String sip = null; String dip = null; String allowedCidr = null; ApplianceVmFirewallProtocol protocol = null; RangeSet rset = new RangeSet(); for (ApplianceVmFirewallRuleVO vo : vos) { if (l3Uuid == null) { l3Uuid = vo.getL3NetworkUuid(); } if (sip == null) { sip = vo.getSourceIp(); } if (dip == null) { dip = vo.getDestIp(); } if (allowedCidr == null) { allowedCidr = vo.getAllowCidr(); } if (protocol == null) { protocol = vo.getProtocol(); } rset.closed(vo.getStartPort(), vo.getEndPort()); } List<Range> rs = rset.merge(); for (Range r : rs) { ApplianceVmFirewallRuleTO to = new ApplianceVmFirewallRuleTO(); to.setDestIp(dip); to.setNicMac(l3NicMacMap.get(l3Uuid)); to.setProtocol(protocol.toString()); to.setAllowCidr(allowedCidr); to.setSourceIp(sip); to.setStartPort((int) r.getStart()); to.setEndPort((int) r.getEnd()); result.add(to); } }