Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ jobs:
steps:
# https://github.com/actions/checkout
- name: Checkout codebase
uses: actions/checkout@v3
uses: actions/checkout@v4

# https://github.com/actions/setup-java
- name: Install JDK ${{ matrix.java }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1789,7 +1789,8 @@ protected void processOptions(Context c, Item myItem, List<String> options)
} else {
logInfo("\tSetting special permissions for "
+ bitstreamName);
setPermission(c, myGroup, actionID, bs);
String rpType = useWorkflow ? ResourcePolicy.TYPE_SUBMISSION : ResourcePolicy.TYPE_INHERITED;
setPermission(c, myGroup, rpType, actionID, bs);
}
}

Expand Down Expand Up @@ -1847,24 +1848,25 @@ protected void processOptions(Context c, Item myItem, List<String> options)
*
* @param c DSpace Context
* @param g Dspace Group
* @param rpType resource policy type string
* @param actionID action identifier
* @param bs Bitstream
* @throws SQLException if database error
* @throws AuthorizeException if authorization error
* @see org.dspace.core.Constants
*/
protected void setPermission(Context c, Group g, int actionID, Bitstream bs)
protected void setPermission(Context c, Group g, String rpType, int actionID, Bitstream bs)
throws SQLException, AuthorizeException {
if (!isTest) {
// remove the default policy
authorizeService.removeAllPolicies(c, bs);

// add the policy
ResourcePolicy rp = resourcePolicyService.create(c);
ResourcePolicy rp = resourcePolicyService.create(c, null, g);

rp.setdSpaceObject(bs);
rp.setAction(actionID);
rp.setGroup(g);
rp.setRpType(rpType);

resourcePolicyService.update(c, rp);
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -559,13 +559,11 @@ public void addPolicies(Context c, List<ResourcePolicy> policies, DSpaceObject d
List<ResourcePolicy> newPolicies = new ArrayList<>(policies.size());

for (ResourcePolicy srp : policies) {
ResourcePolicy rp = resourcePolicyService.create(c);
ResourcePolicy rp = resourcePolicyService.create(c, srp.getEPerson(), srp.getGroup());

// copy over values
rp.setdSpaceObject(dest);
rp.setAction(srp.getAction());
rp.setEPerson(srp.getEPerson());
rp.setGroup(srp.getGroup());
rp.setStartDate(srp.getStartDate());
rp.setEndDate(srp.getEndDate());
rp.setRpName(srp.getRpName());
Expand Down Expand Up @@ -679,11 +677,9 @@ public ResourcePolicy createResourcePolicy(Context context, DSpaceObject dso, Gr
"We need at least an eperson or a group in order to create a resource policy.");
}

ResourcePolicy myPolicy = resourcePolicyService.create(context);
ResourcePolicy myPolicy = resourcePolicyService.create(context, eperson, group);
myPolicy.setdSpaceObject(dso);
myPolicy.setAction(type);
myPolicy.setGroup(group);
myPolicy.setEPerson(eperson);
myPolicy.setRpType(rpType);
myPolicy.setRpName(rpName);
myPolicy.setRpDescription(rpDescription);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,10 +126,9 @@ private static void addAnonymousPolicy(Context c, DSpaceObject t,

// now create the default policies for submitted items
ResourcePolicyService resourcePolicyService = AuthorizeServiceFactory.getInstance().getResourcePolicyService();
ResourcePolicy myPolicy = resourcePolicyService.create(c);
ResourcePolicy myPolicy = resourcePolicyService.create(c, null, anonymousGroup);
myPolicy.setdSpaceObject(t);
myPolicy.setAction(myaction);
myPolicy.setGroup(anonymousGroup);
resourcePolicyService.update(c, myPolicy);
}
}
9 changes: 3 additions & 6 deletions dspace-api/src/main/java/org/dspace/authorize/PolicySet.java
Original file line number Diff line number Diff line change
Expand Up @@ -229,11 +229,10 @@ public static void setPoliciesFilter(Context c, int containerType,
// before create a new policy check if an identical policy is already in place
if (!authorizeService.isAnIdenticalPolicyAlreadyInPlace(c, myitem, group, actionID, -1)) {
// now add the policy
ResourcePolicy rp = resourcePolicyService.create(c);
ResourcePolicy rp = resourcePolicyService.create(c, null, group);

rp.setdSpaceObject(myitem);
rp.setAction(actionID);
rp.setGroup(group);

rp.setRpName(name);
rp.setRpDescription(description);
Expand Down Expand Up @@ -262,11 +261,10 @@ public static void setPoliciesFilter(Context c, int containerType,
// before create a new policy check if an identical policy is already in place
if (!authorizeService.isAnIdenticalPolicyAlreadyInPlace(c, bundle, group, actionID, -1)) {
// now add the policy
ResourcePolicy rp = resourcePolicyService.create(c);
ResourcePolicy rp = resourcePolicyService.create(c, null, group);

rp.setdSpaceObject(bundle);
rp.setAction(actionID);
rp.setGroup(group);

rp.setRpName(name);
rp.setRpDescription(description);
Expand Down Expand Up @@ -305,11 +303,10 @@ public static void setPoliciesFilter(Context c, int containerType,
if (!authorizeService
.isAnIdenticalPolicyAlreadyInPlace(c, bitstream, group, actionID, -1)) {
// now add the policy
ResourcePolicy rp = resourcePolicyService.create(c);
ResourcePolicy rp = resourcePolicyService.create(c, null, group);

rp.setdSpaceObject(bitstream);
rp.setAction(actionID);
rp.setGroup(group);

rp.setRpName(name);
rp.setRpDescription(description);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,14 +78,22 @@ public ResourcePolicy find(Context context, int id) throws SQLException {
* Create a new ResourcePolicy
*
* @param context DSpace context object
* @param ePerson
* @param group
* @return ResourcePolicy
* @throws SQLException if database error
*/
@Override
public ResourcePolicy create(Context context) throws SQLException {
public ResourcePolicy create(Context context, EPerson ePerson, Group group) throws SQLException {
// FIXME: Check authorisation
// Create a table row
ResourcePolicy resourcePolicy = resourcePolicyDAO.create(context, new ResourcePolicy());
ResourcePolicy policyToBeCreated = new ResourcePolicy();
if (ePerson == null && group == null) {
throw new IllegalArgumentException("A resource policy must contain a valid eperson or group");
}
policyToBeCreated.setEPerson(ePerson);
policyToBeCreated.setGroup(group);
ResourcePolicy resourcePolicy = resourcePolicyDAO.create(context, policyToBeCreated);
return resourcePolicy;
}

Expand Down Expand Up @@ -212,9 +220,7 @@ public boolean isDateValid(ResourcePolicy resourcePolicy) {
@Override
public ResourcePolicy clone(Context context, ResourcePolicy resourcePolicy)
throws SQLException, AuthorizeException {
ResourcePolicy clone = create(context);
clone.setGroup(resourcePolicy.getGroup());
clone.setEPerson(resourcePolicy.getEPerson());
ResourcePolicy clone = create(context, resourcePolicy.getEPerson(), resourcePolicy.getGroup());
clone.setStartDate((Date) ObjectUtils.clone(resourcePolicy.getStartDate()));
clone.setEndDate((Date) ObjectUtils.clone(resourcePolicy.getEndDate()));
clone.setRpType((String) ObjectUtils.clone(resourcePolicy.getRpType()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import org.dspace.core.Context;
import org.dspace.eperson.EPerson;
import org.dspace.eperson.Group;
import org.dspace.service.DSpaceCRUDService;

/**
* Service interface class for the ResourcePolicy object.
Expand All @@ -26,7 +25,34 @@
*
* @author kevinvandevelde at atmire.com
*/
public interface ResourcePolicyService extends DSpaceCRUDService<ResourcePolicy> {
public interface ResourcePolicyService {

public ResourcePolicy create(Context context, EPerson eperson, Group group) throws SQLException, AuthorizeException;

public ResourcePolicy find(Context context, int id) throws SQLException;

/**
* Persist a model object.
*
* @param context
* @param resourcePolicy object to be persisted.
* @throws SQLException passed through.
* @throws AuthorizeException passed through.
*/
public void update(Context context, ResourcePolicy resourcePolicy) throws SQLException, AuthorizeException;


/**
* Persist a collection of model objects.
*
* @param context
* @param resourcePolicies object to be persisted.
* @throws SQLException passed through.
* @throws AuthorizeException passed through.
*/
public void update(Context context, List<ResourcePolicy> resourcePolicies) throws SQLException, AuthorizeException;

public void delete(Context context, ResourcePolicy resourcePolicy) throws SQLException, AuthorizeException;


public List<ResourcePolicy> find(Context c, DSpaceObject o) throws SQLException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -410,10 +410,9 @@ private boolean isInSubmitGroup(EPerson eperson, UUID collectionUUID) {
*/
private void createResourcePolicy(Context context, Item item, int action) throws SQLException, AuthorizeException {
context.turnOffAuthorisationSystem();
ResourcePolicy resPol = resourcePolicyService.create(context);
ResourcePolicy resPol = resourcePolicyService.create(context, item.getSubmitter(), null);
resPol.setAction(action);
resPol.setdSpaceObject(item);
resPol.setEPerson(item.getSubmitter());
context.restoreAuthSystemState();
}

Expand Down
Loading
Loading