package org.ovirt.engine.core.dao.network;
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.network.VnicProfileView;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.DefaultReadDao;
import org.ovirt.engine.core.dao.VersionRowMapper;
import org.ovirt.engine.core.dao.network.VnicProfileDaoImpl.VnicProfileRowMapperBase;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
@Named
@Singleton
public class VnicProfileViewDaoImpl extends DefaultReadDao<VnicProfileView, Guid> implements VnicProfileViewDao {
public VnicProfileViewDaoImpl() {
super("VnicProfileView");
}
@Override
public VnicProfileView get(Guid id) {
return get(id, null, false);
}
@Override
public VnicProfileView get(Guid id, Guid userId, boolean filtered) {
return getCallsHandler().executeRead(getProcedureNameForGet(),
VnicProfileViewRowMapper.INSTANCE,
createIdParameterMapper(id).addValue("user_id", userId).addValue("is_filtered", filtered));
}
@Override
public List<VnicProfileView> getAll() {
return getAll(null, false);
}
@Override
public List<VnicProfileView> getAll(Guid userId, boolean filtered) {
return getCallsHandler().executeReadList(getProcedureNameForGetAll(),
VnicProfileViewRowMapper.INSTANCE,
getCustomMapSqlParameterSource().addValue("user_id", userId).addValue("is_filtered", filtered));
}
@Override
public List<VnicProfileView> getAllForNetwork(Guid networkId) {
return getAllForNetwork(networkId, null, false);
}
@Override
public List<VnicProfileView> getAllForNetwork(Guid networkId, Guid userId, boolean filtered) {
return getCallsHandler().executeReadList("GetVnicProfileViewsByNetworkId",
VnicProfileViewRowMapper.INSTANCE,
getCustomMapSqlParameterSource().addValue("network_id", networkId)
.addValue("user_id", userId)
.addValue("is_filtered", filtered));
}
@Override
public List<VnicProfileView> getAllForDataCenter(Guid id) {
return getAllForDataCenter(id, null, false);
}
@Override
public List<VnicProfileView> getAllForDataCenter(Guid id, Guid userId, boolean filtered) {
return getCallsHandler().executeReadList("GetVnicProfileViewsByDataCenterId",
VnicProfileViewRowMapper.INSTANCE,
getCustomMapSqlParameterSource().addValue("id", id)
.addValue("user_id", userId)
.addValue("is_filtered", filtered));
}
@Override
public List<VnicProfileView> getAllForCluster(Guid id) {
return getAllForCluster(id, null, false);
}
@Override
public List<VnicProfileView> getAllForCluster(Guid id, Guid userId, boolean filtered) {
return getCallsHandler().executeReadList("GetVnicProfileViewsByClusterId",
VnicProfileViewRowMapper.INSTANCE,
getCustomMapSqlParameterSource().addValue("id", id)
.addValue("user_id", userId)
.addValue("is_filtered", filtered));
}
@Override
protected VnicProfileViewRowMapper createEntityRowMapper() {
return VnicProfileViewRowMapper.INSTANCE;
}
@Override
protected MapSqlParameterSource createIdParameterMapper(Guid id) {
return getCustomMapSqlParameterSource().addValue("id", id);
}
private static class VnicProfileViewRowMapper extends VnicProfileRowMapperBase<VnicProfileView> {
public static final VnicProfileViewRowMapper INSTANCE = new VnicProfileViewRowMapper();
@Override
public VnicProfileView mapRow(ResultSet rs, int rowNum) throws SQLException {
VnicProfileView entity = super.mapRow(rs, rowNum);
entity.setNetworkName(rs.getString("network_name"));
entity.setNetworkQosName(rs.getString("network_qos_name"));
entity.setDataCenterName(rs.getString("data_center_name"));
entity.setCompatibilityVersion(new VersionRowMapper("compatibility_version").mapRow(rs, rowNum));
entity.setNetworkFilterName(rs.getString("network_filter_name"));
return entity;
}
@Override
protected VnicProfileView createVnicProfileEntity() {
return new VnicProfileView();
}
}
@Override
public List<VnicProfileView> getAllForNetworkQos(Guid qosId) {
return getCallsHandler().executeReadList("GetVnicProfileViewsByNetworkQosId",
VnicProfileViewRowMapper.INSTANCE,
getCustomMapSqlParameterSource().addValue("network_qos_id", qosId));
}
}