package org.ovirt.engine.core.dao;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
import org.ovirt.engine.core.common.businessentities.ActionGroup;
import org.ovirt.engine.core.common.businessentities.RoleGroupMap;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dal.dbbroker.DbFacadeUtils;
import org.ovirt.engine.core.dal.dbbroker.RoleGroupMapRowMapper;
/**
* <code>RoleGroupMapDAODbFacadeImpl</code> provides a concrete implementation of {@link RoleGroupMapDAO} using
* functionality refactored from {@link DbFacade}.
*
*
*/
public class RoleGroupMapDAODbFacadeImpl extends BaseDAODbFacade implements RoleGroupMapDAO {
@Override
public RoleGroupMap getByActionGroupAndRole(ActionGroup group, Guid id) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("action_group_id", group.getId()).addValue("role_id",
id);
ParameterizedRowMapper<RoleGroupMap> mapper = new RoleGroupMapRowMapper();
Map<String, Object> dbResults =
getCallsHandler().executeReadAndReturnMap("Get_roles_groups_By_action_group_id_And_By_role_id",
mapper,
parameterSource);
return (RoleGroupMap) DbFacadeUtils.asSingleResult((List<?>) (dbResults
.values().iterator().next()));
}
@SuppressWarnings("unchecked")
@Override
public List<RoleGroupMap> getAllForRole(Guid id) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("role_id", id);
ParameterizedRowMapper<RoleGroupMap> mapper = new RoleGroupMapRowMapper();
Map<String, Object> dbResults =
getCallsHandler().executeReadAndReturnMap("Get_role_groups_By_role_id", mapper, parameterSource);
return (ArrayList<RoleGroupMap>) dbResults.values().iterator().next();
}
@Override
public void save(RoleGroupMap map) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("action_group_id", map.getActionGroup().getId())
.addValue("role_id", map.getRoleId());
getCallsHandler().executeModification("Insert_roles_groups", parameterSource);
}
@Override
public void remove(ActionGroup group, Guid id) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("action_group_id", group.getId()).addValue("role_id",
id);
getCallsHandler().executeModification("Delete_roles_groups", parameterSource);
}
}