package org.ovirt.engine.core.dao;

import java.util.List;

import org.ovirt.engine.core.common.businessentities.ActionGroup;
import org.ovirt.engine.core.common.businessentities.RoleGroupMap;
import org.ovirt.engine.core.compat.Guid;

/**
 * <code>RoleGroupMapDOA</code> defines a type for performing CRUD operations on instances of {@link RoleGroupMap}.
 *
 *
 */
public interface RoleGroupMapDAO extends DAO {
    /**
     * Retrieves the mapping for the given group and role id.
     *
     * @param group
     *            the action group
     * @param id
     *            the role id
     * @return the mapping
     */
    RoleGroupMap getByActionGroupAndRole(ActionGroup group, Guid id);

    /**
     * Retrieves the list of mappings for the given role id.
     *
     * @param id
     *            the role id
     * @return the list of mappings
     */
    List<RoleGroupMap> getAllForRole(Guid id);

    /**
     * Saves the specified map.
     *
     * @param map
     *            the map
     */
    void save(RoleGroupMap map);

    /**
     * Removes the specified map.
     *
     * @param group
     *            the action group
     * @param id
     *            the role id
     */
    void remove(ActionGroup group, Guid id);
}
