mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-18 23:43:06 +00:00
[CST-5755] Ported process special group tracking
This commit is contained in:
@@ -21,6 +21,8 @@ import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@@ -43,7 +45,9 @@ import org.dspace.core.Constants;
|
||||
import org.dspace.core.Context;
|
||||
import org.dspace.core.LogHelper;
|
||||
import org.dspace.eperson.EPerson;
|
||||
import org.dspace.eperson.Group;
|
||||
import org.dspace.eperson.service.EPersonService;
|
||||
import org.dspace.eperson.service.GroupService;
|
||||
import org.dspace.scripts.service.ProcessService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
@@ -72,15 +76,26 @@ public class ProcessServiceImpl implements ProcessService {
|
||||
@Autowired
|
||||
private EPersonService ePersonService;
|
||||
|
||||
@Autowired
|
||||
private GroupService groupService;
|
||||
|
||||
@Override
|
||||
public Process create(Context context, EPerson ePerson, String scriptName,
|
||||
List<DSpaceCommandLineParameter> parameters) throws SQLException {
|
||||
List<DSpaceCommandLineParameter> parameters, final List<Group> specialGroups) throws SQLException {
|
||||
|
||||
Process process = new Process();
|
||||
process.setEPerson(ePerson);
|
||||
process.setName(scriptName);
|
||||
process.setParameters(DSpaceCommandLineParameter.concatenate(parameters));
|
||||
process.setCreationTime(new Date());
|
||||
Optional.ofNullable(specialGroups)
|
||||
.ifPresent(sg -> {
|
||||
Set<Group> specialGroupsSet = new HashSet<>(sg);
|
||||
for (Group group : specialGroupsSet) {
|
||||
process.addGroup(group);
|
||||
}
|
||||
});
|
||||
|
||||
Process createdProcess = processDAO.create(context, process);
|
||||
log.info(LogHelper.getHeader(context, "process_create",
|
||||
"Process has been created for eperson with email " + ePerson.getEmail()
|
||||
@@ -162,10 +177,24 @@ public class ProcessServiceImpl implements ProcessService {
|
||||
MetadataField dspaceProcessFileTypeField = metadataFieldService
|
||||
.findByString(context, Process.BITSTREAM_TYPE_METADATAFIELD, '.');
|
||||
bitstreamService.addMetadata(context, bitstream, dspaceProcessFileTypeField, null, type);
|
||||
authorizeService.addPolicy(context, bitstream, Constants.READ, context.getCurrentUser());
|
||||
authorizeService.addPolicy(context, bitstream, Constants.WRITE, context.getCurrentUser());
|
||||
authorizeService.addPolicy(context, bitstream, Constants.DELETE, context.getCurrentUser());
|
||||
bitstreamService.update(context, bitstream);
|
||||
if (Objects.isNull(context.getCurrentUser())) {
|
||||
Group anonymous = groupService.findByName(context, Group.ANONYMOUS);
|
||||
authorizeService.addPolicy(context, bitstream, Constants.READ, anonymous);
|
||||
} else {
|
||||
authorizeService.addPolicy(context, bitstream, Constants.READ, context.getCurrentUser());
|
||||
authorizeService.addPolicy(context, bitstream, Constants.WRITE, context.getCurrentUser());
|
||||
authorizeService.addPolicy(context, bitstream, Constants.DELETE, context.getCurrentUser());
|
||||
}
|
||||
|
||||
try {
|
||||
context.turnOffAuthorisationSystem();
|
||||
bitstreamService.update(context, bitstream);
|
||||
context.restoreAuthSystemState();
|
||||
} catch (SQLException | AuthorizeException e) {
|
||||
log.info(e.getMessage());
|
||||
throw new RuntimeException(e.getMessage(), e);
|
||||
}
|
||||
|
||||
process.addBitstream(bitstream);
|
||||
update(context, process);
|
||||
}
|
||||
|
Reference in New Issue
Block a user