package org.ovirt.engine.core.dao; import java.util.Arrays; import java.util.Collection; import java.util.List; import javax.inject.Named; import javax.inject.Singleton; import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.common.businessentities.VmGuestAgentInterface; import org.ovirt.engine.core.compat.Guid; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @Named @Singleton public class VmGuestAgentInterfaceDaoImpl extends BaseDao implements VmGuestAgentInterfaceDao { private static final String DELIMITER = ","; @Override public List<VmGuestAgentInterface> getAllForVm(Guid vmId) { return getAllForVm(vmId, null, false); } @Override public List<VmGuestAgentInterface> getAllForVm(Guid vmId, Guid userId, boolean filtered) { return getCallsHandler().executeReadList("GetVmGuestAgentInterfacesByVmId", vmGuestAgentInterfaceRowMapper, getCustomMapSqlParameterSource().addValue("vm_id", vmId) .addValue("user_id", userId) .addValue("filtered", filtered)); } @Override public void save(VmGuestAgentInterface vmGuestAgentInterface) { getCallsHandler().executeModification("InsertVmGuestAgentInterface", createFullParametersMapper(vmGuestAgentInterface)); } @Override public void removeAllForVms(Collection<Guid> vmIds) { getCallsHandler().executeModification("DeleteVmGuestAgentInterfacesByVmIds", getCustomMapSqlParameterSource().addValue("vm_ids", createArrayOfUUIDs(vmIds))); } protected MapSqlParameterSource createFullParametersMapper(VmGuestAgentInterface entity) { return getCustomMapSqlParameterSource() .addValue("vm_id", entity.getVmId()) .addValue("interface_name", entity.getInterfaceName()) .addValue("mac_address", entity.getMacAddress()) .addValue("ipv4_addresses", getIpAddressesAsString(entity.getIpv4Addresses())) .addValue("ipv6_addresses", getIpAddressesAsString(entity.getIpv6Addresses())); } private static String getIpAddressesAsString(List<String> ipAddresses) { return StringUtils.join(ipAddresses, DELIMITER); } protected static final RowMapper<VmGuestAgentInterface> vmGuestAgentInterfaceRowMapper = (rs, rowNum) -> { VmGuestAgentInterface vmGuestAgentInterface = new VmGuestAgentInterface(); vmGuestAgentInterface.setVmId(getGuidDefaultEmpty(rs, "vm_id")); vmGuestAgentInterface.setInterfaceName(rs.getString("interface_name")); vmGuestAgentInterface.setMacAddress(rs.getString("mac_address")); vmGuestAgentInterface.setIpv4Addresses(getListOfIpAddresses(rs.getString("ipv4_addresses"))); vmGuestAgentInterface.setIpv6Addresses(getListOfIpAddresses(rs.getString("ipv6_addresses"))); return vmGuestAgentInterface; }; private static List<String> getListOfIpAddresses(String ipAddressesAsString) { return ipAddressesAsString == null ? null : Arrays.asList(StringUtils.split(ipAddressesAsString, DELIMITER)); } }