package org.ovirt.engine.core.dao.network;
import java.util.List;
import javax.inject.Named;
import javax.inject.Singleton;
import org.ovirt.engine.core.common.businessentities.network.NetworkCluster;
import org.ovirt.engine.core.common.businessentities.network.NetworkClusterId;
import org.ovirt.engine.core.common.businessentities.network.NetworkStatus;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.BaseDao;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
@Named
@Singleton
public class NetworkClusterDaoImpl extends BaseDao implements NetworkClusterDao {
private static final RowMapper<NetworkCluster> mapper = (rs, rowNum) -> {
NetworkCluster entity = new NetworkCluster();
entity.setClusterId(getGuidDefaultEmpty(rs, "cluster_id"));
entity.setNetworkId(getGuidDefaultEmpty(rs, "network_id"));
entity.setStatus(NetworkStatus.forValue(rs.getInt("status")));
entity.setDisplay(rs.getBoolean("is_display"));
entity.setRequired(rs.getBoolean("required"));
entity.setMigration(rs.getBoolean("migration"));
entity.setManagement(rs.getBoolean("management"));
entity.setGluster(rs.getBoolean("is_gluster"));
entity.setDefaultRoute(rs.getBoolean("default_route"));
return entity;
};
@Override
public NetworkCluster get(NetworkClusterId id) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("cluster_id", id.getClusterId())
.addValue("network_id", id.getNetworkId());
return getCallsHandler().executeRead("Getnetwork_clusterBycluster_idAndBynetwork_id", mapper, parameterSource);
}
@Override
public List<NetworkCluster> getAll() {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource();
return getCallsHandler().executeReadList("GetAllFromnetwork_cluster", mapper, parameterSource);
}
@Override
public List<NetworkCluster> getAllForCluster(Guid clusterid) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("cluster_id", clusterid);
return getCallsHandler().executeReadList("GetAllFromnetwork_clusterByClusterId", mapper,
parameterSource);
}
@Override
public List<NetworkCluster> getAllForNetwork(Guid network) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("network_id", network);
return getCallsHandler().executeReadList("GetAllFromnetwork_clusterByNetworkId", mapper,
parameterSource);
}
@Override
public void save(NetworkCluster cluster) {
MapSqlParameterSource parameterSource = createAllFieldsParameterSource(cluster);
getCallsHandler().executeModification("Insertnetwork_cluster", parameterSource);
}
@Override
public void update(NetworkCluster cluster) {
MapSqlParameterSource parameterSource = createAllFieldsParameterSource(cluster);
getCallsHandler().executeModification("Updatenetwork_cluster", parameterSource);
}
private MapSqlParameterSource createAllFieldsParameterSource(NetworkCluster networkCluster) {
return getCustomMapSqlParameterSource()
.addValue("cluster_id", networkCluster.getClusterId())
.addValue("network_id", networkCluster.getNetworkId())
.addValue("status", networkCluster.getStatus())
.addValue("is_display", networkCluster.isDisplay())
.addValue("required", networkCluster.isRequired())
.addValue("migration", networkCluster.isMigration())
.addValue("management", networkCluster.isManagement())
.addValue("is_gluster", networkCluster.isGluster())
.addValue("default_route", networkCluster.isDefaultRoute());
}
@Override
public void updateStatus(NetworkCluster cluster) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("cluster_id", cluster.getClusterId())
.addValue("network_id", cluster.getNetworkId())
.addValue("status", cluster.getStatus());
getCallsHandler().executeModification("Updatenetwork_cluster_status", parameterSource);
}
@Override
public void remove(Guid clusterid, Guid networkid) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("cluster_id", clusterid)
.addValue("network_id", networkid);
getCallsHandler().executeModification("Deletenetwork_cluster", parameterSource);
}
@Override
public void setNetworkExclusivelyAsDisplay(Guid clusterId, Guid networkId) {
setExclusiveFlagOnNetworkCluster(clusterId, networkId, "set_network_exclusively_as_display");
}
@Override
public void setNetworkExclusivelyAsMigration(Guid clusterId, Guid networkId) {
setExclusiveFlagOnNetworkCluster(clusterId, networkId, "set_network_exclusively_as_migration");
}
@Override
public void setNetworkExclusivelyAsDefaultRoute(Guid clusterId, Guid networkId) {
setExclusiveFlagOnNetworkCluster(clusterId, networkId, "set_network_exclusively_as_default_role_network");
}
@Override
public void setNetworkExclusivelyAsManagement(Guid clusterId, Guid networkId) {
setExclusiveFlagOnNetworkCluster(clusterId, networkId, "set_network_exclusively_as_management");
}
@Override
public void setNetworkExclusivelyAsGluster(Guid clusterId, Guid networkId) {
setExclusiveFlagOnNetworkCluster(clusterId, networkId, "set_network_exclusively_as_gluster");
}
private void setExclusiveFlagOnNetworkCluster(Guid clusterId, Guid networkId, String procedureName) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("cluster_id", clusterId).addValue("network_id", networkId);
getCallsHandler().executeModification(procedureName, parameterSource);
}
}