package org.ovirt.engine.core.dao.network; import java.sql.ResultSet; import java.sql.SQLException; import javax.inject.Named; import javax.inject.Singleton; import org.ovirt.engine.core.common.businessentities.network.HostNetworkQos; import org.ovirt.engine.core.common.businessentities.qos.QosType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.qos.QosBaseDaoImpl; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @Named @Singleton public class HostNetworkQosDaoImpl extends QosBaseDaoImpl<HostNetworkQos> implements HostNetworkQosDao { private static final String OUT_AVERAGE_LINKSHARE = "out_average_linkshare"; private static final String OUT_AVERAGE_UPPERLIMIT = "out_average_upperlimit"; private static final String OUT_AVERAGE_REALTIME = "out_average_realtime"; public HostNetworkQosDaoImpl() { super(QosType.HOSTNETWORK); } @Override protected MapSqlParameterSource createFullParametersMapper(HostNetworkQos obj) { MapSqlParameterSource map = super.createFullParametersMapper(obj); map.addValue(OUT_AVERAGE_LINKSHARE, obj.getOutAverageLinkshare()); map.addValue(OUT_AVERAGE_UPPERLIMIT, obj.getOutAverageUpperlimit()); map.addValue(OUT_AVERAGE_REALTIME, obj.getOutAverageRealtime()); return map; } @Override protected RowMapper<HostNetworkQos> createEntityRowMapper() { return HostNetworkQosDaoDbFacadaeImplMapper.MAPPER; } @Override public HostNetworkQos getHostNetworkQosOfMigrationNetworkByClusterId(Guid clusterId) { final MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("cluster_id", clusterId); return getCallsHandler().executeRead("GetHostNetworkQosOfMigrationNetworkByClusterId", createEntityRowMapper(), parameterSource); } @Override public void persistQosChanges(Guid qosId, HostNetworkQos qos) { HostNetworkQos oldQos = get(qosId); boolean qosOfGivenIdAlreadyExist = oldQos != null; if (qos == null) { if (qosOfGivenIdAlreadyExist) { remove(qosId); } } else { qos.setId(qosId); if (!qosOfGivenIdAlreadyExist) { save(qos); } else { boolean qosChanged = !qos.equals(oldQos); if (qosChanged) { update(qos); } } } } public static class HostNetworkQosDaoDbFacadaeImplMapper extends QosBaseDaoFacadaeImplMapper<HostNetworkQos> { public static final HostNetworkQosDaoDbFacadaeImplMapper MAPPER = new HostNetworkQosDaoDbFacadaeImplMapper(); @Override public HostNetworkQos createQosEntity(ResultSet rs) throws SQLException { HostNetworkQos entity = new HostNetworkQos(); entity.setOutAverageLinkshare(getInteger(rs, OUT_AVERAGE_LINKSHARE)); entity.setOutAverageUpperlimit(getInteger(rs, OUT_AVERAGE_UPPERLIMIT)); entity.setOutAverageRealtime(getInteger(rs, OUT_AVERAGE_REALTIME)); return entity; } } }