package org.ovirt.engine.core.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.lang.NotImplementedException;
import org.ovirt.engine.core.common.VdcObjectType;
import org.ovirt.engine.core.common.businessentities.RoleType;
import org.ovirt.engine.core.common.businessentities.permissions;
import org.ovirt.engine.core.compat.Guid;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
/**
* <code>PermissionsDAODbFacadeImpl</code> provides a concrete implementation of {@link PermissionDAO} using code from
* DbFacade.
*
*
*/
public class PermissionDAODbFacadeImpl extends BaseDAODbFacade implements PermissionDAO {
private class PermissionRowMapper implements
ParameterizedRowMapper<permissions> {
@Override
public permissions mapRow(ResultSet rs, int rowNum) throws SQLException {
permissions entity = new permissions();
entity.setad_element_id(Guid.createGuidFromString(rs
.getString("ad_element_id")));
entity.setId(Guid.createGuidFromString(rs.getString("id")));
entity.setrole_id(Guid.createGuidFromString(rs.getString("role_id")));
entity.setObjectId(Guid.createGuidFromString(rs
.getString(("object_id"))));
entity.setObjectType(VdcObjectType.forValue(rs
.getInt(("object_type_id"))));
entity.setRoleName(rs.getString("role_name"));
entity.setObjectName(rs.getString("object_name"));
entity.setOwnerName(rs.getString("owner_name"));
entity.setRoleType(RoleType.getById(rs.getInt("role_type")));
return entity;
}
}
@Override
public permissions get(Guid id) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("id", id);
return getCallsHandler().executeRead("GetPermissionsByid", new PermissionRowMapper(), parameterSource);
}
@Override
public permissions getForRoleAndAdElementAndObject(Guid roleid,
Guid elementid, Guid objectid) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("role_id", roleid)
.addValue("ad_element_id", elementid)
.addValue("object_id", objectid);
return getCallsHandler().executeRead("GetPermissionsByRoleIdAndAdElementIdAndObjectId",
new PermissionRowMapper(),
parameterSource);
}
@Override
public permissions getForRoleAndAdElementAndObjectWithGroupCheck(Guid roleid,
Guid elementid, Guid objectid) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("role_id", roleid)
.addValue("ad_element_id", elementid)
.addValue("object_id", objectid);
return getCallsHandler().executeRead("GetForRoleAndAdElementAndObject_wGroupCheck",
new PermissionRowMapper(),
parameterSource);
}
@Override
public List<permissions> getAllForAdElement(Guid id) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("ad_element_id", id);
ParameterizedRowMapper<permissions> mapper = new PermissionRowMapper();
return getCallsHandler().executeReadList("GetPermissionsByAdElementId", mapper, parameterSource);
}
@Override
public List<permissions> getAllDirectPermissionsForAdElement(Guid id) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("ad_element_id", id);
return getCallsHandler().executeReadList("GetDirectPermissionsByAdElementId",
new PermissionRowMapper(),
parameterSource);
}
@Override
public List<permissions> getAllForRole(Guid id) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("role_id", id);
ParameterizedRowMapper<permissions> mapper = new PermissionRowMapper();
return getCallsHandler().executeReadList("GetPermissionsByRoleId", mapper, parameterSource);
}
@Override
public List<permissions> getAllForRoleAndAdElement(Guid roleid,
Guid elementid) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("role_id", roleid).addValue("ad_element_id",
elementid);
return getCallsHandler().executeReadList("GetPermissionsByRoleIdAndAdElementId",
new PermissionRowMapper(),
parameterSource);
}
@Override
public List<permissions> getAllForRoleAndObject(Guid roleid, Guid objectid) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("role_id", roleid).addValue("object_id", objectid);
return getCallsHandler().executeReadList("GetPermissionsByRoleIdAndObjectId",
new PermissionRowMapper(),
parameterSource);
}
@Override
public List<permissions> getAllForEntity(Guid id) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("id", id);
return getCallsHandler().executeReadList("GetPermissionsByEntityId", new PermissionRowMapper(), parameterSource);
}
@Override
public List<permissions> getTreeForEntity(Guid id, VdcObjectType type) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("id", id).addValue("object_type_id", type.getValue());
return getCallsHandler().executeReadList("GetPermissionsTreeByEntityId", new PermissionRowMapper(), parameterSource);
}
@Override
public void save(permissions permission) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("ad_element_id", permission.getad_element_id())
.addValue("id", permission.getId())
.addValue("role_id", permission.getrole_id())
.addValue("object_id", permission.getObjectId())
.addValue("object_type_id",
permission.getObjectType().getValue());
getCallsHandler().executeModification("InsertPermission", parameterSource);
}
@Override
public void remove(Guid id) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("id", id);
getCallsHandler().executeModification("DeletePermission", parameterSource);
}
@Override
public void removeForEntity(Guid id) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("id", id);
getCallsHandler().executeModification("DeletePermissionsByEntityId", parameterSource);
}
@Override
public List<permissions> getAll() {
throw new NotImplementedException();
}
@Override
public void update(permissions entity) {
throw new NotImplementedException();
}
}