public CompareResult<InstancePrivateIpAddress> comparePrivateIpAddresses(List<InstancePrivateIpAddress> oldPrivateIpAddresses, List<InstancePrivateIpAddress> newPrivateIpAddresses) { Validate.noNullElements(new Object[]{oldPrivateIpAddresses, newPrivateIpAddresses}); CompareResult<InstancePrivateIpAddress> result = new CompareResult<>(); Map<String, InstancePrivateIpAddress> oldPrivateIpAddressMap = generatePrivateIpAddress(oldPrivateIpAddresses); Map<String, InstancePrivateIpAddress> newPrivateIpAddressMap = generatePrivateIpAddress(newPrivateIpAddresses); for (String newKey : newPrivateIpAddressMap.keySet()) { InstancePrivateIpAddress newIPI = newPrivateIpAddressMap.get(newKey); InstancePrivateIpAddress oldIPI = oldPrivateIpAddressMap.get(newKey); if (oldIPI != null) { if (!oldIPI.equals(newIPI)) { result.getUpdate().add(Pair.of(oldIPI, newIPI)); } } else { result.getAdd().add(newIPI); } oldPrivateIpAddressMap.remove(newKey); } for (String oldKey : oldPrivateIpAddressMap.keySet()) { InstancePrivateIpAddress oldPrivateIpAddress = oldPrivateIpAddressMap.get(oldKey); result.getDelete().add(oldPrivateIpAddress); } return result; }
public Map<String, InstancePrivateIpAddress> generatePrivateIpAddress(List<InstancePrivateIpAddress> privateIpAddresses) { Map<String, InstancePrivateIpAddress> result = new HashMap<>(); for (InstancePrivateIpAddress privateIpAddress : privateIpAddresses) { result.put(privateIpAddress.getPrivateIpAddress(), privateIpAddress); } return result; }
@Override public int compare(InstancePrivateIpAddress ipia1, InstancePrivateIpAddress ipia2) { validateNotEqual(ipia1.getPrivateIpAddress(), ipia2.getPrivateIpAddress()); return new CompareToBuilder().append(ipia1.getPrivateIpAddress(), ipia2.getPrivateIpAddress()).toComparison(); }