/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.authorize.service;
import org.dspace.authorize.AuthorizeException;
import org.dspace.authorize.ResourcePolicy;
import org.dspace.content.DSpaceObject;
import org.dspace.core.Context;
import org.dspace.eperson.EPerson;
import org.dspace.eperson.Group;
import org.dspace.service.DSpaceCRUDService;
import java.sql.SQLException;
import java.util.List;
/**
* Service interface class for the ResourcePolicy object.
* The implementation of this class is responsible for all business logic calls for the ResourcePolicy object and is autowired by spring
*
* @author kevinvandevelde at atmire.com
*/
public interface ResourcePolicyService extends DSpaceCRUDService<ResourcePolicy> {
public List<ResourcePolicy> find(Context c, DSpaceObject o) throws SQLException;
public List<ResourcePolicy> find(Context c, DSpaceObject o, String type) throws SQLException;
public List<ResourcePolicy> find(Context c, DSpaceObject o, int actionId) throws SQLException;
public List<ResourcePolicy> find(Context c, DSpaceObject dso, Group group, int action) throws SQLException;
public List<ResourcePolicy> find(Context context, Group group) throws SQLException;
public List<ResourcePolicy> find(Context c, EPerson e, List<Group> groups, int action, int type_id) throws SQLException;
/**
* Look for ResourcePolicies by DSpaceObject, Group, and action, ignoring IDs with a specific PolicyID.
* This method can be used to detect duplicate ResourcePolicies.
* @param notPolicyID ResourcePolicies with this ID will be ignored while looking out for equal ResourcePolicies.
* @return List of resource policies for the same DSpaceObject, group and action but other policyID.
* @throws SQLException
*/
public List<ResourcePolicy> findByTypeGroupActionExceptId(Context context, DSpaceObject dso, Group group, int action, int notPolicyID)
throws SQLException;
public String getActionText(ResourcePolicy resourcePolicy);
public boolean isDateValid(ResourcePolicy resourcePolicy);
public ResourcePolicy clone(Context context, ResourcePolicy resourcePolicy) throws SQLException, AuthorizeException;
public void removeAllPolicies(Context c, DSpaceObject o) throws SQLException, AuthorizeException;
public void removePolicies(Context c, DSpaceObject o, int actionId) throws SQLException, AuthorizeException;
public void removePolicies(Context c, DSpaceObject o, String type) throws SQLException, AuthorizeException;
public void removeDsoGroupPolicies(Context context, DSpaceObject dso, Group group) throws SQLException, AuthorizeException;
public void removeDsoEPersonPolicies(Context context, DSpaceObject dso, EPerson ePerson) throws SQLException, AuthorizeException;
public void removeGroupPolicies(Context c, Group group) throws SQLException;
public void removeDsoAndTypeNotEqualsToPolicies(Context c, DSpaceObject o, String type) throws SQLException, AuthorizeException;
}