package org.ovirt.engine.core.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.commons.lang.NotImplementedException;
import org.ovirt.engine.core.common.businessentities.InterfaceStatus;
import org.ovirt.engine.core.common.businessentities.VmNetworkStatistics;
import org.ovirt.engine.core.compat.Guid;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
/**
* <code>VmNetworkStatisticsDAODbFacadeImpl</code> provides an implementation of {@link VmNetworkStatisticsDAO}.
*/
public class VmNetworkStatisticsDAODbFacadeImpl extends MassOperationsGenericDaoDbFacade<VmNetworkStatistics, Guid>
implements VmNetworkStatisticsDAO {
@Override
protected String getProcedureNameForUpdate() {
return "Updatevm_interface_statistics";
}
@Override
protected String getProcedureNameForGet() {
return "Getvm_interface_statisticsById";
}
@Override
protected String getProcedureNameForGetAll() {
throw new NotImplementedException();
}
@Override
protected String getProcedureNameForSave() {
return "Insertvm_interface_statistics";
}
@Override
protected String getProcedureNameForRemove() {
return "Deletevm_interface_statistics";
}
@Override
protected MapSqlParameterSource createIdParameterMapper(Guid id) {
return getCustomMapSqlParameterSource().addValue("id", id);
}
@Override
protected MapSqlParameterSource createFullParametersMapper(VmNetworkStatistics stats) {
return createIdParameterMapper(stats.getId())
.addValue("rx_drop", stats.getReceiveDropRate())
.addValue("rx_rate", stats.getReceiveRate())
.addValue("tx_drop", stats.getTransmitDropRate())
.addValue("tx_rate", stats.getTransmitRate())
.addValue("iface_status", stats.getStatus())
.addValue("vm_id", stats.getVmId());
}
@Override
protected ParameterizedRowMapper<VmNetworkStatistics> createEntityRowMapper() {
return new ParameterizedRowMapper<VmNetworkStatistics>() {
@Override
public VmNetworkStatistics mapRow(ResultSet rs, int rowNum)
throws SQLException {
VmNetworkStatistics entity = new VmNetworkStatistics();
entity.setId(Guid.createGuidFromString(rs.getString("id")));
entity.setReceiveRate(rs.getDouble("rx_rate"));
entity.setTransmitRate(rs.getDouble("tx_rate"));
entity.setReceiveDropRate(rs.getDouble("rx_drop"));
entity.setTransmitDropRate(rs.getDouble("tx_drop"));
entity.setStatus(InterfaceStatus.forValue(rs.getInt("iface_status")));
return entity;
}
};
}
}