package org.ovirt.engine.core.dao.qos; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import javax.inject.Named; import javax.inject.Singleton; import org.ovirt.engine.core.common.businessentities.qos.QosBase; import org.ovirt.engine.core.common.businessentities.qos.QosType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.network.HostNetworkQosDaoImpl; import org.ovirt.engine.core.dao.network.NetworkQoSDaoImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @Named @Singleton public class AllQosBaseDaoImpl extends QosBaseDaoImpl<QosBase> implements QosBaseDao { private static final Logger log = LoggerFactory.getLogger(AllQosBaseDaoImpl.class); public AllQosBaseDaoImpl() { super(QosType.ALL); } @Override public List<QosBase> getAllForStoragePoolId(Guid storagePoolId) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("storage_pool_id", storagePoolId); return getCallsHandler().executeReadList("GetAllQosForStoragePool", createEntityRowMapper(), parameterSource); } @Override protected RowMapper<QosBase> createEntityRowMapper() { return AllQosBaseDaoFacadaeImplMapper.MAPPER; } protected static class AllQosBaseDaoFacadaeImplMapper extends QosBaseDaoFacadaeImplMapper<QosBase> { public static final AllQosBaseDaoFacadaeImplMapper MAPPER = new AllQosBaseDaoFacadaeImplMapper(); @Override protected QosBase createQosEntity(ResultSet rs) throws SQLException { QosType qosType = QosType.forValue(rs.getInt("qos_type")); switch (qosType) { case STORAGE: return StorageQosDaoImpl.StorageDaoDbFacadaeImplMapper.MAPPER.createQosEntity(rs); case CPU: return CpuQosDaoImpl.CpuDaoDbFacadaeImplMapper.MAPPER.createQosEntity(rs); case NETWORK: return NetworkQoSDaoImpl.NetworkQosDaoDbFacadaeImplMapper.MAPPER.createQosEntity(rs); case HOSTNETWORK: return HostNetworkQosDaoImpl.HostNetworkQosDaoDbFacadaeImplMapper.MAPPER.createQosEntity(rs); default: log.debug("not handled/missing qos_type '{}'", qosType); break; } return null; } } }