#9806: Add new create methods to group builder

Now supports admin groups, default read, workflow role

(cherry picked from commit cdb167e55a)
This commit is contained in:
Kim Shepherd
2024-09-06 15:25:18 +02:00
committed by github-actions[bot]
parent a2c9576691
commit e57e91c2fd

View File

@@ -12,6 +12,9 @@ import java.sql.SQLException;
import java.util.UUID;
import org.dspace.authorize.AuthorizeException;
import org.dspace.content.Collection;
import org.dspace.content.Community;
import org.dspace.content.DSpaceObject;
import org.dspace.content.service.DSpaceObjectService;
import org.dspace.core.Context;
import org.dspace.eperson.EPerson;
@@ -51,6 +54,33 @@ public class GroupBuilder extends AbstractDSpaceObjectBuilder<Group> {
return builder.create(context);
}
public static GroupBuilder createCollectionAdminGroup(final Context context, Collection collection) {
GroupBuilder builder = new GroupBuilder(context);
return builder.createAdminGroup(context, collection);
}
public static GroupBuilder createCollectionSubmitterGroup(final Context context, Collection collection) {
GroupBuilder builder = new GroupBuilder(context);
return builder.createSubmitterGroup(context, collection);
}
public static GroupBuilder createCollectionDefaultReadGroup(final Context context, Collection collection,
String typeOfGroupString, int defaultRead) {
GroupBuilder builder = new GroupBuilder(context);
return builder.createDefaultReadGroup(context, collection, typeOfGroupString, defaultRead);
}
public static GroupBuilder createCollectionWorkflowRoleGroup(final Context context, Collection collection,
String roleName) {
GroupBuilder builder = new GroupBuilder(context);
return builder.createWorkflowRoleGroup(context, collection, roleName);
}
public static GroupBuilder createCommunityAdminGroup(final Context context, Community community) {
GroupBuilder builder = new GroupBuilder(context);
return builder.createAdminGroup(context, community);
}
private GroupBuilder create(final Context context) {
this.context = context;
try {
@@ -61,6 +91,54 @@ public class GroupBuilder extends AbstractDSpaceObjectBuilder<Group> {
return this;
}
private GroupBuilder createAdminGroup(final Context context, DSpaceObject container) {
this.context = context;
try {
if (container instanceof Collection) {
group = collectionService.createAdministrators(context, (Collection) container);
} else if (container instanceof Community) {
group = communityService.createAdministrators(context, (Community) container);
} else {
handleException(new IllegalArgumentException("DSpaceObject must be collection or community. " +
"Type: " + container.getType()));
}
} catch (Exception e) {
return handleException(e);
}
return this;
}
private GroupBuilder createSubmitterGroup(final Context context, Collection collection) {
this.context = context;
try {
group = collectionService.createSubmitters(context, collection);
} catch (Exception e) {
return handleException(e);
}
return this;
}
private GroupBuilder createDefaultReadGroup(final Context context, Collection collection,
String typeOfGroupString, int defaultRead) {
this.context = context;
try {
group = collectionService.createDefaultReadGroup(context, collection, typeOfGroupString, defaultRead);
} catch (Exception e) {
return handleException(e);
}
return this;
}
private GroupBuilder createWorkflowRoleGroup(final Context context, Collection collection, String roleName) {
this.context = context;
try {
group = workflowService.createWorkflowRoleGroup(context, collection, roleName);
} catch (Exception e) {
return handleException(e);
}
return this;
}
@Override
protected DSpaceObjectService<Group> getService() {
return groupService;