Skip to content

Commit

Permalink
Add curation tasks to make admin/public communities/collections/items
Browse files Browse the repository at this point in the history
  • Loading branch information
abelgomez committed May 18, 2024
1 parent 1451bf2 commit 9459c7a
Show file tree
Hide file tree
Showing 3 changed files with 126 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package org.dspace.ctask.general;

import java.io.IOException;
import java.sql.SQLException;

import org.dspace.authorize.AuthorizeException;
import org.dspace.authorize.factory.AuthorizeServiceFactory;
import org.dspace.authorize.service.ResourcePolicyService;
import org.dspace.content.Bitstream;
import org.dspace.content.Bundle;
import org.dspace.content.DSpaceObject;
import org.dspace.content.Item;
import org.dspace.core.Constants;
import org.dspace.core.Context;
import org.dspace.curate.AbstractCurationTask;
import org.dspace.curate.Curator;

/**
* Curation taks to make all {@link DSpaceObject}s public with the exception
* {@link Bundle}s and {@link Bitstream}s, that are left unchanged
*
* @author agomez
*/
public class MakeAdminOnly extends AbstractCurationTask {

private ResourcePolicyService resourcePolicyService = AuthorizeServiceFactory.getInstance().getResourcePolicyService();

protected String result = null;

protected String taskProperty(String name, String defaultValue) {
return super.taskProperty(name) != null ? super.taskProperty(name) : defaultValue;
}

@Override
public int perform(DSpaceObject dso) throws IOException {
if (dso instanceof Item) {
if (!((Item) dso).isArchived()) {
result = "Skipping not archived Item: " + dso.getID();
setResult(result);
report(result);
return Curator.CURATE_SKIP;
}
}
try {
Context context = Curator.curationContext();
resourcePolicyService.removePolicies(context, dso, Constants.READ);
result = "DSpaceObject has been successfully made private only for Administrators: " + dso.getID();
setResult(result);
report(result);
return Curator.CURATE_SUCCESS;
} catch (SQLException | AuthorizeException e) {
result = "Unable to change authorization policy for " + dso.getID();
setResult(result);
report(result);
return Curator.CURATE_ERROR;
}
}
}
66 changes: 66 additions & 0 deletions dspace-api/src/main/java/org/dspace/ctask/general/MakePublic.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package org.dspace.ctask.general;

import java.io.IOException;
import java.sql.SQLException;

import org.dspace.authorize.AuthorizeException;
import org.dspace.authorize.factory.AuthorizeServiceFactory;
import org.dspace.authorize.service.AuthorizeService;
import org.dspace.authorize.service.ResourcePolicyService;
import org.dspace.content.Bitstream;
import org.dspace.content.Bundle;
import org.dspace.content.DSpaceObject;
import org.dspace.content.Item;
import org.dspace.core.Constants;
import org.dspace.core.Context;
import org.dspace.curate.AbstractCurationTask;
import org.dspace.curate.Curator;
import org.dspace.eperson.Group;
import org.dspace.eperson.factory.EPersonServiceFactory;
import org.dspace.eperson.service.GroupService;

/**
* Curation taks to make all {@link DSpaceObject}s admin-only with the exception
* {@link Bundle}s and {@link Bitstream}s, that are left unchanged
*
* @author agomez
*/
public class MakePublic extends AbstractCurationTask {

private ResourcePolicyService resourcePolicyService = AuthorizeServiceFactory.getInstance().getResourcePolicyService();
private AuthorizeService authorizeService = AuthorizeServiceFactory.getInstance().getAuthorizeService();
private GroupService groupService = EPersonServiceFactory.getInstance().getGroupService();

protected String result = null;

protected String taskProperty(String name, String defaultValue) {
return super.taskProperty(name) != null ? super.taskProperty(name) : defaultValue;
}

@Override
public int perform(DSpaceObject dso) throws IOException {
if (dso instanceof Item) {
if (!((Item) dso).isArchived()) {
result = "Skipping not archived Item: " + dso.getID();
setResult(result);
report(result);
return Curator.CURATE_SKIP;
}
}
try {
Context context = Curator.curationContext();
Group anonymous = groupService.findByName(context, Group.ANONYMOUS);
resourcePolicyService.removePolicies(context, dso, Constants.READ);
authorizeService.createResourcePolicy(context, dso, anonymous, null, Constants.READ, null);
result = "DSpaceObject has been successfully made public: " + dso.getID();
setResult(result);
report(result);
return Curator.CURATE_SUCCESS;
} catch (SQLException | AuthorizeException e) {
result = "Unable to change authorization policy for " + dso.getID();
setResult(result);
report(result);
return Curator.CURATE_ERROR;
}
}
}
2 changes: 2 additions & 0 deletions dspace/config/modules/curate.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ plugin.named.org.dspace.curate.CurationTask = org.dspace.ctask.general.RegisterD
plugin.named.org.dspace.curate.CurationTask = org.dspace.ctask.general.RegisterExternalHandle = registerexternalhandle
plugin.named.org.dspace.curate.CurationTask = org.dspace.ctask.general.FilterMedia = filtermedia
plugin.named.org.dspace.curate.CurationTask = org.dspace.ctask.general.RenameMetadataAttribute = renamemetadataattribute
plugin.named.org.dspace.curate.CurationTask = org.dspace.ctask.general.MakeAdminOnly = makeadmin
plugin.named.org.dspace.curate.CurationTask = org.dspace.ctask.general.MakePublic = makepublic
# END: Sistedes

## task queue implementation
Expand Down

0 comments on commit 9459c7a

Please sign in to comment.