package org.ovirt.engine.core.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import org.apache.commons.lang.NotImplementedException; import org.ovirt.engine.core.common.businessentities.InterfaceComparerByMAC; import org.ovirt.engine.core.common.businessentities.InterfaceStatus; import org.ovirt.engine.core.common.businessentities.VmNetworkInterface; import org.ovirt.engine.core.common.businessentities.VmNetworkStatistics; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.NGuid; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.simple.ParameterizedRowMapper; /** * <code>VmNetworkInterfaceDAODbFacadeImpl</code> provides an implementation of {@link VmNetworkInterfaceDAO}. */ public class VmNetworkInterfaceDAODbFacadeImpl extends BaseDAODbFacade implements VmNetworkInterfaceDAO { @Override public VmNetworkInterface get(Guid id) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("id", id); ParameterizedRowMapper<VmNetworkInterface> mapper = new ParameterizedRowMapper<VmNetworkInterface>() { @Override public VmNetworkInterface mapRow(ResultSet rs, int rowNum) throws SQLException { VmNetworkInterface entity = new VmNetworkInterface(); entity.setType((Integer) rs.getObject("type")); entity.setMacAddress(rs.getString("mac_addr")); entity.setName(rs.getString("name")); entity.setVmId(NGuid.createGuidFromString(rs.getString("vm_guid"))); entity.setVmTemplateId(NGuid.createGuidFromString(rs.getString("vmt_guid"))); entity.setId(Guid.createGuidFromString(rs.getString("id"))); entity.setSpeed((Integer) rs.getObject("speed")); return entity; } }; return getCallsHandler().executeRead("Getvm_interfaceById", mapper, parameterSource); } @Override public List<VmNetworkInterface> getAllForVm(Guid id) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("vm_id", id); ParameterizedRowMapper<VmNetworkInterface> mapper = new ParameterizedRowMapper<VmNetworkInterface>() { @Override public VmNetworkInterface mapRow(ResultSet rs, int rowNum) throws SQLException { VmNetworkInterface entity = new VmNetworkInterface(); entity.getStatistics().setId(Guid.createGuidFromString(rs.getString("id"))); entity.getStatistics().setReceiveRate(rs.getDouble("rx_rate")); entity.getStatistics().setTransmitRate(rs.getDouble("tx_rate")); entity.getStatistics().setReceiveDropRate(rs.getDouble("rx_drop")); entity.getStatistics().setTransmitDropRate(rs.getDouble("tx_drop")); entity.getStatistics().setStatus(InterfaceStatus.forValue(rs.getInt("iface_status"))); entity.getStatistics().setVmId(NGuid.createGuidFromString(rs.getString("vm_guid"))); entity.setType((Integer) rs.getObject("type")); entity.setMacAddress(rs.getString("mac_addr")); entity.setNetworkName(rs.getString("network_name")); entity.setName(rs.getString("name")); entity.setVmId(NGuid.createGuidFromString(rs.getString("vm_guid"))); entity.setVmTemplateId(NGuid.createGuidFromString(rs.getString("vmt_guid"))); entity.setVmName(rs.getString("vm_name")); entity.setId(Guid.createGuidFromString(rs.getString("id"))); entity.setSpeed((Integer)rs.getObject("speed")); return entity; } }; List<VmNetworkInterface> results = getCallsHandler().executeReadList("Getvm_interfaceByvm_id", mapper, parameterSource); java.util.Collections.sort(results, new InterfaceComparerByMAC()); return results; } @SuppressWarnings("unchecked") @Override public List<VmNetworkInterface> getAllForTemplate(Guid id) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("template_id", id); ParameterizedRowMapper<VmNetworkInterface> mapper = new ParameterizedRowMapper<VmNetworkInterface>() { @Override public VmNetworkInterface mapRow(ResultSet rs, int rowNum) throws SQLException { VmNetworkInterface entity = new VmNetworkInterface(); entity.setStatistics(new VmNetworkStatistics()); entity.getStatistics().setId(Guid.createGuidFromString(rs.getString("id"))); entity.getStatistics().setReceiveRate(rs.getDouble("rx_rate")); entity.getStatistics().setTransmitRate(rs.getDouble("tx_rate")); entity.getStatistics().setReceiveDropRate(rs.getDouble("rx_drop")); entity.getStatistics().setTransmitDropRate(rs.getDouble("tx_drop")); entity.getStatistics().setStatus(InterfaceStatus.forValue(rs.getInt("iface_status"))); entity.setType((Integer) rs.getObject("type")); entity.setMacAddress(rs.getString("mac_addr")); entity.setNetworkName(rs.getString("network_name")); entity.setName(rs.getString("name")); entity.setVmId(NGuid.createGuidFromString(rs.getString("vm_guid"))); entity.setVmTemplateId(NGuid.createGuidFromString(rs.getString("vmt_guid"))); entity.setVmName(rs.getString("vm_name")); entity.setId(Guid.createGuidFromString(rs.getString("id"))); return entity; } }; return getCallsHandler().executeReadList("Getvm_interfaceBytemplate_id", mapper, parameterSource); } @Override public void save(VmNetworkInterface stats) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("id", stats.getId()) .addValue("mac_addr", stats.getMacAddress()) .addValue("name", stats.getName()) .addValue("network_name", stats.getNetworkName()) .addValue("speed", stats.getSpeed()) .addValue("vm_guid", stats.getVmId()) .addValue("vmt_guid", stats.getVmTemplateId()) .addValue("type", stats.getType()); getCallsHandler().executeModification("Insertvm_interface", parameterSource); } @Override public void update(VmNetworkInterface iface) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("id", iface.getId()) .addValue("mac_addr", iface.getMacAddress()) .addValue("name", iface.getName()) .addValue("network_name", iface.getNetworkName()) .addValue("speed", iface.getSpeed()) .addValue("vm_guid", iface.getVmId()) .addValue("vmt_guid", iface.getVmTemplateId()) .addValue("type", iface.getType()); getCallsHandler().executeModification("Updatevm_interface", parameterSource); } @Override public void remove(Guid id) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("id", id); getCallsHandler().executeModification("Deletevm_interface", parameterSource); } @Override public List<VmNetworkInterface> getAll() { throw new NotImplementedException(); } }