package org.ovirt.engine.core.dao;
import java.util.List;
import javax.inject.Named;
import javax.inject.Singleton;
import org.ovirt.engine.core.common.businessentities.VmStatistics;
import org.ovirt.engine.core.compat.Guid;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
@Named
@Singleton
public class VmStatisticsDaoImpl extends MassOperationsGenericDao<VmStatistics, Guid>
implements VmStatisticsDao {
public VmStatisticsDaoImpl() {
super("VmStatistics");
setProcedureNameForGet("GetVmStatisticsByVmGuid");
}
@Override
public List<VmStatistics> getAll() {
throw new UnsupportedOperationException();
}
@Override
protected MapSqlParameterSource createIdParameterMapper(Guid id) {
return getCustomMapSqlParameterSource().addValue("vm_guid", id);
}
@Override
protected MapSqlParameterSource createFullParametersMapper(VmStatistics statistics) {
return createIdParameterMapper(statistics.getId())
.addValue("cpu_sys", statistics.getCpuSys())
.addValue("cpu_user", statistics.getCpuUser())
.addValue("elapsed_time", statistics.getElapsedTime())
.addValue("usage_cpu_percent",
statistics.getUsageCpuPercent())
.addValue("usage_mem_percent",
statistics.getUsageMemPercent())
.addValue("usage_network_percent",
statistics.getUsageNetworkPercent())
.addValue("disks_usage",
statistics.getDisksUsage())
.addValue("guest_mem_buffered", statistics.getGuestMemoryBuffered())
.addValue("guest_mem_cached", statistics.getGuestMemoryCached());
}
@Override
protected RowMapper<VmStatistics> createEntityRowMapper() {
return vmStatisticsRowMapper;
}
private static final RowMapper<VmStatistics> vmStatisticsRowMapper = (rs, rowNum) -> {
VmStatistics entity = new VmStatistics();
entity.setCpuSys(rs.getDouble("cpu_sys"));
entity.setCpuUser(rs.getDouble("cpu_user"));
entity.setElapsedTime(rs.getDouble("elapsed_time"));
entity.setUsageCpuPercent((Integer) rs.getObject("usage_cpu_percent"));
entity.setUsageMemPercent((Integer) rs.getObject("usage_mem_percent"));
entity.setUsageNetworkPercent((Integer) rs.getObject("usage_network_percent"));
entity.setDisksUsage((String) rs.getObject("disks_usage"));
entity.setId(getGuidDefaultEmpty(rs, "vm_guid"));
entity.setGuestMemoryBuffered(getLong(rs, "guest_mem_buffered"));
entity.setGuestMemoryCached(getLong(rs, "guest_mem_cached"));
return entity;
};
protected static RowMapper<VmStatistics> getRowMapper() {
return vmStatisticsRowMapper;
}
}