mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-16 22:43:12 +00:00
taskid 76191 Remove Traditional/Basic Workflow from codebase and database
This commit is contained in:
@@ -35,7 +35,7 @@ import org.dspace.eperson.factory.EPersonServiceFactory;
|
|||||||
import org.dspace.eperson.service.GroupService;
|
import org.dspace.eperson.service.GroupService;
|
||||||
import org.dspace.services.factory.DSpaceServicesFactory;
|
import org.dspace.services.factory.DSpaceServicesFactory;
|
||||||
import org.dspace.utils.DSpace;
|
import org.dspace.utils.DSpace;
|
||||||
import org.dspace.xmlworkflow.factory.XmlWorkflowServiceFactory;
|
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.CollectionRole;
|
import org.dspace.xmlworkflow.storedcomponents.CollectionRole;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.CollectionRoleService;
|
import org.dspace.xmlworkflow.storedcomponents.service.CollectionRoleService;
|
||||||
|
|
||||||
@@ -566,7 +566,7 @@ public class AuthorizeUtil {
|
|||||||
public static void authorizeManageGroup(Context context, Group group) throws SQLException, AuthorizeException {
|
public static void authorizeManageGroup(Context context, Group group) throws SQLException, AuthorizeException {
|
||||||
AuthorizeService authorizeService = AuthorizeServiceFactory.getInstance().getAuthorizeService();
|
AuthorizeService authorizeService = AuthorizeServiceFactory.getInstance().getAuthorizeService();
|
||||||
GroupService groupService = EPersonServiceFactory.getInstance().getGroupService();
|
GroupService groupService = EPersonServiceFactory.getInstance().getGroupService();
|
||||||
CollectionRoleService collectionRoleService = XmlWorkflowServiceFactory.getInstance()
|
CollectionRoleService collectionRoleService = WorkflowServiceFactory.getInstance()
|
||||||
.getCollectionRoleService();
|
.getCollectionRoleService();
|
||||||
if (authorizeService.isAdmin(context)) {
|
if (authorizeService.isAdmin(context)) {
|
||||||
return;
|
return;
|
||||||
|
@@ -29,7 +29,6 @@ import org.dspace.content.DSpaceObject;
|
|||||||
import org.dspace.content.factory.ContentServiceFactory;
|
import org.dspace.content.factory.ContentServiceFactory;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.core.factory.CoreServiceFactory;
|
import org.dspace.core.factory.CoreServiceFactory;
|
||||||
import org.dspace.curate.factory.CurateServiceFactory;
|
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
import org.dspace.eperson.factory.EPersonServiceFactory;
|
import org.dspace.eperson.factory.EPersonServiceFactory;
|
||||||
import org.dspace.eperson.service.EPersonService;
|
import org.dspace.eperson.service.EPersonService;
|
||||||
@@ -160,13 +159,7 @@ public class Curation extends DSpaceRunnable<CurationScriptConfiguration> {
|
|||||||
}
|
}
|
||||||
curator.curate(context, entry.getObjectId());
|
curator.curate(context, entry.getObjectId());
|
||||||
} else {
|
} else {
|
||||||
// make eperson who queued task the effective user
|
throw new IllegalArgumentException("curation for workflow items is no longer supported");
|
||||||
EPerson agent = ePersonService.findByEmail(context, entry.getEpersonId());
|
|
||||||
if (agent != null) {
|
|
||||||
context.setCurrentUser(agent);
|
|
||||||
}
|
|
||||||
CurateServiceFactory.getInstance().getWorkflowCuratorService()
|
|
||||||
.curate(curator, context, entry.getObjectId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
queue.release(this.queue, ticket, true);
|
queue.release(this.queue, ticket, true);
|
||||||
|
@@ -1,422 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.curate;
|
|
||||||
|
|
||||||
import static javax.xml.stream.XMLStreamConstants.CHARACTERS;
|
|
||||||
import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
|
|
||||||
import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import javax.xml.stream.XMLInputFactory;
|
|
||||||
import javax.xml.stream.XMLStreamException;
|
|
||||||
import javax.xml.stream.XMLStreamReader;
|
|
||||||
|
|
||||||
import org.apache.logging.log4j.Logger;
|
|
||||||
import org.dspace.authorize.AuthorizeException;
|
|
||||||
import org.dspace.content.Collection;
|
|
||||||
import org.dspace.content.Item;
|
|
||||||
import org.dspace.content.service.CollectionService;
|
|
||||||
import org.dspace.core.Context;
|
|
||||||
import org.dspace.core.LogManager;
|
|
||||||
import org.dspace.core.factory.CoreServiceFactory;
|
|
||||||
import org.dspace.core.service.PluginService;
|
|
||||||
import org.dspace.curate.service.WorkflowCuratorService;
|
|
||||||
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.services.ConfigurationService;
|
|
||||||
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
|
||||||
import org.dspace.workflowbasic.BasicWorkflowItem;
|
|
||||||
import org.dspace.workflowbasic.BasicWorkflowServiceImpl;
|
|
||||||
import org.dspace.workflowbasic.service.BasicWorkflowItemService;
|
|
||||||
import org.dspace.workflowbasic.service.BasicWorkflowService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
|
|
||||||
// Warning - static import ahead!
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* WorkflowCurator manages interactions between curation and workflow.
|
|
||||||
* Specifically, it is invoked in WorkflowManager to allow the
|
|
||||||
* performance of curation tasks during workflow.
|
|
||||||
*
|
|
||||||
* @author richardrodgers
|
|
||||||
*/
|
|
||||||
public class WorkflowCuratorServiceImpl implements WorkflowCuratorService {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Logging category
|
|
||||||
*/
|
|
||||||
private static final Logger log
|
|
||||||
= org.apache.logging.log4j.LogManager.getLogger();
|
|
||||||
|
|
||||||
protected Map<String, TaskSet> tsMap = new HashMap<String, TaskSet>();
|
|
||||||
|
|
||||||
protected final String[] flowSteps = {"step1", "step2", "step3", "archive"};
|
|
||||||
|
|
||||||
@Autowired(required = true)
|
|
||||||
protected CollectionService collectionService;
|
|
||||||
@Autowired(required = true)
|
|
||||||
protected EPersonService ePersonService;
|
|
||||||
@Autowired(required = true)
|
|
||||||
protected GroupService groupService;
|
|
||||||
protected BasicWorkflowItemService basicWorkflowItemService;
|
|
||||||
protected BasicWorkflowService basicWorkflowService;
|
|
||||||
@Autowired(required = true)
|
|
||||||
protected WorkflowServiceFactory workflowServiceFactory;
|
|
||||||
@Autowired(required = true)
|
|
||||||
protected ConfigurationService configurationService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialize the bean (after dependency injection has already taken place).
|
|
||||||
* Ensures the configurationService is injected, so that we can read the
|
|
||||||
* settings from configuration
|
|
||||||
* Called by "init-method" in Spring config.
|
|
||||||
*
|
|
||||||
* @throws Exception ...
|
|
||||||
*/
|
|
||||||
public void init() throws Exception {
|
|
||||||
File cfgFile = new File(configurationService.getProperty("dspace.dir") +
|
|
||||||
File.separator + "config" + File.separator +
|
|
||||||
"workflow-curation.xml");
|
|
||||||
try {
|
|
||||||
loadTaskConfig(cfgFile);
|
|
||||||
if (workflowServiceFactory.getWorkflowService() instanceof BasicWorkflowItemService) {
|
|
||||||
basicWorkflowService = (BasicWorkflowService) workflowServiceFactory.getWorkflowService();
|
|
||||||
basicWorkflowItemService = (BasicWorkflowItemService) workflowServiceFactory.getWorkflowItemService();
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
// debug e.printStackTrace();
|
|
||||||
log.fatal("Unable to load config: " + cfgFile.getAbsolutePath());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected WorkflowCuratorServiceImpl() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean needsCuration(BasicWorkflowItem wfi) {
|
|
||||||
return getFlowStep(wfi) != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean doCuration(Context c, BasicWorkflowItem wfi)
|
|
||||||
throws AuthorizeException, IOException, SQLException {
|
|
||||||
FlowStep step = getFlowStep(wfi);
|
|
||||||
if (step != null) {
|
|
||||||
Curator curator = new Curator();
|
|
||||||
// are we going to perform, or just put on queue?
|
|
||||||
if (step.queue != null) {
|
|
||||||
// The queue runner will call setReporter
|
|
||||||
for (Task task : step.tasks) {
|
|
||||||
curator.addTask(task.name);
|
|
||||||
}
|
|
||||||
curator.queue(c, String.valueOf(wfi.getID()), step.queue);
|
|
||||||
basicWorkflowItemService.update(c, wfi);
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
PluginService plugins = CoreServiceFactory.getInstance()
|
|
||||||
.getPluginService();
|
|
||||||
try (Reporter reporter
|
|
||||||
= (Reporter) plugins
|
|
||||||
.getSinglePlugin(Reporter.class);) {
|
|
||||||
curator.setReporter(reporter);
|
|
||||||
boolean status = curate(curator, c, wfi);
|
|
||||||
reporter.close();
|
|
||||||
return status;
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("Failed to close report", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean curate(Curator curator, Context c, String wfId)
|
|
||||||
throws AuthorizeException, IOException, SQLException {
|
|
||||||
BasicWorkflowItem wfi = basicWorkflowItemService.find(c, Integer.parseInt(wfId));
|
|
||||||
if (wfi != null) {
|
|
||||||
if (curate(curator, c, wfi)) {
|
|
||||||
basicWorkflowService.advance(c, wfi, c.getCurrentUser(), false, true);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
log.warn(LogManager.getHeader(c, "No workflow item found for id: " + wfId, null));
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean curate(Curator curator, Context c, BasicWorkflowItem wfi)
|
|
||||||
throws AuthorizeException, IOException, SQLException {
|
|
||||||
FlowStep step = getFlowStep(wfi);
|
|
||||||
if (step != null) {
|
|
||||||
// assign collection to item in case task needs it
|
|
||||||
Item item = wfi.getItem();
|
|
||||||
item.setOwningCollection(wfi.getCollection());
|
|
||||||
for (Task task : step.tasks) {
|
|
||||||
curator.addTask(task.name);
|
|
||||||
curator.curate(item);
|
|
||||||
int status = curator.getStatus(task.name);
|
|
||||||
String result = curator.getResult(task.name);
|
|
||||||
String action = "none";
|
|
||||||
if (status == Curator.CURATE_FAIL) {
|
|
||||||
// task failed - notify any contacts the task has assigned
|
|
||||||
if (task.powers.contains("reject")) {
|
|
||||||
action = "reject";
|
|
||||||
}
|
|
||||||
notifyContacts(c, wfi, task, "fail", action, result);
|
|
||||||
// if task so empowered, reject submission and terminate
|
|
||||||
if ("reject".equals(action)) {
|
|
||||||
basicWorkflowService.sendWorkflowItemBackSubmission(c, wfi, c.getCurrentUser(),
|
|
||||||
null, task.name + ": " + result);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else if (status == Curator.CURATE_SUCCESS) {
|
|
||||||
if (task.powers.contains("approve")) {
|
|
||||||
action = "approve";
|
|
||||||
}
|
|
||||||
notifyContacts(c, wfi, task, "success", action, result);
|
|
||||||
if ("approve".equals(action)) {
|
|
||||||
// cease further task processing and advance submission
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else if (status == Curator.CURATE_ERROR) {
|
|
||||||
notifyContacts(c, wfi, task, "error", action, result);
|
|
||||||
}
|
|
||||||
curator.clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void notifyContacts(Context c, BasicWorkflowItem wfi, Task task,
|
|
||||||
String status, String action, String message)
|
|
||||||
throws AuthorizeException, IOException, SQLException {
|
|
||||||
List<EPerson> epa = resolveContacts(c, task.getContacts(status), wfi);
|
|
||||||
if (epa.size() > 0) {
|
|
||||||
basicWorkflowService.notifyOfCuration(c, wfi, epa, task.name, action, message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected List<EPerson> resolveContacts(Context c, List<String> contacts,
|
|
||||||
BasicWorkflowItem wfi)
|
|
||||||
throws AuthorizeException, IOException, SQLException {
|
|
||||||
List<EPerson> epList = new ArrayList<EPerson>();
|
|
||||||
for (String contact : contacts) {
|
|
||||||
// decode contacts
|
|
||||||
if ("$flowgroup".equals(contact)) {
|
|
||||||
// special literal for current flowgoup
|
|
||||||
int step = state2step(wfi.getState());
|
|
||||||
// make sure this step exists
|
|
||||||
if (step < 4) {
|
|
||||||
Group wfGroup = collectionService.getWorkflowGroup(c, wfi.getCollection(), step);
|
|
||||||
if (wfGroup != null) {
|
|
||||||
epList.addAll(groupService.allMembers(c, wfGroup));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if ("$colladmin".equals(contact)) {
|
|
||||||
Group adGroup = wfi.getCollection().getAdministrators();
|
|
||||||
if (adGroup != null) {
|
|
||||||
epList.addAll(groupService.allMembers(c, adGroup));
|
|
||||||
}
|
|
||||||
} else if ("$siteadmin".equals(contact)) {
|
|
||||||
EPerson siteEp = ePersonService.findByEmail(c,
|
|
||||||
configurationService.getProperty("mail.admin"));
|
|
||||||
if (siteEp != null) {
|
|
||||||
epList.add(siteEp);
|
|
||||||
}
|
|
||||||
} else if (contact.indexOf("@") > 0) {
|
|
||||||
// little shaky heuristic here - assume an eperson email name
|
|
||||||
EPerson ep = ePersonService.findByEmail(c, contact);
|
|
||||||
if (ep != null) {
|
|
||||||
epList.add(ep);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// assume it is an arbitrary group name
|
|
||||||
Group group = groupService.findByName(c, contact);
|
|
||||||
if (group != null) {
|
|
||||||
epList.addAll(groupService.allMembers(c, group));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return epList;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected FlowStep getFlowStep(BasicWorkflowItem wfi) {
|
|
||||||
Collection coll = wfi.getCollection();
|
|
||||||
String key = tsMap.containsKey(coll.getHandle()) ? coll.getHandle() : "default";
|
|
||||||
TaskSet ts = tsMap.get(key);
|
|
||||||
if (ts != null) {
|
|
||||||
int myStep = state2step(wfi.getState());
|
|
||||||
for (FlowStep fstep : ts.steps) {
|
|
||||||
if (fstep.step == myStep) {
|
|
||||||
return fstep;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected int state2step(int state) {
|
|
||||||
if (state <= BasicWorkflowServiceImpl.WFSTATE_STEP1POOL) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if (state <= BasicWorkflowServiceImpl.WFSTATE_STEP2POOL) {
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
if (state <= BasicWorkflowServiceImpl.WFSTATE_STEP3POOL) {
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
return 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected int stepName2step(String name) {
|
|
||||||
for (int i = 0; i < flowSteps.length; i++) {
|
|
||||||
if (flowSteps[i].equals(name)) {
|
|
||||||
return i + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// invalid stepName - log
|
|
||||||
log.warn("Invalid step: '" + name + "' provided");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void loadTaskConfig(File cfgFile) throws IOException {
|
|
||||||
Map<String, String> collMap = new HashMap<String, String>();
|
|
||||||
Map<String, TaskSet> setMap = new HashMap<String, TaskSet>();
|
|
||||||
TaskSet taskSet = null;
|
|
||||||
FlowStep flowStep = null;
|
|
||||||
Task task = null;
|
|
||||||
String type = null;
|
|
||||||
try {
|
|
||||||
XMLInputFactory factory = XMLInputFactory.newInstance();
|
|
||||||
XMLStreamReader reader = factory.createXMLStreamReader(
|
|
||||||
new FileInputStream(cfgFile), "UTF-8");
|
|
||||||
while (reader.hasNext()) {
|
|
||||||
int event = reader.next();
|
|
||||||
if (event == START_ELEMENT) {
|
|
||||||
String eName = reader.getLocalName();
|
|
||||||
if ("mapping".equals(eName)) {
|
|
||||||
collMap.put(reader.getAttributeValue(0),
|
|
||||||
reader.getAttributeValue(1));
|
|
||||||
} else if ("taskset".equals(eName)) {
|
|
||||||
taskSet = new TaskSet(reader.getAttributeValue(0));
|
|
||||||
} else if ("flowstep".equals(eName)) {
|
|
||||||
int count = reader.getAttributeCount();
|
|
||||||
String queue = (count == 2) ?
|
|
||||||
reader.getAttributeValue(1) : null;
|
|
||||||
flowStep = new FlowStep(reader.getAttributeValue(0), queue);
|
|
||||||
} else if ("task".equals(eName)) {
|
|
||||||
task = new Task(reader.getAttributeValue(0));
|
|
||||||
} else if ("workflow".equals(eName)) {
|
|
||||||
type = "power";
|
|
||||||
} else if ("notify".equals(eName)) {
|
|
||||||
type = reader.getAttributeValue(0);
|
|
||||||
}
|
|
||||||
} else if (event == CHARACTERS) {
|
|
||||||
if (task != null) {
|
|
||||||
if ("power".equals(type)) {
|
|
||||||
task.addPower(reader.getText());
|
|
||||||
} else {
|
|
||||||
task.addContact(type, reader.getText());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (event == END_ELEMENT) {
|
|
||||||
String eName = reader.getLocalName();
|
|
||||||
if ("task".equals(eName)) {
|
|
||||||
flowStep.addTask(task);
|
|
||||||
task = null;
|
|
||||||
} else if ("flowstep".equals(eName)) {
|
|
||||||
taskSet.addStep(flowStep);
|
|
||||||
} else if ("taskset".equals(eName)) {
|
|
||||||
setMap.put(taskSet.setName, taskSet);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
reader.close();
|
|
||||||
// stitch maps together
|
|
||||||
for (Map.Entry<String, String> collEntry : collMap.entrySet()) {
|
|
||||||
if (!"none".equals(collEntry.getValue()) && setMap.containsKey(collEntry.getValue())) {
|
|
||||||
tsMap.put(collEntry.getKey(), setMap.get(collEntry.getValue()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (XMLStreamException xsE) {
|
|
||||||
throw new IOException(xsE.getMessage(), xsE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected class TaskSet {
|
|
||||||
public String setName = null;
|
|
||||||
public List<FlowStep> steps = null;
|
|
||||||
|
|
||||||
public TaskSet(String setName) {
|
|
||||||
this.setName = setName;
|
|
||||||
steps = new ArrayList<FlowStep>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addStep(FlowStep step) {
|
|
||||||
steps.add(step);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected class FlowStep {
|
|
||||||
public int step = -1;
|
|
||||||
public String queue = null;
|
|
||||||
public List<Task> tasks = null;
|
|
||||||
|
|
||||||
public FlowStep(String stepStr, String queueStr) {
|
|
||||||
this.step = stepName2step(stepStr);
|
|
||||||
this.queue = queueStr;
|
|
||||||
tasks = new ArrayList<Task>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addTask(Task task) {
|
|
||||||
tasks.add(task);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected class Task {
|
|
||||||
public String name = null;
|
|
||||||
public List<String> powers = new ArrayList<String>();
|
|
||||||
public Map<String, List<String>> contacts = new HashMap<String, List<String>>();
|
|
||||||
|
|
||||||
public Task(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addPower(String power) {
|
|
||||||
powers.add(power);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addContact(String status, String contact) {
|
|
||||||
List<String> sContacts = contacts.get(status);
|
|
||||||
if (sContacts == null) {
|
|
||||||
sContacts = new ArrayList<String>();
|
|
||||||
contacts.put(status, sContacts);
|
|
||||||
}
|
|
||||||
sContacts.add(contact);
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getContacts(String status) {
|
|
||||||
List<String> ret = contacts.get(status);
|
|
||||||
return (ret != null) ? ret : new ArrayList<String>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,27 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.curate.factory;
|
|
||||||
|
|
||||||
import org.dspace.curate.service.WorkflowCuratorService;
|
|
||||||
import org.dspace.services.factory.DSpaceServicesFactory;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Abstract factory to get services for the curate package, use CurateServiceFactory.getInstance() to retrieve an
|
|
||||||
* implementation
|
|
||||||
*
|
|
||||||
* @author kevinvandevelde at atmire.com
|
|
||||||
*/
|
|
||||||
public abstract class CurateServiceFactory {
|
|
||||||
|
|
||||||
public abstract WorkflowCuratorService getWorkflowCuratorService();
|
|
||||||
|
|
||||||
public static CurateServiceFactory getInstance() {
|
|
||||||
return DSpaceServicesFactory.getInstance().getServiceManager()
|
|
||||||
.getServiceByName("curateServiceFactory", CurateServiceFactory.class);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,28 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.curate.factory;
|
|
||||||
|
|
||||||
import org.dspace.curate.service.WorkflowCuratorService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Factory implementation to get services for the curate package, use CurateServiceFactory.getInstance() to retrieve
|
|
||||||
* an implementation
|
|
||||||
*
|
|
||||||
* @author kevinvandevelde at atmire.com
|
|
||||||
*/
|
|
||||||
public class CurateServiceFactoryImpl extends CurateServiceFactory {
|
|
||||||
|
|
||||||
@Autowired(required = true)
|
|
||||||
private WorkflowCuratorService workflowCurator;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public WorkflowCuratorService getWorkflowCuratorService() {
|
|
||||||
return workflowCurator;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,76 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.curate.service;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
|
|
||||||
import org.dspace.authorize.AuthorizeException;
|
|
||||||
import org.dspace.core.Context;
|
|
||||||
import org.dspace.curate.Curator;
|
|
||||||
import org.dspace.workflowbasic.BasicWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* WorkflowCurator manages interactions between curation and workflow.
|
|
||||||
* Specifically, it is invoked in WorkflowManager to allow the
|
|
||||||
* performance of curation tasks during workflow.
|
|
||||||
*
|
|
||||||
* @author richardrodgers
|
|
||||||
*/
|
|
||||||
public interface WorkflowCuratorService {
|
|
||||||
|
|
||||||
|
|
||||||
public boolean needsCuration(BasicWorkflowItem wfi);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determines and executes curation on a Workflow item.
|
|
||||||
*
|
|
||||||
* @param c the context
|
|
||||||
* @param wfi the workflow item
|
|
||||||
* @return true if curation was completed or not required,
|
|
||||||
* false if tasks were queued for later completion,
|
|
||||||
* or item was rejected
|
|
||||||
* @throws AuthorizeException if authorization error
|
|
||||||
* @throws IOException if IO error
|
|
||||||
* @throws SQLException if database error
|
|
||||||
*/
|
|
||||||
public boolean doCuration(Context c, BasicWorkflowItem wfi)
|
|
||||||
throws AuthorizeException, IOException, SQLException;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determines and executes curation of a Workflow item.
|
|
||||||
*
|
|
||||||
* @param curator the Curator object
|
|
||||||
* @param c the user context
|
|
||||||
* @param wfId the workflow id
|
|
||||||
* @return true if curation was completed or not required,
|
|
||||||
* false if no workflow item found for id
|
|
||||||
* or item was rejected
|
|
||||||
* @throws AuthorizeException if authorization error
|
|
||||||
* @throws IOException if IO error
|
|
||||||
* @throws SQLException if database error
|
|
||||||
*/
|
|
||||||
public boolean curate(Curator curator, Context c, String wfId)
|
|
||||||
throws AuthorizeException, IOException, SQLException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determines and executes curation of a Workflow item.
|
|
||||||
*
|
|
||||||
* @param curator the Curator object
|
|
||||||
* @param c the user context
|
|
||||||
* @param wfi the workflow item
|
|
||||||
* @return true if curation was completed or not required,
|
|
||||||
* false if item was rejected
|
|
||||||
* @throws AuthorizeException if authorization error
|
|
||||||
* @throws IOException if IO error
|
|
||||||
* @throws SQLException if database error
|
|
||||||
*/
|
|
||||||
public boolean curate(Curator curator, Context c, BasicWorkflowItem wfi)
|
|
||||||
throws AuthorizeException, IOException, SQLException;
|
|
||||||
}
|
|
@@ -7,17 +7,17 @@
|
|||||||
*/
|
*/
|
||||||
package org.dspace.discovery.indexobject;
|
package org.dspace.discovery.indexobject;
|
||||||
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
import org.dspace.workflow.WorkflowItem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Workflow item implementation for the IndexableObject
|
* Workflow item implementation for the IndexableObject
|
||||||
* @author Kevin Van de Velde (kevin at atmire dot com)
|
* @author Kevin Van de Velde (kevin at atmire dot com)
|
||||||
*/
|
*/
|
||||||
public class IndexableWorkflowItem extends IndexableInProgressSubmission<XmlWorkflowItem> {
|
public class IndexableWorkflowItem extends IndexableInProgressSubmission<WorkflowItem> {
|
||||||
|
|
||||||
public static final String TYPE = XmlWorkflowItem.class.getSimpleName();
|
public static final String TYPE = WorkflowItem.class.getSimpleName();
|
||||||
|
|
||||||
public IndexableWorkflowItem(XmlWorkflowItem inProgressSubmission) {
|
public IndexableWorkflowItem(WorkflowItem inProgressSubmission) {
|
||||||
super(inProgressSubmission);
|
super(inProgressSubmission);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -64,8 +64,8 @@ import org.dspace.handle.service.HandleService;
|
|||||||
import org.dspace.services.factory.DSpaceServicesFactory;
|
import org.dspace.services.factory.DSpaceServicesFactory;
|
||||||
import org.dspace.util.MultiFormatDateParser;
|
import org.dspace.util.MultiFormatDateParser;
|
||||||
import org.dspace.util.SolrUtils;
|
import org.dspace.util.SolrUtils;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.XmlWorkflowItemService;
|
import org.dspace.workflow.WorkflowItemService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -91,7 +91,7 @@ public class ItemIndexFactoryImpl extends DSpaceObjectIndexFactoryImpl<Indexable
|
|||||||
@Autowired
|
@Autowired
|
||||||
protected WorkspaceItemService workspaceItemService;
|
protected WorkspaceItemService workspaceItemService;
|
||||||
@Autowired
|
@Autowired
|
||||||
protected XmlWorkflowItemService xmlWorkflowItemService;
|
protected WorkflowItemService workflowItemService;
|
||||||
@Autowired
|
@Autowired
|
||||||
protected WorkflowItemIndexFactory workflowItemIndexFactory;
|
protected WorkflowItemIndexFactory workflowItemIndexFactory;
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -718,9 +718,9 @@ public class ItemIndexFactoryImpl extends DSpaceObjectIndexFactoryImpl<Indexable
|
|||||||
results.addAll(workspaceItemIndexFactory.getIndexableObjects(context, workspaceItem));
|
results.addAll(workspaceItemIndexFactory.getIndexableObjects(context, workspaceItem));
|
||||||
} else {
|
} else {
|
||||||
// Check if we a workflow item
|
// Check if we a workflow item
|
||||||
final XmlWorkflowItem xmlWorkflowItem = xmlWorkflowItemService.findByItem(context, object);
|
final WorkflowItem workflowItem = workflowItemService.findByItem(context, object);
|
||||||
if (xmlWorkflowItem != null) {
|
if (workflowItem != null) {
|
||||||
results.addAll(workflowItemIndexFactory.getIndexableObjects(context, xmlWorkflowItem));
|
results.addAll(workflowItemIndexFactory.getIndexableObjects(context, workflowItem));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -23,12 +23,12 @@ import org.dspace.discovery.SearchUtils;
|
|||||||
import org.dspace.discovery.configuration.DiscoveryConfiguration;
|
import org.dspace.discovery.configuration.DiscoveryConfiguration;
|
||||||
import org.dspace.discovery.indexobject.factory.WorkflowItemIndexFactory;
|
import org.dspace.discovery.indexobject.factory.WorkflowItemIndexFactory;
|
||||||
import org.dspace.services.factory.DSpaceServicesFactory;
|
import org.dspace.services.factory.DSpaceServicesFactory;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
|
import org.dspace.workflow.WorkflowItemService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.ClaimedTask;
|
import org.dspace.xmlworkflow.storedcomponents.ClaimedTask;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.PoolTask;
|
import org.dspace.xmlworkflow.storedcomponents.PoolTask;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.XmlWorkflowItemService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -36,11 +36,11 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
* @author Kevin Van de Velde (kevin at atmire dot com)
|
* @author Kevin Van de Velde (kevin at atmire dot com)
|
||||||
*/
|
*/
|
||||||
public class WorkflowItemIndexFactoryImpl
|
public class WorkflowItemIndexFactoryImpl
|
||||||
extends InprogressSubmissionIndexFactoryImpl<IndexableWorkflowItem, XmlWorkflowItem>
|
extends InprogressSubmissionIndexFactoryImpl<IndexableWorkflowItem, WorkflowItem>
|
||||||
implements WorkflowItemIndexFactory {
|
implements WorkflowItemIndexFactory {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
protected XmlWorkflowItemService workflowItemService;
|
protected WorkflowItemService workflowItemService;
|
||||||
@Autowired
|
@Autowired
|
||||||
protected ClaimedTaskService claimedTaskService;
|
protected ClaimedTaskService claimedTaskService;
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -48,7 +48,7 @@ public class WorkflowItemIndexFactoryImpl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterator<IndexableWorkflowItem> findAll(Context context) throws SQLException {
|
public Iterator<IndexableWorkflowItem> findAll(Context context) throws SQLException {
|
||||||
final Iterator<XmlWorkflowItem> workflowItems = workflowItemService.findAll(context).iterator();
|
final Iterator<WorkflowItem> workflowItems = workflowItemService.findAll(context).iterator();
|
||||||
|
|
||||||
return new Iterator<IndexableWorkflowItem>() {
|
return new Iterator<IndexableWorkflowItem>() {
|
||||||
@Override
|
@Override
|
||||||
@@ -73,7 +73,7 @@ public class WorkflowItemIndexFactoryImpl
|
|||||||
throws SQLException, IOException {
|
throws SQLException, IOException {
|
||||||
// Add the ID's, types and call the SolrServiceIndexPlugins
|
// Add the ID's, types and call the SolrServiceIndexPlugins
|
||||||
final SolrInputDocument doc = super.buildDocument(context, indexableObject);
|
final SolrInputDocument doc = super.buildDocument(context, indexableObject);
|
||||||
final XmlWorkflowItem workflowItem = indexableObject.getIndexedObject();
|
final WorkflowItem workflowItem = indexableObject.getIndexedObject();
|
||||||
final Item item = workflowItem.getItem();
|
final Item item = workflowItem.getItem();
|
||||||
// Add the item metadata as configured
|
// Add the item metadata as configured
|
||||||
List<DiscoveryConfiguration> discoveryConfigurations = SearchUtils
|
List<DiscoveryConfiguration> discoveryConfigurations = SearchUtils
|
||||||
@@ -92,11 +92,11 @@ public class WorkflowItemIndexFactoryImpl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean supports(Object object) {
|
public boolean supports(Object object) {
|
||||||
return object instanceof XmlWorkflowItem;
|
return object instanceof WorkflowItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List getIndexableObjects(Context context, XmlWorkflowItem object) throws SQLException {
|
public List getIndexableObjects(Context context, WorkflowItem object) throws SQLException {
|
||||||
List<IndexableObject> results = new ArrayList<>();
|
List<IndexableObject> results = new ArrayList<>();
|
||||||
results.add(new IndexableWorkflowItem(object));
|
results.add(new IndexableWorkflowItem(object));
|
||||||
|
|
||||||
@@ -115,7 +115,7 @@ public class WorkflowItemIndexFactoryImpl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<IndexableWorkflowItem> findIndexableObject(Context context, String id) throws SQLException {
|
public Optional<IndexableWorkflowItem> findIndexableObject(Context context, String id) throws SQLException {
|
||||||
final XmlWorkflowItem xmlWorkflowItem = workflowItemService.find(context, Integer.parseInt(id));
|
final WorkflowItem workflowItem = workflowItemService.find(context, Integer.parseInt(id));
|
||||||
return xmlWorkflowItem == null ? Optional.empty() : Optional.of(new IndexableWorkflowItem(xmlWorkflowItem));
|
return workflowItem == null ? Optional.empty() : Optional.of(new IndexableWorkflowItem(workflowItem));
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -15,9 +15,9 @@ import org.dspace.content.service.WorkspaceItemService;
|
|||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.discovery.IndexableObject;
|
import org.dspace.discovery.IndexableObject;
|
||||||
import org.dspace.services.factory.DSpaceServicesFactory;
|
import org.dspace.services.factory.DSpaceServicesFactory;
|
||||||
|
import org.dspace.workflow.WorkflowItemService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.XmlWorkflowItemService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -29,7 +29,7 @@ public abstract class IndexObjectFactoryFactory {
|
|||||||
@Autowired
|
@Autowired
|
||||||
protected WorkspaceItemService workspaceItemService;
|
protected WorkspaceItemService workspaceItemService;
|
||||||
@Autowired
|
@Autowired
|
||||||
protected XmlWorkflowItemService xmlWorkflowItemService;
|
protected WorkflowItemService workflowItemService;
|
||||||
@Autowired
|
@Autowired
|
||||||
protected ClaimedTaskService claimedTaskService;
|
protected ClaimedTaskService claimedTaskService;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
@@ -8,7 +8,7 @@
|
|||||||
package org.dspace.discovery.indexobject.factory;
|
package org.dspace.discovery.indexobject.factory;
|
||||||
|
|
||||||
import org.dspace.discovery.indexobject.IndexableWorkflowItem;
|
import org.dspace.discovery.indexobject.IndexableWorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
import org.dspace.workflow.WorkflowItem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Factory interface for indexing/retrieving workflow items objects in the search core
|
* Factory interface for indexing/retrieving workflow items objects in the search core
|
||||||
@@ -16,5 +16,5 @@ import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|||||||
* @author Kevin Van de Velde (kevin at atmire dot com)
|
* @author Kevin Van de Velde (kevin at atmire dot com)
|
||||||
*/
|
*/
|
||||||
public interface WorkflowItemIndexFactory
|
public interface WorkflowItemIndexFactory
|
||||||
extends InprogressSubmissionIndexFactory<IndexableWorkflowItem, XmlWorkflowItem> {
|
extends InprogressSubmissionIndexFactory<IndexableWorkflowItem, WorkflowItem> {
|
||||||
}
|
}
|
@@ -49,26 +49,17 @@ import org.dspace.versioning.dao.VersionDAO;
|
|||||||
import org.dspace.versioning.factory.VersionServiceFactory;
|
import org.dspace.versioning.factory.VersionServiceFactory;
|
||||||
import org.dspace.versioning.service.VersionHistoryService;
|
import org.dspace.versioning.service.VersionHistoryService;
|
||||||
import org.dspace.versioning.service.VersioningService;
|
import org.dspace.versioning.service.VersioningService;
|
||||||
|
import org.dspace.workflow.WorkflowItemService;
|
||||||
import org.dspace.workflow.WorkflowService;
|
import org.dspace.workflow.WorkflowService;
|
||||||
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
||||||
import org.dspace.workflowbasic.BasicWorkflowItem;
|
|
||||||
import org.dspace.workflowbasic.BasicWorkflowServiceImpl;
|
|
||||||
import org.dspace.workflowbasic.factory.BasicWorkflowServiceFactory;
|
|
||||||
import org.dspace.workflowbasic.service.BasicWorkflowItemService;
|
|
||||||
import org.dspace.workflowbasic.service.BasicWorkflowService;
|
|
||||||
import org.dspace.workflowbasic.service.TaskListItemService;
|
|
||||||
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
||||||
import org.dspace.xmlworkflow.factory.XmlWorkflowServiceFactory;
|
|
||||||
import org.dspace.xmlworkflow.service.WorkflowRequirementsService;
|
import org.dspace.xmlworkflow.service.WorkflowRequirementsService;
|
||||||
import org.dspace.xmlworkflow.service.XmlWorkflowService;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.ClaimedTask;
|
import org.dspace.xmlworkflow.storedcomponents.ClaimedTask;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.CollectionRole;
|
import org.dspace.xmlworkflow.storedcomponents.CollectionRole;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.CollectionRoleService;
|
import org.dspace.xmlworkflow.storedcomponents.service.CollectionRoleService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.WorkflowItemRoleService;
|
import org.dspace.xmlworkflow.storedcomponents.service.WorkflowItemRoleService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.XmlWorkflowItemService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -294,10 +285,6 @@ public class EPersonServiceImpl extends DSpaceObjectServiceImpl<EPerson> impleme
|
|||||||
if (constraintList.size() > 0) {
|
if (constraintList.size() > 0) {
|
||||||
// Check if the constraints we found should be deleted
|
// Check if the constraints we found should be deleted
|
||||||
if (cascade) {
|
if (cascade) {
|
||||||
boolean isBasicFramework = WorkflowServiceFactory.getInstance().getWorkflowService()
|
|
||||||
instanceof BasicWorkflowService;
|
|
||||||
boolean isXmlFramework = WorkflowServiceFactory.getInstance().getWorkflowService()
|
|
||||||
instanceof XmlWorkflowService;
|
|
||||||
Iterator<String> constraintsIterator = constraintList.iterator();
|
Iterator<String> constraintsIterator = constraintList.iterator();
|
||||||
|
|
||||||
while (constraintsIterator.hasNext()) {
|
while (constraintsIterator.hasNext()) {
|
||||||
@@ -334,23 +321,21 @@ public class EPersonServiceImpl extends DSpaceObjectServiceImpl<EPerson> impleme
|
|||||||
itemService.update(context, item);
|
itemService.update(context, item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (StringUtils.equals(tableName, "cwf_claimtask") && isXmlFramework) {
|
} else if (StringUtils.equals(tableName, "cwf_claimtask")) {
|
||||||
// Unclaim all XmlWorkflow tasks
|
// Unclaim all XmlWorkflow tasks
|
||||||
XmlWorkflowItemService xmlWorkflowItemService = XmlWorkflowServiceFactory
|
WorkflowItemService workflowItemService = WorkflowServiceFactory
|
||||||
.getInstance().getXmlWorkflowItemService();
|
.getInstance().getWorkflowItemService();
|
||||||
ClaimedTaskService claimedTaskService = XmlWorkflowServiceFactory
|
ClaimedTaskService claimedTaskService = WorkflowServiceFactory
|
||||||
.getInstance().getClaimedTaskService();
|
.getInstance().getClaimedTaskService();
|
||||||
XmlWorkflowService xmlWorkflowService = XmlWorkflowServiceFactory
|
WorkflowService workflowService = WorkflowServiceFactory
|
||||||
.getInstance().getXmlWorkflowService();
|
.getInstance().getWorkflowService();
|
||||||
WorkflowRequirementsService workflowRequirementsService = XmlWorkflowServiceFactory
|
WorkflowRequirementsService workflowRequirementsService = WorkflowServiceFactory
|
||||||
.getInstance().getWorkflowRequirementsService();
|
.getInstance().getWorkflowRequirementsService();
|
||||||
|
|
||||||
List<XmlWorkflowItem> xmlWorkflowItems = xmlWorkflowItemService
|
|
||||||
.findBySubmitter(context, ePerson);
|
|
||||||
List<ClaimedTask> claimedTasks = claimedTaskService.findByEperson(context, ePerson);
|
List<ClaimedTask> claimedTasks = claimedTaskService.findByEperson(context, ePerson);
|
||||||
|
|
||||||
for (ClaimedTask task : claimedTasks) {
|
for (ClaimedTask task : claimedTasks) {
|
||||||
xmlWorkflowService.deleteClaimedTask(context, task.getWorkflowItem(), task);
|
workflowService.deleteClaimedTask(context, task.getWorkflowItem(), task);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
workflowRequirementsService.removeClaimedUser(context, task.getWorkflowItem(),
|
workflowRequirementsService.removeClaimedUser(context, task.getWorkflowItem(),
|
||||||
@@ -362,45 +347,15 @@ public class EPersonServiceImpl extends DSpaceObjectServiceImpl<EPerson> impleme
|
|||||||
.singletonList(tableName)));
|
.singletonList(tableName)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (StringUtils.equals(tableName, "workflowitem") && isBasicFramework) {
|
|
||||||
// Remove basicWorkflow workflowitem and unclaim them
|
|
||||||
BasicWorkflowItemService basicWorkflowItemService = BasicWorkflowServiceFactory.getInstance()
|
|
||||||
.getBasicWorkflowItemService();
|
|
||||||
BasicWorkflowService basicWorkflowService = BasicWorkflowServiceFactory.getInstance()
|
|
||||||
.getBasicWorkflowService();
|
|
||||||
TaskListItemService taskListItemService = BasicWorkflowServiceFactory.getInstance()
|
|
||||||
.getTaskListItemService();
|
|
||||||
List<BasicWorkflowItem> workflowItems = basicWorkflowItemService.findByOwner(context, ePerson);
|
|
||||||
for (BasicWorkflowItem workflowItem : workflowItems) {
|
|
||||||
int state = workflowItem.getState();
|
|
||||||
// unclaim tasks that are in the pool.
|
|
||||||
if (state == BasicWorkflowServiceImpl.WFSTATE_STEP1
|
|
||||||
|| state == BasicWorkflowServiceImpl.WFSTATE_STEP2
|
|
||||||
|| state == BasicWorkflowServiceImpl.WFSTATE_STEP3) {
|
|
||||||
log.info(LogManager.getHeader(context, "unclaim_workflow",
|
|
||||||
"workflow_id=" + workflowItem.getID() + ", claiming EPerson is deleted"));
|
|
||||||
basicWorkflowService.unclaim(context, workflowItem, context.getCurrentUser());
|
|
||||||
// remove the EPerson from the list of persons that can (re-)claim the task
|
|
||||||
// while we are doing it below, we must do this here as well as the previously
|
|
||||||
// unclaimed tasks was put back into pool and we do not know the order the tables
|
|
||||||
// are checked.
|
|
||||||
taskListItemService.deleteByWorkflowItemAndEPerson(context, workflowItem, ePerson);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (StringUtils.equals(tableName, "resourcepolicy")) {
|
} else if (StringUtils.equals(tableName, "resourcepolicy")) {
|
||||||
// we delete the EPerson, it won't need any rights anymore.
|
// we delete the EPerson, it won't need any rights anymore.
|
||||||
authorizeService.removeAllEPersonPolicies(context, ePerson);
|
authorizeService.removeAllEPersonPolicies(context, ePerson);
|
||||||
} else if (StringUtils.equals(tableName, "tasklistitem") && isBasicFramework) {
|
} else if (StringUtils.equals(tableName, "cwf_pooltask")) {
|
||||||
// remove EPerson from the list of EPersons that may claim some specific workflow tasks.
|
PoolTaskService poolTaskService = WorkflowServiceFactory.getInstance().getPoolTaskService();
|
||||||
TaskListItemService taskListItemService = BasicWorkflowServiceFactory.getInstance()
|
|
||||||
.getTaskListItemService();
|
|
||||||
taskListItemService.deleteByEPerson(context, ePerson);
|
|
||||||
} else if (StringUtils.equals(tableName, "cwf_pooltask") && isXmlFramework) {
|
|
||||||
PoolTaskService poolTaskService = XmlWorkflowServiceFactory.getInstance().getPoolTaskService();
|
|
||||||
poolTaskService.deleteByEperson(context, ePerson);
|
poolTaskService.deleteByEperson(context, ePerson);
|
||||||
} else if (StringUtils.equals(tableName, "cwf_workflowitemrole") && isXmlFramework) {
|
} else if (StringUtils.equals(tableName, "cwf_workflowitemrole")) {
|
||||||
WorkflowItemRoleService workflowItemRoleService = XmlWorkflowServiceFactory.getInstance()
|
WorkflowItemRoleService workflowItemRoleService = WorkflowServiceFactory.getInstance()
|
||||||
.getWorkflowItemRoleService();
|
.getWorkflowItemRoleService();
|
||||||
workflowItemRoleService.deleteByEPerson(context, ePerson);
|
workflowItemRoleService.deleteByEPerson(context, ePerson);
|
||||||
} else {
|
} else {
|
||||||
log.warn("EPerson is referenced in table '" + tableName
|
log.warn("EPerson is referenced in table '" + tableName
|
||||||
|
@@ -227,8 +227,7 @@ public interface EPersonService extends DSpaceObjectService<EPerson>, DSpaceObje
|
|||||||
* EPersons. Called by delete() to determine whether the eperson can
|
* EPersons. Called by delete() to determine whether the eperson can
|
||||||
* actually be deleted.
|
* actually be deleted.
|
||||||
*
|
*
|
||||||
* An EPerson cannot be deleted if it exists in the item, workflowitem, or
|
* An EPerson cannot be deleted if it exists in the item, resourcepolicy or workflow-related tables.
|
||||||
* tasklistitem tables.
|
|
||||||
*
|
*
|
||||||
* @param context The relevant DSpace Context.
|
* @param context The relevant DSpace Context.
|
||||||
* @param ePerson EPerson to find
|
* @param ePerson EPerson to find
|
||||||
|
@@ -33,8 +33,8 @@ import org.dspace.eperson.service.EPersonService;
|
|||||||
import org.dspace.eperson.service.GroupService;
|
import org.dspace.eperson.service.GroupService;
|
||||||
import org.dspace.handle.factory.HandleServiceFactory;
|
import org.dspace.handle.factory.HandleServiceFactory;
|
||||||
import org.dspace.handle.service.HandleService;
|
import org.dspace.handle.service.HandleService;
|
||||||
import org.dspace.workflowbasic.factory.BasicWorkflowServiceFactory;
|
import org.dspace.workflow.WorkflowItemService;
|
||||||
import org.dspace.workflowbasic.service.BasicWorkflowItemService;
|
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author LINDAT/CLARIN dev team
|
* @author LINDAT/CLARIN dev team
|
||||||
@@ -48,8 +48,8 @@ public class ItemCheck extends Check {
|
|||||||
private MetadataValueService metadataValueService = ContentServiceFactory.getInstance().getMetadataValueService();
|
private MetadataValueService metadataValueService = ContentServiceFactory.getInstance().getMetadataValueService();
|
||||||
private ItemService itemService = ContentServiceFactory.getInstance().getItemService();
|
private ItemService itemService = ContentServiceFactory.getInstance().getItemService();
|
||||||
private WorkspaceItemService workspaceItemService = ContentServiceFactory.getInstance().getWorkspaceItemService();
|
private WorkspaceItemService workspaceItemService = ContentServiceFactory.getInstance().getWorkspaceItemService();
|
||||||
private BasicWorkflowItemService basicWorkflowItemService =
|
private WorkflowItemService workflowItemService =
|
||||||
BasicWorkflowServiceFactory.getInstance().getBasicWorkflowItemService();
|
WorkflowServiceFactory.getInstance().getWorkflowItemService();
|
||||||
private HandleService handleService = HandleServiceFactory.getInstance().getHandleService();
|
private HandleService handleService = HandleServiceFactory.getInstance().getHandleService();
|
||||||
private EPersonService ePersonService = EPersonServiceFactory.getInstance().getEPersonService();
|
private EPersonService ePersonService = EPersonServiceFactory.getInstance().getEPersonService();
|
||||||
private GroupService groupService = EPersonServiceFactory.getInstance().getGroupService();
|
private GroupService groupService = EPersonServiceFactory.getInstance().getGroupService();
|
||||||
@@ -95,7 +95,7 @@ public class ItemCheck extends Check {
|
|||||||
|
|
||||||
ret += String.format(
|
ret += String.format(
|
||||||
"\tWaiting for approval (workflow items): %d\n",
|
"\tWaiting for approval (workflow items): %d\n",
|
||||||
basicWorkflowItemService.countTotal(context));
|
workflowItemService.countAll(context));
|
||||||
|
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
error(e);
|
error(e);
|
||||||
@@ -132,7 +132,7 @@ public class ItemCheck extends Check {
|
|||||||
sb.append(String.format("Count %-14s: %s\n", "Group",
|
sb.append(String.format("Count %-14s: %s\n", "Group",
|
||||||
String.valueOf(groupService.countTotal(context))));
|
String.valueOf(groupService.countTotal(context))));
|
||||||
sb.append(String.format("Count %-14s: %s\n", "BasicWorkflowItem",
|
sb.append(String.format("Count %-14s: %s\n", "BasicWorkflowItem",
|
||||||
String.valueOf(basicWorkflowItemService.countTotal(context))));
|
String.valueOf(workflowItemService.countAll(context))));
|
||||||
sb.append(String.format("Count %-14s: %s\n", "WorkspaceItem",
|
sb.append(String.format("Count %-14s: %s\n", "WorkspaceItem",
|
||||||
String.valueOf(workspaceItemService.countTotal(context))));
|
String.valueOf(workspaceItemService.countTotal(context))));
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
|
@@ -21,8 +21,6 @@ import org.dspace.content.NonUniqueMetadataException;
|
|||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.services.ConfigurationService;
|
import org.dspace.services.ConfigurationService;
|
||||||
import org.dspace.services.factory.DSpaceServicesFactory;
|
import org.dspace.services.factory.DSpaceServicesFactory;
|
||||||
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
|
||||||
import org.dspace.xmlworkflow.service.XmlWorkflowService;
|
|
||||||
import org.flywaydb.core.api.callback.Callback;
|
import org.flywaydb.core.api.callback.Callback;
|
||||||
import org.flywaydb.core.api.callback.Event;
|
import org.flywaydb.core.api.callback.Event;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@@ -80,13 +78,9 @@ public class DatabaseRegistryUpdater implements Callback {
|
|||||||
MetadataImporter.loadRegistry(base + namespaceFile, true);
|
MetadataImporter.loadRegistry(base + namespaceFile, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if XML Workflow is enabled in workflow.cfg
|
String workflowTypes = "workflow-types.xml";
|
||||||
if (WorkflowServiceFactory.getInstance().getWorkflowService() instanceof XmlWorkflowService) {
|
log.info("Reading {}", workflowTypes);
|
||||||
// If so, load in the workflow metadata types as well
|
MetadataImporter.loadRegistry(base + workflowTypes, true);
|
||||||
String workflowTypes = "workflow-types.xml";
|
|
||||||
log.info("Reading {}", workflowTypes);
|
|
||||||
MetadataImporter.loadRegistry(base + workflowTypes, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
context.restoreAuthSystemState();
|
context.restoreAuthSystemState();
|
||||||
// Commit changes and close context
|
// Commit changes and close context
|
||||||
|
@@ -8,8 +8,6 @@
|
|||||||
package org.dspace.storage.rdbms.migration;
|
package org.dspace.storage.rdbms.migration;
|
||||||
|
|
||||||
import org.dspace.storage.rdbms.DatabaseUtils;
|
import org.dspace.storage.rdbms.DatabaseUtils;
|
||||||
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
|
||||||
import org.dspace.xmlworkflow.service.XmlWorkflowService;
|
|
||||||
import org.flywaydb.core.api.migration.BaseJavaMigration;
|
import org.flywaydb.core.api.migration.BaseJavaMigration;
|
||||||
import org.flywaydb.core.api.migration.Context;
|
import org.flywaydb.core.api.migration.Context;
|
||||||
|
|
||||||
@@ -26,24 +24,20 @@ public class V7_0_2018_04_03__Upgrade_Workflow_Policy extends BaseJavaMigration
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void migrate(Context context) throws Exception {
|
public void migrate(Context context) throws Exception {
|
||||||
// Make sure XML Workflow is enabled, shouldn't even be needed since this class is only loaded if the service
|
// Check if the XMLWorkflow table (cwf_workflowitem) already exists in this database
|
||||||
// is enabled.
|
if (DatabaseUtils.tableExists(context.getConnection(), "cwf_workflowitem")) {
|
||||||
if (WorkflowServiceFactory.getInstance().getWorkflowService() instanceof XmlWorkflowService) {
|
String dbtype = DatabaseUtils.getDbType(context.getConnection());
|
||||||
// Now, check if the XMLWorkflow table (cwf_workflowitem) already exists in this database
|
|
||||||
if (DatabaseUtils.tableExists(context.getConnection(), "cwf_workflowitem")) {
|
|
||||||
String dbtype = DatabaseUtils.getDbType(context.getConnection());
|
|
||||||
|
|
||||||
String sqlMigrationPath = "org/dspace/storage/rdbms/sqlmigration/workflow/" + dbtype + "/";
|
String sqlMigrationPath = "org/dspace/storage/rdbms/sqlmigration/workflow/" + dbtype + "/";
|
||||||
String dataMigrateSQL = MigrationUtils.getResourceAsString(
|
String dataMigrateSQL = MigrationUtils.getResourceAsString(
|
||||||
sqlMigrationPath + "xmlworkflow/V7.0_2018.04.03__upgrade_workflow_policy.sql");
|
sqlMigrationPath + "xmlworkflow/V7.0_2018.04.03__upgrade_workflow_policy.sql");
|
||||||
|
|
||||||
// Actually execute the Data migration SQL
|
// Actually execute the Data migration SQL
|
||||||
// This will migrate all existing traditional workflows to the new XMLWorkflow system & tables
|
// This will migrate all existing traditional workflows to the new XMLWorkflow system & tables
|
||||||
DatabaseUtils.executeSql(context.getConnection(), dataMigrateSQL);
|
DatabaseUtils.executeSql(context.getConnection(), dataMigrateSQL);
|
||||||
|
|
||||||
// Assuming both succeeded, save the size of the scripts for getChecksum() below
|
// Assuming both succeeded, save the size of the scripts for getChecksum() below
|
||||||
migration_file_size = dataMigrateSQL.length();
|
migration_file_size = dataMigrateSQL.length();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -12,8 +12,6 @@ import java.sql.SQLException;
|
|||||||
|
|
||||||
import org.dspace.storage.rdbms.DatabaseUtils;
|
import org.dspace.storage.rdbms.DatabaseUtils;
|
||||||
import org.dspace.storage.rdbms.migration.MigrationUtils;
|
import org.dspace.storage.rdbms.migration.MigrationUtils;
|
||||||
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
|
||||||
import org.dspace.xmlworkflow.service.XmlWorkflowService;
|
|
||||||
import org.flywaydb.core.api.migration.BaseJavaMigration;
|
import org.flywaydb.core.api.migration.BaseJavaMigration;
|
||||||
import org.flywaydb.core.api.migration.Context;
|
import org.flywaydb.core.api.migration.Context;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@@ -55,15 +53,12 @@ public class V5_0_2014_11_04__Enable_XMLWorkflow_Migration
|
|||||||
@Override
|
@Override
|
||||||
public void migrate(Context context)
|
public void migrate(Context context)
|
||||||
throws IOException, SQLException {
|
throws IOException, SQLException {
|
||||||
// Make sure XML Workflow is enabled, shouldn't even be needed since this class is only loaded if the service
|
// If your database was upgraded to DSpace 6 prior to enabling XML Workflow, we MUST skip this 5.x
|
||||||
// is enabled.
|
// migration, as it is incompatible
|
||||||
if (WorkflowServiceFactory.getInstance().getWorkflowService() instanceof XmlWorkflowService
|
// with a 6.x database. In that scenario the corresponding 6.x XML Workflow migration will create
|
||||||
// If your database was upgraded to DSpace 6 prior to enabling XML Workflow, we MUST skip this 5.x
|
// necessary tables.
|
||||||
// migration, as it is incompatible
|
if (DatabaseUtils.getCurrentFlywayDSpaceState(context.getConnection()) < 6) {
|
||||||
// with a 6.x database. In that scenario the corresponding 6.x XML Workflow migration will create
|
// Check if the XMLWorkflow table (cwf_workflowitem) already exists in this database
|
||||||
// necessary tables.
|
|
||||||
&& DatabaseUtils.getCurrentFlywayDSpaceState(context.getConnection()) < 6) {
|
|
||||||
// Now, check if the XMLWorkflow table (cwf_workflowitem) already exists in this database
|
|
||||||
// If XMLWorkflow Table does NOT exist in this database, then lets do the migration!
|
// If XMLWorkflow Table does NOT exist in this database, then lets do the migration!
|
||||||
// If XMLWorkflow Table ALREADY exists, then this migration is a noop, we assume you manually ran the sql
|
// If XMLWorkflow Table ALREADY exists, then this migration is a noop, we assume you manually ran the sql
|
||||||
// scripts
|
// scripts
|
||||||
|
@@ -10,8 +10,6 @@ package org.dspace.storage.rdbms.xmlworkflow;
|
|||||||
|
|
||||||
import org.dspace.storage.rdbms.DatabaseUtils;
|
import org.dspace.storage.rdbms.DatabaseUtils;
|
||||||
import org.dspace.storage.rdbms.migration.MigrationUtils;
|
import org.dspace.storage.rdbms.migration.MigrationUtils;
|
||||||
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
|
||||||
import org.dspace.xmlworkflow.service.XmlWorkflowService;
|
|
||||||
import org.flywaydb.core.api.migration.BaseJavaMigration;
|
import org.flywaydb.core.api.migration.BaseJavaMigration;
|
||||||
import org.flywaydb.core.api.migration.Context;
|
import org.flywaydb.core.api.migration.Context;
|
||||||
|
|
||||||
@@ -39,51 +37,47 @@ public class V6_0_2015_09_01__DS_2701_Enable_XMLWorkflow_Migration extends BaseJ
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void migrate(Context context) throws Exception {
|
public void migrate(Context context) throws Exception {
|
||||||
// Make sure XML Workflow is enabled, shouldn't even be needed since this class is only loaded if the service
|
// Check if the XMLWorkflow table (cwf_workflowitem) already exists in this database
|
||||||
// is enabled.
|
// If XMLWorkflow Table does NOT exist in this database, then lets do the migration!
|
||||||
if (WorkflowServiceFactory.getInstance().getWorkflowService() instanceof XmlWorkflowService) {
|
// If XMLWorkflow Table ALREADY exists, then this migration is a noop, we assume you manually ran the sql
|
||||||
// Now, check if the XMLWorkflow table (cwf_workflowitem) already exists in this database
|
// scripts
|
||||||
// If XMLWorkflow Table does NOT exist in this database, then lets do the migration!
|
if (!DatabaseUtils.tableExists(context.getConnection(), "cwf_workflowitem")) {
|
||||||
// If XMLWorkflow Table ALREADY exists, then this migration is a noop, we assume you manually ran the sql
|
String dbtype = context.getConnection().getMetaData().getDatabaseProductName();
|
||||||
// scripts
|
String dbFileLocation = null;
|
||||||
if (!DatabaseUtils.tableExists(context.getConnection(), "cwf_workflowitem")) {
|
if (dbtype.toLowerCase().contains("postgres")) {
|
||||||
String dbtype = context.getConnection().getMetaData().getDatabaseProductName();
|
dbFileLocation = "postgres";
|
||||||
String dbFileLocation = null;
|
} else if (dbtype.toLowerCase().contains("oracle")) {
|
||||||
if (dbtype.toLowerCase().contains("postgres")) {
|
dbFileLocation = "oracle";
|
||||||
dbFileLocation = "postgres";
|
} else if (dbtype.toLowerCase().contains("h2")) {
|
||||||
} else if (dbtype.toLowerCase().contains("oracle")) {
|
dbFileLocation = "h2";
|
||||||
dbFileLocation = "oracle";
|
|
||||||
} else if (dbtype.toLowerCase().contains("h2")) {
|
|
||||||
dbFileLocation = "h2";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Determine path of this migration class (as the SQL scripts
|
|
||||||
// we will run are based on this path under /src/main/resources)
|
|
||||||
String packagePath = V6_0_2015_09_01__DS_2701_Enable_XMLWorkflow_Migration.class.getPackage().getName()
|
|
||||||
.replace(".", "/");
|
|
||||||
|
|
||||||
// Get the contents of our DB Schema migration script, based on path & DB type
|
|
||||||
// (e.g. /src/main/resources/[path-to-this-class]/postgres/xml_workflow_migration.sql)
|
|
||||||
String dbMigrateSQL = MigrationUtils.getResourceAsString(packagePath + "/" + dbFileLocation +
|
|
||||||
"/v6.0__DS-2701_xml_workflow_migration.sql");
|
|
||||||
|
|
||||||
// Actually execute the Database schema migration SQL
|
|
||||||
// This will create the necessary tables for the XMLWorkflow feature
|
|
||||||
DatabaseUtils.executeSql(context.getConnection(), dbMigrateSQL);
|
|
||||||
|
|
||||||
// Get the contents of our data migration script, based on path & DB type
|
|
||||||
// (e.g. /src/main/resources/[path-to-this-class]/postgres/data_workflow_migration.sql)
|
|
||||||
String dataMigrateSQL = MigrationUtils.getResourceAsString(packagePath + "/" + dbFileLocation +
|
|
||||||
"/v6.0__DS-2701_data_workflow_migration.sql");
|
|
||||||
|
|
||||||
// Actually execute the Data migration SQL
|
|
||||||
// This will migrate all existing traditional workflows to the new XMLWorkflow system & tables
|
|
||||||
DatabaseUtils.executeSql(context.getConnection(), dataMigrateSQL);
|
|
||||||
|
|
||||||
// Assuming both succeeded, save the size of the scripts for getChecksum() below
|
|
||||||
migration_file_size = dbMigrateSQL.length() + dataMigrateSQL.length();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Determine path of this migration class (as the SQL scripts
|
||||||
|
// we will run are based on this path under /src/main/resources)
|
||||||
|
String packagePath = V6_0_2015_09_01__DS_2701_Enable_XMLWorkflow_Migration.class.getPackage().getName()
|
||||||
|
.replace(".", "/");
|
||||||
|
|
||||||
|
// Get the contents of our DB Schema migration script, based on path & DB type
|
||||||
|
// (e.g. /src/main/resources/[path-to-this-class]/postgres/xml_workflow_migration.sql)
|
||||||
|
String dbMigrateSQL = MigrationUtils.getResourceAsString(packagePath + "/" + dbFileLocation +
|
||||||
|
"/v6.0__DS-2701_xml_workflow_migration.sql");
|
||||||
|
|
||||||
|
// Actually execute the Database schema migration SQL
|
||||||
|
// This will create the necessary tables for the XMLWorkflow feature
|
||||||
|
DatabaseUtils.executeSql(context.getConnection(), dbMigrateSQL);
|
||||||
|
|
||||||
|
// Get the contents of our data migration script, based on path & DB type
|
||||||
|
// (e.g. /src/main/resources/[path-to-this-class]/postgres/data_workflow_migration.sql)
|
||||||
|
String dataMigrateSQL = MigrationUtils.getResourceAsString(packagePath + "/" + dbFileLocation +
|
||||||
|
"/v6.0__DS-2701_data_workflow_migration.sql");
|
||||||
|
|
||||||
|
// Actually execute the Data migration SQL
|
||||||
|
// This will migrate all existing traditional workflows to the new XMLWorkflow system & tables
|
||||||
|
DatabaseUtils.executeSql(context.getConnection(), dataMigrateSQL);
|
||||||
|
|
||||||
|
// Assuming both succeeded, save the size of the scripts for getChecksum() below
|
||||||
|
migration_file_size = dbMigrateSQL.length() + dataMigrateSQL.length();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -7,13 +7,128 @@
|
|||||||
*/
|
*/
|
||||||
package org.dspace.workflow;
|
package org.dspace.workflow;
|
||||||
|
|
||||||
|
import javax.persistence.Column;
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.FetchType;
|
||||||
|
import javax.persistence.GeneratedValue;
|
||||||
|
import javax.persistence.GenerationType;
|
||||||
|
import javax.persistence.Id;
|
||||||
|
import javax.persistence.JoinColumn;
|
||||||
|
import javax.persistence.ManyToOne;
|
||||||
|
import javax.persistence.OneToOne;
|
||||||
|
import javax.persistence.SequenceGenerator;
|
||||||
|
import javax.persistence.Table;
|
||||||
|
|
||||||
|
import org.dspace.content.Collection;
|
||||||
import org.dspace.content.InProgressSubmission;
|
import org.dspace.content.InProgressSubmission;
|
||||||
|
import org.dspace.content.Item;
|
||||||
|
import org.dspace.core.Context;
|
||||||
|
import org.dspace.eperson.EPerson;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface representing a workflowitem, each workflowItem implementation must implement this interface.
|
* Class representing an item going through the workflow process in DSpace
|
||||||
*
|
*
|
||||||
* @author kevinvandevelde at atmire.com
|
* @author Bram De Schouwer (bram.deschouwer at dot com)
|
||||||
|
* @author Kevin Van de Velde (kevin at atmire dot com)
|
||||||
|
* @author Ben Bosman (ben at atmire dot com)
|
||||||
|
* @author Mark Diggory (markd at atmire dot com)
|
||||||
*/
|
*/
|
||||||
public interface WorkflowItem extends InProgressSubmission {
|
@Entity
|
||||||
public int getState();
|
@Table(name = "cwf_workflowitem")
|
||||||
|
public class WorkflowItem implements InProgressSubmission {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@Column(name = "workflowitem_id")
|
||||||
|
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "cwf_workflowitem_seq")
|
||||||
|
@SequenceGenerator(name = "cwf_workflowitem_seq", sequenceName = "cwf_workflowitem_seq", allocationSize = 1)
|
||||||
|
private Integer id;
|
||||||
|
|
||||||
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
|
@JoinColumn(name = "collection_id")
|
||||||
|
private Collection collection;
|
||||||
|
|
||||||
|
@OneToOne(fetch = FetchType.LAZY)
|
||||||
|
@JoinColumn(name = "item_id", unique = true)
|
||||||
|
private Item item;
|
||||||
|
|
||||||
|
@Column(name = "multiple_titles")
|
||||||
|
private boolean multipleTitles = false;
|
||||||
|
|
||||||
|
@Column(name = "published_before")
|
||||||
|
private boolean publishedBefore = false;
|
||||||
|
|
||||||
|
@Column(name = "multiple_files")
|
||||||
|
private boolean multipleFiles = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Protected constructor, create object using:
|
||||||
|
* {@link WorkflowItemService#create(Context, Item, Collection)}
|
||||||
|
*/
|
||||||
|
protected WorkflowItem() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the internal ID of this workflow item
|
||||||
|
*
|
||||||
|
* @return the internal identifier
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Integer getID() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection getCollection() {
|
||||||
|
return this.collection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCollection(Collection collection) {
|
||||||
|
this.collection = collection;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Item getItem() {
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setItem(Item item) {
|
||||||
|
this.item = item;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EPerson getSubmitter() {
|
||||||
|
return item.getSubmitter();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasMultipleFiles() {
|
||||||
|
return multipleFiles;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setMultipleFiles(boolean b) {
|
||||||
|
this.multipleFiles = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasMultipleTitles() {
|
||||||
|
return this.multipleTitles;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setMultipleTitles(boolean b) {
|
||||||
|
this.multipleTitles = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPublishedBefore() {
|
||||||
|
return this.publishedBefore;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setPublishedBefore(boolean b) {
|
||||||
|
this.publishedBefore = b;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -26,9 +26,10 @@ import org.dspace.eperson.EPerson;
|
|||||||
*
|
*
|
||||||
* @author kevinvandevelde at atmire.com
|
* @author kevinvandevelde at atmire.com
|
||||||
*/
|
*/
|
||||||
public interface WorkflowItemService<T extends WorkflowItem> extends InProgressSubmissionService<T> {
|
public interface WorkflowItemService extends InProgressSubmissionService<WorkflowItem> {
|
||||||
|
|
||||||
public T create(Context context, Item item, Collection collection) throws SQLException, AuthorizeException;
|
public WorkflowItem create(Context context, Item item, Collection collection) throws SQLException,
|
||||||
|
AuthorizeException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a workflow item from the database.
|
* Get a workflow item from the database.
|
||||||
@@ -38,7 +39,7 @@ public interface WorkflowItemService<T extends WorkflowItem> extends InProgressS
|
|||||||
* @return the workflow item, or null if the ID is invalid.
|
* @return the workflow item, or null if the ID is invalid.
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
* @throws SQLException An exception that provides information on a database access error or other errors.
|
||||||
*/
|
*/
|
||||||
public T find(Context context, int id) throws SQLException;
|
public WorkflowItem find(Context context, int id) throws SQLException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* return all workflowitems
|
* return all workflowitems
|
||||||
@@ -47,7 +48,7 @@ public interface WorkflowItemService<T extends WorkflowItem> extends InProgressS
|
|||||||
* @return List of all workflowItems in system
|
* @return List of all workflowItems in system
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
* @throws SQLException An exception that provides information on a database access error or other errors.
|
||||||
*/
|
*/
|
||||||
public List<T> findAll(Context context) throws SQLException;
|
public List<WorkflowItem> findAll(Context context) throws SQLException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all workflow items for a particular collection.
|
* Get all workflow items for a particular collection.
|
||||||
@@ -57,7 +58,7 @@ public interface WorkflowItemService<T extends WorkflowItem> extends InProgressS
|
|||||||
* @return array of the corresponding workflow items
|
* @return array of the corresponding workflow items
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
* @throws SQLException An exception that provides information on a database access error or other errors.
|
||||||
*/
|
*/
|
||||||
public List<T> findByCollection(Context context, Collection collection) throws SQLException;
|
public List<WorkflowItem> findByCollection(Context context, Collection collection) throws SQLException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check to see if a particular item is currently under Workflow.
|
* Check to see if a particular item is currently under Workflow.
|
||||||
@@ -68,7 +69,7 @@ public interface WorkflowItemService<T extends WorkflowItem> extends InProgressS
|
|||||||
* @return workflow item corresponding to the item, or null
|
* @return workflow item corresponding to the item, or null
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
* @throws SQLException An exception that provides information on a database access error or other errors.
|
||||||
*/
|
*/
|
||||||
public T findByItem(Context context, Item item) throws SQLException;
|
public WorkflowItem findByItem(Context context, Item item) throws SQLException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all workflow items that were original submissions by a particular
|
* Get all workflow items that were original submissions by a particular
|
||||||
@@ -79,7 +80,7 @@ public interface WorkflowItemService<T extends WorkflowItem> extends InProgressS
|
|||||||
* @return the corresponding workflow items
|
* @return the corresponding workflow items
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
* @throws SQLException An exception that provides information on a database access error or other errors.
|
||||||
*/
|
*/
|
||||||
public List<T> findBySubmitter(Context context, EPerson ep) throws SQLException;
|
public List<WorkflowItem> findBySubmitter(Context context, EPerson ep) throws SQLException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete all workflow items present in the specified collection.
|
* Delete all workflow items present in the specified collection.
|
||||||
@@ -89,10 +90,10 @@ public interface WorkflowItemService<T extends WorkflowItem> extends InProgressS
|
|||||||
* @throws IOException A general class of exceptions produced by failed or interrupted I/O operations.
|
* @throws IOException A general class of exceptions produced by failed or interrupted I/O operations.
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
* @throws SQLException An exception that provides information on a database access error or other errors.
|
||||||
* @throws AuthorizeException Exception indicating the current user of the context does not have permission
|
* @throws AuthorizeException Exception indicating the current user of the context does not have permission
|
||||||
* to perform a particular action.
|
* to perform a particular action.
|
||||||
*/
|
*/
|
||||||
public void deleteByCollection(Context context, Collection collection)
|
public void deleteByCollection(Context context, Collection collection)
|
||||||
throws SQLException, IOException, AuthorizeException;
|
throws SQLException, IOException, AuthorizeException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete the specified workflow item.
|
* Delete the specified workflow item.
|
||||||
@@ -104,6 +105,79 @@ public interface WorkflowItemService<T extends WorkflowItem> extends InProgressS
|
|||||||
* @throws AuthorizeException Exception indicating the current user of the context does not have permission
|
* @throws AuthorizeException Exception indicating the current user of the context does not have permission
|
||||||
* to perform a particular action.
|
* to perform a particular action.
|
||||||
*/
|
*/
|
||||||
public void delete(Context context, T workflowItem) throws SQLException, AuthorizeException, IOException;
|
public void delete(Context context, WorkflowItem workflowItem)
|
||||||
|
throws SQLException, AuthorizeException, IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return all workflowitems for a certain page
|
||||||
|
*
|
||||||
|
* @param context The relevant DSpace Context.
|
||||||
|
* @param page paging: page number
|
||||||
|
* @param pagesize paging: items per page
|
||||||
|
* @return WorkflowItem list of all the workflow items in system
|
||||||
|
* @throws SQLException An exception that provides information on a database access error or other errors.
|
||||||
|
*/
|
||||||
|
public List<WorkflowItem> findAll(Context context, Integer page, Integer pagesize) throws SQLException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return all workflowitems for a certain page with a certain collection
|
||||||
|
*
|
||||||
|
* @param context The relevant DSpace Context.
|
||||||
|
* @param page paging: page number
|
||||||
|
* @param pagesize paging: items per page
|
||||||
|
* @param collection restrict to this collection
|
||||||
|
* @return WorkflowItem list of all the workflow items in system
|
||||||
|
* @throws SQLException An exception that provides information on a database access error or other errors.
|
||||||
|
*/
|
||||||
|
public List<WorkflowItem> findAllInCollection(Context context, Integer page, Integer pagesize,
|
||||||
|
Collection collection) throws SQLException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return how many workflow items appear in the database
|
||||||
|
*
|
||||||
|
* @param context The relevant DSpace Context.
|
||||||
|
* @return the number of workflow items
|
||||||
|
* @throws SQLException An exception that provides information on a database access error or other errors.
|
||||||
|
*/
|
||||||
|
public int countAll(Context context) throws SQLException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return how many workflow items that appear in the collection
|
||||||
|
*
|
||||||
|
* @param context The relevant DSpace Context.
|
||||||
|
* @param collection restrict to this collection
|
||||||
|
* @return the number of workflow items
|
||||||
|
* @throws SQLException An exception that provides information on a database access error or other errors.
|
||||||
|
*/
|
||||||
|
public int countAllInCollection(Context context, Collection collection) throws SQLException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return all the workflow items from a specific submitter respecting the pagination parameters
|
||||||
|
*
|
||||||
|
* @param context
|
||||||
|
* The relevant DSpace Context.
|
||||||
|
* @param ep
|
||||||
|
* the eperson that has submitted the item
|
||||||
|
* @param pageNumber
|
||||||
|
* paging: page number
|
||||||
|
* @param pageSize
|
||||||
|
* paging: items per page
|
||||||
|
* @return
|
||||||
|
* @throws SQLException
|
||||||
|
*/
|
||||||
|
public List<WorkflowItem> findBySubmitter(Context context, EPerson ep, Integer pageNumber, Integer pageSize)
|
||||||
|
throws SQLException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Count the number of workflow items from a specific submitter
|
||||||
|
*
|
||||||
|
* @param context
|
||||||
|
* The relevant DSpace Context.
|
||||||
|
* @param ep
|
||||||
|
* the eperson that has submitted the item
|
||||||
|
* @return
|
||||||
|
* @throws SQLException
|
||||||
|
*/
|
||||||
|
public int countBySubmitter(Context context, EPerson ep) throws SQLException;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -5,7 +5,7 @@
|
|||||||
*
|
*
|
||||||
* http://www.dspace.org/license/
|
* http://www.dspace.org/license/
|
||||||
*/
|
*/
|
||||||
package org.dspace.xmlworkflow.storedcomponents;
|
package org.dspace.workflow;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
@@ -21,24 +21,24 @@ import org.dspace.core.Context;
|
|||||||
import org.dspace.core.LogManager;
|
import org.dspace.core.LogManager;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
import org.dspace.xmlworkflow.service.WorkflowRequirementsService;
|
import org.dspace.xmlworkflow.service.WorkflowRequirementsService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.dao.XmlWorkflowItemDAO;
|
import org.dspace.xmlworkflow.storedcomponents.WorkflowItemRole;
|
||||||
|
import org.dspace.xmlworkflow.storedcomponents.dao.WorkflowItemDAO;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.WorkflowItemRoleService;
|
import org.dspace.xmlworkflow.storedcomponents.service.WorkflowItemRoleService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.XmlWorkflowItemService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service implementation for the XmlWorkflowItem object.
|
* Service implementation for the WorkflowItem object.
|
||||||
* This class is responsible for all business logic calls for the XmlWorkflowItem object and is autowired by spring.
|
* This class is responsible for all business logic calls for the WorkflowItem object and is autowired by spring.
|
||||||
* This class should never be accessed directly.
|
* This class should never be accessed directly.
|
||||||
*
|
*
|
||||||
* @author kevinvandevelde at atmire.com
|
* @author kevinvandevelde at atmire.com
|
||||||
*/
|
*/
|
||||||
public class XmlWorkflowItemServiceImpl implements XmlWorkflowItemService {
|
public class WorkflowItemServiceImpl implements WorkflowItemService {
|
||||||
|
|
||||||
@Autowired(required = true)
|
@Autowired(required = true)
|
||||||
protected XmlWorkflowItemDAO xmlWorkflowItemDAO;
|
protected WorkflowItemDAO workflowItemDAO;
|
||||||
|
|
||||||
|
|
||||||
@Autowired(required = true)
|
@Autowired(required = true)
|
||||||
@@ -55,25 +55,25 @@ public class XmlWorkflowItemServiceImpl implements XmlWorkflowItemService {
|
|||||||
/*
|
/*
|
||||||
* The current step in the workflow system in which this workflow item is present
|
* The current step in the workflow system in which this workflow item is present
|
||||||
*/
|
*/
|
||||||
private Logger log = org.apache.logging.log4j.LogManager.getLogger(XmlWorkflowItemServiceImpl.class);
|
private Logger log = org.apache.logging.log4j.LogManager.getLogger(WorkflowItemServiceImpl.class);
|
||||||
|
|
||||||
|
|
||||||
protected XmlWorkflowItemServiceImpl() {
|
protected WorkflowItemServiceImpl() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public XmlWorkflowItem create(Context context, Item item, Collection collection)
|
public WorkflowItem create(Context context, Item item, Collection collection)
|
||||||
throws SQLException, AuthorizeException {
|
throws SQLException, AuthorizeException {
|
||||||
XmlWorkflowItem xmlWorkflowItem = xmlWorkflowItemDAO.create(context, new XmlWorkflowItem());
|
WorkflowItem workflowItem = workflowItemDAO.create(context, new WorkflowItem());
|
||||||
xmlWorkflowItem.setItem(item);
|
workflowItem.setItem(item);
|
||||||
xmlWorkflowItem.setCollection(collection);
|
workflowItem.setCollection(collection);
|
||||||
return xmlWorkflowItem;
|
return workflowItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public XmlWorkflowItem find(Context context, int id) throws SQLException {
|
public WorkflowItem find(Context context, int id) throws SQLException {
|
||||||
XmlWorkflowItem workflowItem = xmlWorkflowItemDAO.findByID(context, XmlWorkflowItem.class, id);
|
WorkflowItem workflowItem = workflowItemDAO.findByID(context, WorkflowItem.class, id);
|
||||||
|
|
||||||
if (workflowItem == null) {
|
if (workflowItem == null) {
|
||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
@@ -90,69 +90,69 @@ public class XmlWorkflowItemServiceImpl implements XmlWorkflowItemService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<XmlWorkflowItem> findAll(Context context) throws SQLException {
|
public List<WorkflowItem> findAll(Context context) throws SQLException {
|
||||||
return xmlWorkflowItemDAO.findAll(context, XmlWorkflowItem.class);
|
return workflowItemDAO.findAll(context, WorkflowItem.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<XmlWorkflowItem> findAll(Context context, Integer page, Integer pagesize) throws SQLException {
|
public List<WorkflowItem> findAll(Context context, Integer page, Integer pagesize) throws SQLException {
|
||||||
return findAllInCollection(context, page, pagesize, null);
|
return findAllInCollection(context, page, pagesize, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<XmlWorkflowItem> findAllInCollection(Context context, Integer page, Integer pagesize,
|
public List<WorkflowItem> findAllInCollection(Context context, Integer page, Integer pagesize,
|
||||||
Collection collection) throws SQLException {
|
Collection collection) throws SQLException {
|
||||||
Integer offset = null;
|
Integer offset = null;
|
||||||
if (page != null && pagesize != null) {
|
if (page != null && pagesize != null) {
|
||||||
offset = page * pagesize;
|
offset = page * pagesize;
|
||||||
}
|
}
|
||||||
return xmlWorkflowItemDAO.findAllInCollection(context, offset, pagesize, collection);
|
return workflowItemDAO.findAllInCollection(context, offset, pagesize, collection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int countAll(Context context) throws SQLException {
|
public int countAll(Context context) throws SQLException {
|
||||||
return xmlWorkflowItemDAO.countAll(context);
|
return workflowItemDAO.countAll(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int countAllInCollection(Context context, Collection collection) throws SQLException {
|
public int countAllInCollection(Context context, Collection collection) throws SQLException {
|
||||||
return xmlWorkflowItemDAO.countAllInCollection(context, collection);
|
return workflowItemDAO.countAllInCollection(context, collection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<XmlWorkflowItem> findBySubmitter(Context context, EPerson ep) throws SQLException {
|
public List<WorkflowItem> findBySubmitter(Context context, EPerson ep) throws SQLException {
|
||||||
return xmlWorkflowItemDAO.findBySubmitter(context, ep);
|
return workflowItemDAO.findBySubmitter(context, ep);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<XmlWorkflowItem> findBySubmitter(Context context, EPerson ep, Integer pageNumber, Integer pageSize)
|
public List<WorkflowItem> findBySubmitter(Context context, EPerson ep, Integer pageNumber, Integer pageSize)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
Integer offset = null;
|
Integer offset = null;
|
||||||
if (pageNumber != null && pageSize != null) {
|
if (pageNumber != null && pageSize != null) {
|
||||||
offset = pageNumber * pageSize;
|
offset = pageNumber * pageSize;
|
||||||
}
|
}
|
||||||
return xmlWorkflowItemDAO.findBySubmitter(context, ep, pageNumber, pageSize);
|
return workflowItemDAO.findBySubmitter(context, ep, pageNumber, pageSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int countBySubmitter(Context context, EPerson ep) throws SQLException {
|
public int countBySubmitter(Context context, EPerson ep) throws SQLException {
|
||||||
return xmlWorkflowItemDAO.countBySubmitter(context, ep);
|
return workflowItemDAO.countBySubmitter(context, ep);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteByCollection(Context context, Collection collection)
|
public void deleteByCollection(Context context, Collection collection)
|
||||||
throws SQLException, IOException, AuthorizeException {
|
throws SQLException, IOException, AuthorizeException {
|
||||||
List<XmlWorkflowItem> xmlWorkflowItems = findByCollection(context, collection);
|
List<WorkflowItem> workflowItems = findByCollection(context, collection);
|
||||||
Iterator<XmlWorkflowItem> iterator = xmlWorkflowItems.iterator();
|
Iterator<WorkflowItem> iterator = workflowItems.iterator();
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
XmlWorkflowItem workflowItem = iterator.next();
|
WorkflowItem workflowItem = iterator.next();
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
delete(context, workflowItem);
|
delete(context, workflowItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void delete(Context context, XmlWorkflowItem workflowItem)
|
public void delete(Context context, WorkflowItem workflowItem)
|
||||||
throws SQLException, AuthorizeException, IOException {
|
throws SQLException, AuthorizeException, IOException {
|
||||||
Item item = workflowItem.getItem();
|
Item item = workflowItem.getItem();
|
||||||
// Need to delete the workspaceitem row first since it refers
|
// Need to delete the workspaceitem row first since it refers
|
||||||
@@ -164,17 +164,17 @@ public class XmlWorkflowItemServiceImpl implements XmlWorkflowItemService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<XmlWorkflowItem> findByCollection(Context context, Collection collection) throws SQLException {
|
public List<WorkflowItem> findByCollection(Context context, Collection collection) throws SQLException {
|
||||||
return xmlWorkflowItemDAO.findByCollection(context, collection);
|
return workflowItemDAO.findByCollection(context, collection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public XmlWorkflowItem findByItem(Context context, Item item) throws SQLException {
|
public WorkflowItem findByItem(Context context, Item item) throws SQLException {
|
||||||
return xmlWorkflowItemDAO.findByItem(context, item);
|
return workflowItemDAO.findByItem(context, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(Context context, XmlWorkflowItem workflowItem) throws SQLException, AuthorizeException {
|
public void update(Context context, WorkflowItem workflowItem) throws SQLException, AuthorizeException {
|
||||||
// FIXME check auth
|
// FIXME check auth
|
||||||
log.info(LogManager.getHeader(context, "update_workflow_item",
|
log.info(LogManager.getHeader(context, "update_workflow_item",
|
||||||
"workflowitem_id=" + workflowItem.getID()));
|
"workflowitem_id=" + workflowItem.getID()));
|
||||||
@@ -182,11 +182,11 @@ public class XmlWorkflowItemServiceImpl implements XmlWorkflowItemService {
|
|||||||
// Update the item
|
// Update the item
|
||||||
itemService.update(context, workflowItem.getItem());
|
itemService.update(context, workflowItem.getItem());
|
||||||
|
|
||||||
xmlWorkflowItemDAO.save(context, workflowItem);
|
workflowItemDAO.save(context, workflowItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteWrapper(Context context, XmlWorkflowItem workflowItem) throws SQLException, AuthorizeException {
|
public void deleteWrapper(Context context, WorkflowItem workflowItem) throws SQLException, AuthorizeException {
|
||||||
List<WorkflowItemRole> roles = workflowItemRoleService.findByWorkflowItem(context, workflowItem);
|
List<WorkflowItemRole> roles = workflowItemRoleService.findByWorkflowItem(context, workflowItem);
|
||||||
Iterator<WorkflowItemRole> workflowItemRoleIterator = roles.iterator();
|
Iterator<WorkflowItemRole> workflowItemRoleIterator = roles.iterator();
|
||||||
while (workflowItemRoleIterator.hasNext()) {
|
while (workflowItemRoleIterator.hasNext()) {
|
||||||
@@ -200,12 +200,12 @@ public class XmlWorkflowItemServiceImpl implements XmlWorkflowItemService {
|
|||||||
claimedTaskService.deleteByWorkflowItem(context, workflowItem);
|
claimedTaskService.deleteByWorkflowItem(context, workflowItem);
|
||||||
|
|
||||||
// FIXME - auth?
|
// FIXME - auth?
|
||||||
xmlWorkflowItemDAO.delete(context, workflowItem);
|
workflowItemDAO.delete(context, workflowItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void move(Context context, XmlWorkflowItem inProgressSubmission, Collection fromCollection,
|
public void move(Context context, WorkflowItem inProgressSubmission, Collection fromCollection,
|
||||||
Collection toCollection) {
|
Collection toCollection) {
|
||||||
// TODO not implemented yet
|
// TODO not implemented yet
|
||||||
}
|
}
|
@@ -10,27 +10,37 @@ package org.dspace.workflow;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import javax.mail.MessagingException;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import org.dspace.authorize.AuthorizeException;
|
import org.dspace.authorize.AuthorizeException;
|
||||||
import org.dspace.content.Collection;
|
import org.dspace.content.Collection;
|
||||||
|
import org.dspace.content.Item;
|
||||||
import org.dspace.content.WorkspaceItem;
|
import org.dspace.content.WorkspaceItem;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
import org.dspace.eperson.Group;
|
import org.dspace.eperson.Group;
|
||||||
|
import org.dspace.xmlworkflow.RoleMembers;
|
||||||
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
||||||
|
import org.dspace.xmlworkflow.state.Step;
|
||||||
|
import org.dspace.xmlworkflow.state.Workflow;
|
||||||
|
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
||||||
|
import org.dspace.xmlworkflow.state.actions.WorkflowActionConfig;
|
||||||
|
import org.dspace.xmlworkflow.storedcomponents.ClaimedTask;
|
||||||
|
import org.dspace.xmlworkflow.storedcomponents.PoolTask;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service interface class for the WorkflowService framework.
|
* When an item is submitted and is somewhere in a workflow, it has a row in the
|
||||||
* All WorkflowServices service classes should implement this class since it offers some basic methods which all
|
* cwf_workflowitem table pointing to it.
|
||||||
* Workflows
|
|
||||||
* are required to have.
|
|
||||||
*
|
*
|
||||||
* @param <T> some implementation of workflow item.
|
* Once the item has completed the workflow it will be archived
|
||||||
* @author kevinvandevelde at atmire.com
|
*
|
||||||
|
* @author Bram De Schouwer (bram.deschouwer at dot com)
|
||||||
|
* @author Kevin Van de Velde (kevin at atmire dot com)
|
||||||
|
* @author Ben Bosman (ben at atmire dot com)
|
||||||
|
* @author Mark Diggory (markd at atmire dot com)
|
||||||
*/
|
*/
|
||||||
public interface WorkflowService<T extends WorkflowItem> {
|
public interface WorkflowService {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* startWorkflow() begins a workflow - in a single transaction do away with
|
* startWorkflow() begins a workflow - in a single transaction do away with
|
||||||
* the PersonalWorkspace entry and turn it into a WorkflowItem.
|
* the PersonalWorkspace entry and turn it into a WorkflowItem.
|
||||||
@@ -40,12 +50,12 @@ public interface WorkflowService<T extends WorkflowItem> {
|
|||||||
* @return The resulting workflow item
|
* @return The resulting workflow item
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
* @throws SQLException An exception that provides information on a database access error or other errors.
|
||||||
* @throws AuthorizeException Exception indicating the current user of the context does not have permission
|
* @throws AuthorizeException Exception indicating the current user of the context does not have permission
|
||||||
* to perform a particular action.
|
* to perform a particular action.
|
||||||
* @throws IOException A general class of exceptions produced by failed or interrupted I/O operations.
|
* @throws IOException A general class of exceptions produced by failed or interrupted I/O operations.
|
||||||
* @throws WorkflowException if workflow error
|
* @throws WorkflowException if workflow error
|
||||||
*/
|
*/
|
||||||
public T start(Context context, WorkspaceItem wsi)
|
public WorkflowItem start(Context context, WorkspaceItem wsi)
|
||||||
throws SQLException, AuthorizeException, IOException, WorkflowException;
|
throws SQLException, AuthorizeException, IOException, WorkflowException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* startWithoutNotify() starts the workflow normally, but disables
|
* startWithoutNotify() starts the workflow normally, but disables
|
||||||
@@ -57,12 +67,12 @@ public interface WorkflowService<T extends WorkflowItem> {
|
|||||||
* @return the resulting workflow item.
|
* @return the resulting workflow item.
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
* @throws SQLException An exception that provides information on a database access error or other errors.
|
||||||
* @throws AuthorizeException Exception indicating the current user of the context does not have permission
|
* @throws AuthorizeException Exception indicating the current user of the context does not have permission
|
||||||
* to perform a particular action.
|
* to perform a particular action.
|
||||||
* @throws IOException A general class of exceptions produced by failed or interrupted I/O operations.
|
* @throws IOException A general class of exceptions produced by failed or interrupted I/O operations.
|
||||||
* @throws WorkflowException if workflow error
|
* @throws WorkflowException if workflow error
|
||||||
*/
|
*/
|
||||||
public T startWithoutNotify(Context c, WorkspaceItem wsi)
|
public WorkflowItem startWithoutNotify(Context c, WorkspaceItem wsi)
|
||||||
throws SQLException, AuthorizeException, IOException, WorkflowException;
|
throws SQLException, AuthorizeException, IOException, WorkflowException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* abort() aborts a workflow, completely deleting it (administrator do this)
|
* abort() aborts a workflow, completely deleting it (administrator do this)
|
||||||
@@ -75,10 +85,11 @@ public interface WorkflowService<T extends WorkflowItem> {
|
|||||||
* @return workspace item returned to workspace
|
* @return workspace item returned to workspace
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
* @throws SQLException An exception that provides information on a database access error or other errors.
|
||||||
* @throws AuthorizeException Exception indicating the current user of the context does not have permission
|
* @throws AuthorizeException Exception indicating the current user of the context does not have permission
|
||||||
* to perform a particular action.
|
* to perform a particular action.
|
||||||
* @throws IOException A general class of exceptions produced by failed or interrupted I/O operations.
|
* @throws IOException A general class of exceptions produced by failed or interrupted I/O operations.
|
||||||
*/
|
*/
|
||||||
public WorkspaceItem abort(Context c, T wi, EPerson e) throws SQLException, AuthorizeException, IOException;
|
public WorkspaceItem abort(Context c, WorkflowItem wi, EPerson e)
|
||||||
|
throws SQLException, AuthorizeException, IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes workflow task item in correct order.
|
* Deletes workflow task item in correct order.
|
||||||
@@ -88,39 +99,76 @@ public interface WorkflowService<T extends WorkflowItem> {
|
|||||||
* @param e Admin that deletes this workflow task and item (for logging
|
* @param e Admin that deletes this workflow task and item (for logging
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
* @throws SQLException An exception that provides information on a database access error or other errors.
|
||||||
* @throws AuthorizeException Exception indicating the current user of the context does not have permission
|
* @throws AuthorizeException Exception indicating the current user of the context does not have permission
|
||||||
* to perform a particular action.
|
* to perform a particular action.
|
||||||
* @throws IOException A general class of exceptions produced by failed or interrupted I/O operations.
|
* @throws IOException A general class of exceptions produced by failed or interrupted I/O operations.
|
||||||
*/
|
*/
|
||||||
public void deleteWorkflowByWorkflowItem(Context c, T wi, EPerson e)
|
public void deleteWorkflowByWorkflowItem(Context c, WorkflowItem wi, EPerson e)
|
||||||
throws SQLException, AuthorizeException, IOException;
|
throws SQLException, AuthorizeException, IOException;
|
||||||
|
|
||||||
public WorkspaceItem sendWorkflowItemBackSubmission(Context c, T workflowItem, EPerson e, String provenance,
|
public WorkspaceItem sendWorkflowItemBackSubmission(Context c, WorkflowItem workflowItem, EPerson e,
|
||||||
|
String provenance,
|
||||||
String rejection_message)
|
String rejection_message)
|
||||||
throws SQLException, AuthorizeException, IOException;
|
throws SQLException, AuthorizeException, IOException;
|
||||||
|
|
||||||
public String getMyDSpaceLink();
|
public String getMyDSpaceLink();
|
||||||
|
|
||||||
public void deleteCollection(Context context, Collection collection)
|
public void deleteCollection(Context context, Collection collection)
|
||||||
throws SQLException, IOException, AuthorizeException;
|
throws SQLException, IOException, AuthorizeException;
|
||||||
|
|
||||||
public List<String> getEPersonDeleteConstraints(Context context, EPerson ePerson) throws SQLException;
|
public List<String> getEPersonDeleteConstraints(Context context, EPerson ePerson) throws SQLException;
|
||||||
|
|
||||||
public Group getWorkflowRoleGroup(Context context, Collection collection, String roleName, Group roleGroup)
|
public Group getWorkflowRoleGroup(Context context, Collection collection, String roleName, Group roleGroup)
|
||||||
throws SQLException, IOException, WorkflowConfigurationException, AuthorizeException, WorkflowException;
|
throws SQLException, IOException, WorkflowConfigurationException, AuthorizeException, WorkflowException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method will create the workflowRoleGroup for a collection and the given rolename
|
* This method will create the workflowRoleGroup for a collection and the given rolename
|
||||||
* @param context The relevant DSpace context
|
* @param context The relevant DSpace context
|
||||||
* @param collection The collection
|
* @param collection The collection
|
||||||
* @param roleName The rolename
|
* @param roleName The rolename
|
||||||
* @return The created Group
|
* @return The created Group
|
||||||
* @throws AuthorizeException If something goes wrong
|
* @throws AuthorizeException If something goes wrong
|
||||||
* @throws SQLException If something goes wrong
|
* @throws SQLException If something goes wrong
|
||||||
* @throws IOException If something goes wrong
|
* @throws IOException If something goes wrong
|
||||||
* @throws WorkflowConfigurationException If something goes wrong
|
* @throws WorkflowConfigurationException If something goes wrong
|
||||||
*/
|
*/
|
||||||
public Group createWorkflowRoleGroup(Context context, Collection collection, String roleName)
|
public Group createWorkflowRoleGroup(Context context, Collection collection, String roleName)
|
||||||
throws AuthorizeException, SQLException, IOException, WorkflowConfigurationException;
|
throws AuthorizeException, SQLException, IOException, WorkflowConfigurationException;
|
||||||
|
|
||||||
public List<String> getFlywayMigrationLocations();
|
public List<String> getFlywayMigrationLocations();
|
||||||
|
|
||||||
|
public void alertUsersOnTaskActivation(Context c, WorkflowItem wfi, String emailTemplate, List<EPerson> epa,
|
||||||
|
String... arguments) throws IOException, SQLException, MessagingException;
|
||||||
|
|
||||||
|
public WorkflowActionConfig doState(Context c, EPerson user, HttpServletRequest request, int workflowItemId,
|
||||||
|
Workflow workflow, WorkflowActionConfig currentActionConfig)
|
||||||
|
throws SQLException, AuthorizeException, IOException, MessagingException, WorkflowException;
|
||||||
|
|
||||||
|
public WorkflowActionConfig processOutcome(Context c, EPerson user, Workflow workflow, Step currentStep,
|
||||||
|
WorkflowActionConfig currentActionConfig, ActionResult currentOutcome,
|
||||||
|
WorkflowItem wfi, boolean enteredNewStep)
|
||||||
|
throws IOException, AuthorizeException, SQLException, WorkflowException;
|
||||||
|
|
||||||
|
public void deleteAllTasks(Context context, WorkflowItem wi) throws SQLException, AuthorizeException;
|
||||||
|
|
||||||
|
public void deleteAllPooledTasks(Context c, WorkflowItem wi) throws SQLException, AuthorizeException;
|
||||||
|
|
||||||
|
public void deletePooledTask(Context context, WorkflowItem wi, PoolTask task)
|
||||||
|
throws SQLException, AuthorizeException;
|
||||||
|
|
||||||
|
public void deleteClaimedTask(Context c, WorkflowItem wi, ClaimedTask task)
|
||||||
|
throws SQLException, AuthorizeException;
|
||||||
|
|
||||||
|
public void createPoolTasks(Context context, WorkflowItem wi, RoleMembers assignees, Step step,
|
||||||
|
WorkflowActionConfig action)
|
||||||
|
throws SQLException, AuthorizeException;
|
||||||
|
|
||||||
|
public void createOwnedTask(Context context, WorkflowItem wi, Step step, WorkflowActionConfig action, EPerson e)
|
||||||
|
throws SQLException, AuthorizeException;
|
||||||
|
|
||||||
|
public void grantUserAllItemPolicies(Context context, Item item, EPerson epa, String actionType)
|
||||||
|
throws AuthorizeException, SQLException;
|
||||||
|
|
||||||
|
public void removeUserItemPolicies(Context context, Item item, EPerson e) throws SQLException, AuthorizeException;
|
||||||
|
|
||||||
|
public String getEPersonName(EPerson ePerson);
|
||||||
}
|
}
|
||||||
|
@@ -10,6 +10,13 @@ package org.dspace.workflow.factory;
|
|||||||
import org.dspace.services.factory.DSpaceServicesFactory;
|
import org.dspace.services.factory.DSpaceServicesFactory;
|
||||||
import org.dspace.workflow.WorkflowItemService;
|
import org.dspace.workflow.WorkflowItemService;
|
||||||
import org.dspace.workflow.WorkflowService;
|
import org.dspace.workflow.WorkflowService;
|
||||||
|
import org.dspace.xmlworkflow.factory.XmlWorkflowFactory;
|
||||||
|
import org.dspace.xmlworkflow.service.WorkflowRequirementsService;
|
||||||
|
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
||||||
|
import org.dspace.xmlworkflow.storedcomponents.service.CollectionRoleService;
|
||||||
|
import org.dspace.xmlworkflow.storedcomponents.service.InProgressUserService;
|
||||||
|
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
||||||
|
import org.dspace.xmlworkflow.storedcomponents.service.WorkflowItemRoleService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract factory to get services for the workflow package, use WorkflowServiceFactory.getInstance() to retrieve an
|
* Abstract factory to get services for the workflow package, use WorkflowServiceFactory.getInstance() to retrieve an
|
||||||
@@ -19,8 +26,22 @@ import org.dspace.workflow.WorkflowService;
|
|||||||
*/
|
*/
|
||||||
public abstract class WorkflowServiceFactory {
|
public abstract class WorkflowServiceFactory {
|
||||||
|
|
||||||
|
public abstract XmlWorkflowFactory getWorkflowFactory();
|
||||||
|
|
||||||
|
public abstract WorkflowRequirementsService getWorkflowRequirementsService();
|
||||||
|
|
||||||
public abstract WorkflowService getWorkflowService();
|
public abstract WorkflowService getWorkflowService();
|
||||||
|
|
||||||
|
public abstract ClaimedTaskService getClaimedTaskService();
|
||||||
|
|
||||||
|
public abstract CollectionRoleService getCollectionRoleService();
|
||||||
|
|
||||||
|
public abstract InProgressUserService getInProgressUserService();
|
||||||
|
|
||||||
|
public abstract PoolTaskService getPoolTaskService();
|
||||||
|
|
||||||
|
public abstract WorkflowItemRoleService getWorkflowItemRoleService();
|
||||||
|
|
||||||
public abstract WorkflowItemService getWorkflowItemService();
|
public abstract WorkflowItemService getWorkflowItemService();
|
||||||
|
|
||||||
public static WorkflowServiceFactory getInstance() {
|
public static WorkflowServiceFactory getInstance() {
|
||||||
|
@@ -5,18 +5,17 @@
|
|||||||
*
|
*
|
||||||
* http://www.dspace.org/license/
|
* http://www.dspace.org/license/
|
||||||
*/
|
*/
|
||||||
package org.dspace.xmlworkflow.factory;
|
package org.dspace.workflow.factory;
|
||||||
|
|
||||||
import org.dspace.workflow.WorkflowItemService;
|
import org.dspace.workflow.WorkflowItemService;
|
||||||
import org.dspace.workflow.WorkflowService;
|
import org.dspace.workflow.WorkflowService;
|
||||||
|
import org.dspace.xmlworkflow.factory.XmlWorkflowFactory;
|
||||||
import org.dspace.xmlworkflow.service.WorkflowRequirementsService;
|
import org.dspace.xmlworkflow.service.WorkflowRequirementsService;
|
||||||
import org.dspace.xmlworkflow.service.XmlWorkflowService;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.CollectionRoleService;
|
import org.dspace.xmlworkflow.storedcomponents.service.CollectionRoleService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.InProgressUserService;
|
import org.dspace.xmlworkflow.storedcomponents.service.InProgressUserService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.WorkflowItemRoleService;
|
import org.dspace.xmlworkflow.storedcomponents.service.WorkflowItemRoleService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.XmlWorkflowItemService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -25,14 +24,14 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
*
|
*
|
||||||
* @author kevinvandevelde at atmire.com
|
* @author kevinvandevelde at atmire.com
|
||||||
*/
|
*/
|
||||||
public class XmlWorkflowServiceFactoryImpl extends XmlWorkflowServiceFactory {
|
public class WorkflowServiceFactoryImpl extends WorkflowServiceFactory {
|
||||||
|
|
||||||
@Autowired(required = true)
|
@Autowired(required = true)
|
||||||
private XmlWorkflowFactory workflowFactory;
|
private XmlWorkflowFactory workflowFactory;
|
||||||
@Autowired(required = true)
|
@Autowired(required = true)
|
||||||
private WorkflowRequirementsService workflowRequirementsService;
|
private WorkflowRequirementsService workflowRequirementsService;
|
||||||
@Autowired(required = true)
|
@Autowired(required = true)
|
||||||
private XmlWorkflowService xmlWorkflowService;
|
private WorkflowService workflowService;
|
||||||
@Autowired(required = true)
|
@Autowired(required = true)
|
||||||
private ClaimedTaskService claimedTaskService;
|
private ClaimedTaskService claimedTaskService;
|
||||||
@Autowired(required = true)
|
@Autowired(required = true)
|
||||||
@@ -44,7 +43,7 @@ public class XmlWorkflowServiceFactoryImpl extends XmlWorkflowServiceFactory {
|
|||||||
@Autowired(required = true)
|
@Autowired(required = true)
|
||||||
private WorkflowItemRoleService workflowItemRoleService;
|
private WorkflowItemRoleService workflowItemRoleService;
|
||||||
@Autowired(required = true)
|
@Autowired(required = true)
|
||||||
private XmlWorkflowItemService xmlWorkflowItemService;
|
private WorkflowItemService workflowItemService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public XmlWorkflowFactory getWorkflowFactory() {
|
public XmlWorkflowFactory getWorkflowFactory() {
|
||||||
@@ -57,8 +56,8 @@ public class XmlWorkflowServiceFactoryImpl extends XmlWorkflowServiceFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public XmlWorkflowService getXmlWorkflowService() {
|
public WorkflowService getWorkflowService() {
|
||||||
return xmlWorkflowService;
|
return workflowService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -86,18 +85,8 @@ public class XmlWorkflowServiceFactoryImpl extends XmlWorkflowServiceFactory {
|
|||||||
return workflowItemRoleService;
|
return workflowItemRoleService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public XmlWorkflowItemService getXmlWorkflowItemService() {
|
|
||||||
return xmlWorkflowItemService;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public WorkflowService getWorkflowService() {
|
|
||||||
return getXmlWorkflowService();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkflowItemService getWorkflowItemService() {
|
public WorkflowItemService getWorkflowItemService() {
|
||||||
return getXmlWorkflowItemService();
|
return workflowItemService;
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,41 +0,0 @@
|
|||||||
<!--
|
|
||||||
|
|
||||||
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/
|
|
||||||
|
|
||||||
-->
|
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<!--
|
|
||||||
Author: dstuve
|
|
||||||
Version: $Id$
|
|
||||||
Date: $Date$
|
|
||||||
-->
|
|
||||||
</head>
|
|
||||||
<body bgcolor="white">
|
|
||||||
<p>DSpace's workflow system</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
DSpace has a simple workflow system, which models the workflows
|
|
||||||
as 5 steps: SUBMIT, three intermediate steps (STEP1, STEP2, STEP3), and ARCHIVE.
|
|
||||||
When an item is submitted to DSpace, it is in the SUBMIT state. If there
|
|
||||||
are no intermediate states defined, then it proceeds directly to ARCHIVE and
|
|
||||||
is put into the main DSpace archive.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
EPerson groups may be assigned to the three possible intermediate steps,
|
|
||||||
where they are expected to act on the item at those steps. For example,
|
|
||||||
if a Collection's owners desire a review step, they would create a Group
|
|
||||||
of reviewers, and assign that Group to step 1. The members of step 1's
|
|
||||||
Group will receive emails asking them to review the submission, and
|
|
||||||
will need to perform an action on the item before it can be rejected
|
|
||||||
back to the submitter or placed in the archive.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@@ -1,185 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.workflowbasic;
|
|
||||||
|
|
||||||
import javax.persistence.Column;
|
|
||||||
import javax.persistence.Entity;
|
|
||||||
import javax.persistence.FetchType;
|
|
||||||
import javax.persistence.GeneratedValue;
|
|
||||||
import javax.persistence.GenerationType;
|
|
||||||
import javax.persistence.Id;
|
|
||||||
import javax.persistence.JoinColumn;
|
|
||||||
import javax.persistence.ManyToOne;
|
|
||||||
import javax.persistence.OneToOne;
|
|
||||||
import javax.persistence.SequenceGenerator;
|
|
||||||
import javax.persistence.Table;
|
|
||||||
|
|
||||||
import org.dspace.content.Collection;
|
|
||||||
import org.dspace.content.Item;
|
|
||||||
import org.dspace.core.Context;
|
|
||||||
import org.dspace.eperson.EPerson;
|
|
||||||
import org.dspace.workflow.WorkflowItem;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class representing an item going through the workflow process in DSpace
|
|
||||||
*
|
|
||||||
* @author Robert Tansley
|
|
||||||
* @version $Revision$
|
|
||||||
*/
|
|
||||||
@Entity
|
|
||||||
@Table(name = "workflowitem")
|
|
||||||
public class BasicWorkflowItem implements WorkflowItem {
|
|
||||||
|
|
||||||
@Id
|
|
||||||
@Column(name = "workflow_id", unique = true, nullable = false)
|
|
||||||
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "workflowitem_seq")
|
|
||||||
@SequenceGenerator(name = "workflowitem_seq", sequenceName = "workflowitem_seq", allocationSize = 1)
|
|
||||||
private Integer workflowitemId;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The item this workflow object pertains to
|
|
||||||
*/
|
|
||||||
@OneToOne(fetch = FetchType.LAZY)
|
|
||||||
@JoinColumn(name = "item_id", unique = true)
|
|
||||||
private Item item;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The collection the item is being submitted to
|
|
||||||
*/
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
|
||||||
@JoinColumn(name = "collection_id")
|
|
||||||
private Collection collection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* EPerson owning the current state
|
|
||||||
*/
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
|
||||||
@JoinColumn(name = "owner")
|
|
||||||
private EPerson owner;
|
|
||||||
|
|
||||||
@Column(name = "state")
|
|
||||||
private int state;
|
|
||||||
|
|
||||||
@Column(name = "multiple_titles")
|
|
||||||
private boolean multipleTitles = false;
|
|
||||||
|
|
||||||
@Column(name = "published_before")
|
|
||||||
private boolean publishedBefore = false;
|
|
||||||
|
|
||||||
@Column(name = "multiple_files")
|
|
||||||
private boolean multipleFiles = false;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Protected constructor, create object using:
|
|
||||||
* {@link org.dspace.workflowbasic.service.BasicWorkflowItemService#create(Context, Item, Collection)}
|
|
||||||
*/
|
|
||||||
protected BasicWorkflowItem() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the internal ID of this workflow item
|
|
||||||
*
|
|
||||||
* @return the internal identifier
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Integer getID() {
|
|
||||||
return workflowitemId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* get owner of WorkflowItem
|
|
||||||
*
|
|
||||||
* @return EPerson owner
|
|
||||||
*/
|
|
||||||
public EPerson getOwner() {
|
|
||||||
return owner;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* set owner of WorkflowItem
|
|
||||||
*
|
|
||||||
* @param ep owner
|
|
||||||
*/
|
|
||||||
public void setOwner(EPerson ep) {
|
|
||||||
this.owner = ep;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get state of WorkflowItem
|
|
||||||
*
|
|
||||||
* @return state
|
|
||||||
*/
|
|
||||||
public int getState() {
|
|
||||||
return state;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set state of WorkflowItem
|
|
||||||
*
|
|
||||||
* @param newstate new state (from <code>WorkflowManager</code>)
|
|
||||||
*/
|
|
||||||
public void setState(int newstate) {
|
|
||||||
this.state = newstate;
|
|
||||||
}
|
|
||||||
|
|
||||||
// InProgressSubmission methods
|
|
||||||
@Override
|
|
||||||
public Item getItem() {
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setItem(Item item) {
|
|
||||||
this.item = item;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Collection getCollection() {
|
|
||||||
return collection;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCollection(Collection collection) {
|
|
||||||
this.collection = collection;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public EPerson getSubmitter() {
|
|
||||||
return item.getSubmitter();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasMultipleFiles() {
|
|
||||||
return multipleFiles;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setMultipleFiles(boolean b) {
|
|
||||||
this.multipleFiles = b;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasMultipleTitles() {
|
|
||||||
return multipleTitles;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setMultipleTitles(boolean b) {
|
|
||||||
this.multipleTitles = b;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isPublishedBefore() {
|
|
||||||
return publishedBefore;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setPublishedBefore(boolean b) {
|
|
||||||
this.publishedBefore = b;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,171 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.workflowbasic;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.apache.logging.log4j.Logger;
|
|
||||||
import org.dspace.authorize.AuthorizeException;
|
|
||||||
import org.dspace.content.Collection;
|
|
||||||
import org.dspace.content.Item;
|
|
||||||
import org.dspace.content.service.ItemService;
|
|
||||||
import org.dspace.core.Context;
|
|
||||||
import org.dspace.core.LogManager;
|
|
||||||
import org.dspace.eperson.EPerson;
|
|
||||||
import org.dspace.workflowbasic.dao.BasicWorkflowItemDAO;
|
|
||||||
import org.dspace.workflowbasic.service.BasicWorkflowItemService;
|
|
||||||
import org.dspace.workflowbasic.service.TaskListItemService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Service implementation for the BasicWorkflowItem object.
|
|
||||||
* This class is responsible for all business logic calls for the BasicWorkflowItem object and is autowired by spring.
|
|
||||||
* This class should never be accessed directly.
|
|
||||||
*
|
|
||||||
* @author kevinvandevelde at atmire.com
|
|
||||||
*/
|
|
||||||
public class BasicWorkflowItemServiceImpl implements BasicWorkflowItemService {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* log4j category
|
|
||||||
*/
|
|
||||||
protected static Logger log = org.apache.logging.log4j.LogManager.getLogger(BasicWorkflowItem.class);
|
|
||||||
|
|
||||||
@Autowired(required = true)
|
|
||||||
protected BasicWorkflowItemDAO workflowItemDAO;
|
|
||||||
|
|
||||||
@Autowired(required = true)
|
|
||||||
protected ItemService itemService;
|
|
||||||
@Autowired(required = true)
|
|
||||||
protected TaskListItemService taskListItemService;
|
|
||||||
|
|
||||||
|
|
||||||
protected BasicWorkflowItemServiceImpl() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public BasicWorkflowItem create(Context context, Item item, Collection collection)
|
|
||||||
throws SQLException, AuthorizeException {
|
|
||||||
if (findByItem(context, item) != null) {
|
|
||||||
throw new IllegalArgumentException(
|
|
||||||
"Unable to create a workflow item for an item that already has a workflow item.");
|
|
||||||
}
|
|
||||||
BasicWorkflowItem workflowItem = workflowItemDAO.create(context, new BasicWorkflowItem());
|
|
||||||
workflowItem.setItem(item);
|
|
||||||
workflowItem.setCollection(collection);
|
|
||||||
update(context, workflowItem);
|
|
||||||
return workflowItem;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public BasicWorkflowItem find(Context context, int id) throws SQLException {
|
|
||||||
BasicWorkflowItem workflowItem = workflowItemDAO.findByID(context, BasicWorkflowItem.class, id);
|
|
||||||
|
|
||||||
if (workflowItem == null) {
|
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug(LogManager.getHeader(context, "find_workflow_item",
|
|
||||||
"not_found,workflow_id=" + id));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug(LogManager.getHeader(context, "find_workflow_item",
|
|
||||||
"workflow_id=" + id));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return workflowItem;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<BasicWorkflowItem> findAll(Context context) throws SQLException {
|
|
||||||
return workflowItemDAO.findAll(context, BasicWorkflowItem.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<BasicWorkflowItem> findBySubmitter(Context context, EPerson ep) throws SQLException {
|
|
||||||
return workflowItemDAO.findBySubmitter(context, ep);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void deleteByCollection(Context context, Collection collection)
|
|
||||||
throws SQLException, IOException, AuthorizeException {
|
|
||||||
List<BasicWorkflowItem> workflowItems = findByCollection(context, collection);
|
|
||||||
Iterator<BasicWorkflowItem> iterator = workflowItems.iterator();
|
|
||||||
while (iterator.hasNext()) {
|
|
||||||
BasicWorkflowItem workflowItem = iterator.next();
|
|
||||||
iterator.remove();
|
|
||||||
delete(context, workflowItem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void delete(Context context, BasicWorkflowItem workflowItem)
|
|
||||||
throws SQLException, AuthorizeException, IOException {
|
|
||||||
Item item = workflowItem.getItem();
|
|
||||||
deleteWrapper(context, workflowItem);
|
|
||||||
itemService.delete(context, item);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<BasicWorkflowItem> findByCollection(Context context, Collection collection) throws SQLException {
|
|
||||||
return workflowItemDAO.findByCollection(context, collection);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public BasicWorkflowItem findByItem(Context context, Item item) throws SQLException {
|
|
||||||
return workflowItemDAO.findByItem(context, item);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void deleteWrapper(Context context, BasicWorkflowItem workflowItem) throws SQLException, AuthorizeException {
|
|
||||||
// delete any pending tasks
|
|
||||||
taskListItemService.deleteByWorkflowItem(context, workflowItem);
|
|
||||||
|
|
||||||
// FIXME - auth?
|
|
||||||
workflowItemDAO.delete(context, workflowItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void update(Context context, BasicWorkflowItem workflowItem) throws SQLException, AuthorizeException {
|
|
||||||
// FIXME check auth
|
|
||||||
log.info(LogManager.getHeader(context, "update_workflow_item",
|
|
||||||
"workflow_item_id=" + workflowItem.getID()));
|
|
||||||
|
|
||||||
|
|
||||||
// Update the item
|
|
||||||
itemService.update(context, workflowItem.getItem());
|
|
||||||
|
|
||||||
// Update ourselves
|
|
||||||
workflowItemDAO.save(context, workflowItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<BasicWorkflowItem> findPooledTasks(Context context, EPerson ePerson) throws SQLException {
|
|
||||||
return workflowItemDAO.findByPooledTasks(context, ePerson);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<BasicWorkflowItem> findByOwner(Context context, EPerson ePerson) throws SQLException {
|
|
||||||
return workflowItemDAO.findByOwner(context, ePerson);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int countTotal(Context context) throws SQLException {
|
|
||||||
return workflowItemDAO.countRows(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void move(Context context, BasicWorkflowItem inProgressSubmission, Collection fromCollection,
|
|
||||||
Collection toCollection) {
|
|
||||||
// TODO not implemented yet
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
@@ -1,79 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.workflowbasic;
|
|
||||||
|
|
||||||
import javax.persistence.Column;
|
|
||||||
import javax.persistence.Entity;
|
|
||||||
import javax.persistence.FetchType;
|
|
||||||
import javax.persistence.GeneratedValue;
|
|
||||||
import javax.persistence.GenerationType;
|
|
||||||
import javax.persistence.Id;
|
|
||||||
import javax.persistence.JoinColumn;
|
|
||||||
import javax.persistence.ManyToOne;
|
|
||||||
import javax.persistence.SequenceGenerator;
|
|
||||||
import javax.persistence.Table;
|
|
||||||
|
|
||||||
import org.dspace.core.Context;
|
|
||||||
import org.dspace.core.ReloadableEntity;
|
|
||||||
import org.dspace.eperson.EPerson;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Database entity representation of the TaskListItem table
|
|
||||||
*
|
|
||||||
* @author kevinvandevelde at atmire.com
|
|
||||||
*/
|
|
||||||
@Entity
|
|
||||||
@Table(name = "tasklistitem")
|
|
||||||
public class TaskListItem implements ReloadableEntity<Integer> {
|
|
||||||
|
|
||||||
@Id
|
|
||||||
@Column(name = "tasklist_id", unique = true, nullable = false)
|
|
||||||
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "tasklistitem_seq")
|
|
||||||
@SequenceGenerator(name = "tasklistitem_seq", sequenceName = "tasklistitem_seq", allocationSize = 1)
|
|
||||||
private int taskListItemId;
|
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
|
||||||
@JoinColumn(name = "eperson_id")
|
|
||||||
private EPerson ePerson;
|
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
|
||||||
@JoinColumn(name = "workflow_id")
|
|
||||||
private BasicWorkflowItem workflowItem;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Protected constructor, create object using:
|
|
||||||
* {@link org.dspace.workflowbasic.service.TaskListItemService#create(Context, BasicWorkflowItem, EPerson)}
|
|
||||||
*/
|
|
||||||
protected TaskListItem() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getTaskListItemId() {
|
|
||||||
return taskListItemId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EPerson getEPerson() {
|
|
||||||
return ePerson;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BasicWorkflowItem getWorkflowItem() {
|
|
||||||
return workflowItem;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setEPerson(EPerson ePerson) {
|
|
||||||
this.ePerson = ePerson;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setWorkflowItem(BasicWorkflowItem workflowItem) {
|
|
||||||
this.workflowItem = workflowItem;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getID() {
|
|
||||||
return taskListItemId;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,69 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.workflowbasic;
|
|
||||||
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.dspace.core.Context;
|
|
||||||
import org.dspace.eperson.EPerson;
|
|
||||||
import org.dspace.workflowbasic.dao.TaskListItemDAO;
|
|
||||||
import org.dspace.workflowbasic.service.TaskListItemService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Service implementation for the TaskListItem object.
|
|
||||||
* This class is responsible for all business logic calls for the TaskListItem object and is autowired by spring.
|
|
||||||
* This class should never be accessed directly.
|
|
||||||
*
|
|
||||||
* @author kevinvandevelde at atmire.com
|
|
||||||
*/
|
|
||||||
public class TaskListItemServiceImpl implements TaskListItemService {
|
|
||||||
|
|
||||||
@Autowired(required = true)
|
|
||||||
protected TaskListItemDAO taskListItemDAO;
|
|
||||||
|
|
||||||
protected TaskListItemServiceImpl() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TaskListItem create(Context context, BasicWorkflowItem workflowItem, EPerson ePerson) throws SQLException {
|
|
||||||
TaskListItem taskListItem = taskListItemDAO.create(context, new TaskListItem());
|
|
||||||
taskListItem.setWorkflowItem(workflowItem);
|
|
||||||
taskListItem.setEPerson(ePerson);
|
|
||||||
update(context, taskListItem);
|
|
||||||
return taskListItem;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void deleteByWorkflowItem(Context context, BasicWorkflowItem workflowItem) throws SQLException {
|
|
||||||
taskListItemDAO.deleteByWorkflowItem(context, workflowItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void deleteByWorkflowItemAndEPerson(Context context, BasicWorkflowItem workflowItem, EPerson ePerson)
|
|
||||||
throws SQLException {
|
|
||||||
taskListItemDAO.deleteByWorkflowItemAndEPerson(context, workflowItem, ePerson);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void deleteByEPerson(Context context, EPerson ePerson) throws SQLException {
|
|
||||||
taskListItemDAO.deleteByEPerson(context, ePerson);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void update(Context context, TaskListItem taskListItem) throws SQLException {
|
|
||||||
taskListItemDAO.save(context, taskListItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<TaskListItem> findByEPerson(Context context, EPerson ePerson) throws SQLException {
|
|
||||||
return taskListItemDAO.findByEPerson(context, ePerson);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,41 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.workflowbasic.dao;
|
|
||||||
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.dspace.content.Collection;
|
|
||||||
import org.dspace.content.Item;
|
|
||||||
import org.dspace.core.Context;
|
|
||||||
import org.dspace.core.GenericDAO;
|
|
||||||
import org.dspace.eperson.EPerson;
|
|
||||||
import org.dspace.workflowbasic.BasicWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Database Access Object interface class for the BasicWorkflowItem object.
|
|
||||||
* The implementation of this class is responsible for all database calls for the BasicWorkflowItem object and is
|
|
||||||
* autowired by spring
|
|
||||||
* This class should only be accessed from a single service and should never be exposed outside of the API
|
|
||||||
*
|
|
||||||
* @author kevinvandevelde at atmire.com
|
|
||||||
*/
|
|
||||||
public interface BasicWorkflowItemDAO extends GenericDAO<BasicWorkflowItem> {
|
|
||||||
|
|
||||||
public BasicWorkflowItem findByItem(Context context, Item i) throws SQLException;
|
|
||||||
|
|
||||||
public List<BasicWorkflowItem> findBySubmitter(Context context, EPerson ep) throws SQLException;
|
|
||||||
|
|
||||||
public List<BasicWorkflowItem> findByCollection(Context context, Collection c) throws SQLException;
|
|
||||||
|
|
||||||
public List<BasicWorkflowItem> findByPooledTasks(Context context, EPerson ePerson) throws SQLException;
|
|
||||||
|
|
||||||
public List<BasicWorkflowItem> findByOwner(Context context, EPerson ePerson) throws SQLException;
|
|
||||||
|
|
||||||
int countRows(Context context) throws SQLException;
|
|
||||||
}
|
|
@@ -1,37 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.workflowbasic.dao;
|
|
||||||
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.dspace.core.Context;
|
|
||||||
import org.dspace.core.GenericDAO;
|
|
||||||
import org.dspace.eperson.EPerson;
|
|
||||||
import org.dspace.workflowbasic.BasicWorkflowItem;
|
|
||||||
import org.dspace.workflowbasic.TaskListItem;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Database Access Object interface class for the TaskListItem object.
|
|
||||||
* The implementation of this class is responsible for all database calls for the TaskListItem object and is
|
|
||||||
* autowired by spring
|
|
||||||
* This class should only be accessed from a single service and should never be exposed outside of the API
|
|
||||||
*
|
|
||||||
* @author kevinvandevelde at atmire.com
|
|
||||||
*/
|
|
||||||
public interface TaskListItemDAO extends GenericDAO<TaskListItem> {
|
|
||||||
|
|
||||||
public void deleteByWorkflowItem(Context context, BasicWorkflowItem workflowItem) throws SQLException;
|
|
||||||
|
|
||||||
public void deleteByWorkflowItemAndEPerson(Context context, BasicWorkflowItem workflowItem, EPerson ePerson)
|
|
||||||
throws SQLException;
|
|
||||||
|
|
||||||
public void deleteByEPerson(Context context, EPerson ePerson) throws SQLException;
|
|
||||||
|
|
||||||
public List<TaskListItem> findByEPerson(Context context, EPerson ePerson) throws SQLException;
|
|
||||||
}
|
|
@@ -1,105 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.workflowbasic.dao.impl;
|
|
||||||
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
import javax.persistence.Query;
|
|
||||||
import javax.persistence.criteria.CriteriaBuilder;
|
|
||||||
import javax.persistence.criteria.CriteriaQuery;
|
|
||||||
import javax.persistence.criteria.Join;
|
|
||||||
import javax.persistence.criteria.Root;
|
|
||||||
|
|
||||||
import org.dspace.content.Collection;
|
|
||||||
import org.dspace.content.Item;
|
|
||||||
import org.dspace.content.Item_;
|
|
||||||
import org.dspace.core.AbstractHibernateDAO;
|
|
||||||
import org.dspace.core.Context;
|
|
||||||
import org.dspace.eperson.EPerson;
|
|
||||||
import org.dspace.workflowbasic.BasicWorkflowItem;
|
|
||||||
import org.dspace.workflowbasic.BasicWorkflowItem_;
|
|
||||||
import org.dspace.workflowbasic.dao.BasicWorkflowItemDAO;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Hibernate implementation of the Database Access Object interface class for the BasicWorkflowItem object.
|
|
||||||
* This class is responsible for all database calls for the BasicWorkflowItem object and is autowired by spring
|
|
||||||
* This class should never be accessed directly.
|
|
||||||
*
|
|
||||||
* @author kevinvandevelde at atmire.com
|
|
||||||
*/
|
|
||||||
public class BasicWorkflowItemDAOImpl extends AbstractHibernateDAO<BasicWorkflowItem> implements BasicWorkflowItemDAO {
|
|
||||||
protected BasicWorkflowItemDAOImpl() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public BasicWorkflowItem findByItem(Context context, Item i) throws SQLException {
|
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
|
||||||
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, BasicWorkflowItem.class);
|
|
||||||
Root<BasicWorkflowItem> basicWorkflowItemRoot = criteriaQuery.from(BasicWorkflowItem.class);
|
|
||||||
criteriaQuery.select(basicWorkflowItemRoot);
|
|
||||||
criteriaQuery.where(criteriaBuilder.equal(basicWorkflowItemRoot.get(BasicWorkflowItem_.item), i));
|
|
||||||
return uniqueResult(context, criteriaQuery, false, BasicWorkflowItem.class, -1, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<BasicWorkflowItem> findBySubmitter(Context context, EPerson ep) throws SQLException {
|
|
||||||
|
|
||||||
|
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
|
||||||
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, BasicWorkflowItem.class);
|
|
||||||
Root<BasicWorkflowItem> basicWorkflowItemRoot = criteriaQuery.from(BasicWorkflowItem.class);
|
|
||||||
Join<BasicWorkflowItem, Item> join = basicWorkflowItemRoot.join("item");
|
|
||||||
criteriaQuery.select(basicWorkflowItemRoot);
|
|
||||||
criteriaQuery.where(criteriaBuilder.equal(join.get(Item_.submitter), ep));
|
|
||||||
|
|
||||||
List<javax.persistence.criteria.Order> orderList = new LinkedList<>();
|
|
||||||
orderList.add(criteriaBuilder.asc(basicWorkflowItemRoot.get(BasicWorkflowItem_.workflowitemId)));
|
|
||||||
criteriaQuery.orderBy(orderList);
|
|
||||||
|
|
||||||
|
|
||||||
return list(context, criteriaQuery, false, BasicWorkflowItem.class, -1, -1);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<BasicWorkflowItem> findByCollection(Context context, Collection c) throws SQLException {
|
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
|
||||||
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, BasicWorkflowItem.class);
|
|
||||||
Root<BasicWorkflowItem> basicWorkflowItemRoot = criteriaQuery.from(BasicWorkflowItem.class);
|
|
||||||
criteriaQuery.select(basicWorkflowItemRoot);
|
|
||||||
criteriaQuery.where(criteriaBuilder.equal(basicWorkflowItemRoot.get(BasicWorkflowItem_.collection), c));
|
|
||||||
return list(context, criteriaQuery, false, BasicWorkflowItem.class, -1, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<BasicWorkflowItem> findByPooledTasks(Context context, EPerson ePerson) throws SQLException {
|
|
||||||
String queryString = "select wf from TaskListItem as tli join tli.workflowItem wf where tli.ePerson = " +
|
|
||||||
":eperson ORDER BY wf.workflowitemId";
|
|
||||||
Query query = createQuery(context, queryString);
|
|
||||||
query.setParameter("eperson", ePerson);
|
|
||||||
return list(query);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<BasicWorkflowItem> findByOwner(Context context, EPerson ePerson) throws SQLException {
|
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
|
||||||
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, BasicWorkflowItem.class);
|
|
||||||
Root<BasicWorkflowItem> basicWorkflowItemRoot = criteriaQuery.from(BasicWorkflowItem.class);
|
|
||||||
criteriaQuery.select(basicWorkflowItemRoot);
|
|
||||||
criteriaQuery.where(criteriaBuilder.equal(basicWorkflowItemRoot.get(BasicWorkflowItem_.owner), ePerson));
|
|
||||||
return list(context, criteriaQuery, false, BasicWorkflowItem.class, -1, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int countRows(Context context) throws SQLException {
|
|
||||||
return count(createQuery(context, "SELECT count(*) FROM BasicWorkflowItem"));
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,72 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.workflowbasic.dao.impl;
|
|
||||||
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.List;
|
|
||||||
import javax.persistence.Query;
|
|
||||||
import javax.persistence.criteria.CriteriaBuilder;
|
|
||||||
import javax.persistence.criteria.CriteriaQuery;
|
|
||||||
import javax.persistence.criteria.Root;
|
|
||||||
|
|
||||||
import org.dspace.core.AbstractHibernateDAO;
|
|
||||||
import org.dspace.core.Context;
|
|
||||||
import org.dspace.eperson.EPerson;
|
|
||||||
import org.dspace.workflowbasic.BasicWorkflowItem;
|
|
||||||
import org.dspace.workflowbasic.TaskListItem;
|
|
||||||
import org.dspace.workflowbasic.TaskListItem_;
|
|
||||||
import org.dspace.workflowbasic.dao.TaskListItemDAO;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Hibernate implementation of the Database Access Object interface class for the TaskListItem object.
|
|
||||||
* This class is responsible for all database calls for the TaskListItem object and is autowired by spring
|
|
||||||
* This class should never be accessed directly.
|
|
||||||
*
|
|
||||||
* @author kevinvandevelde at atmire.com
|
|
||||||
*/
|
|
||||||
public class TaskListItemDAOImpl extends AbstractHibernateDAO<TaskListItem> implements TaskListItemDAO {
|
|
||||||
protected TaskListItemDAOImpl() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void deleteByWorkflowItem(Context context, BasicWorkflowItem workflowItem) throws SQLException {
|
|
||||||
String queryString = "delete from TaskListItem where workflowItem = :workflowItem";
|
|
||||||
Query query = createQuery(context, queryString);
|
|
||||||
query.setParameter("workflowItem", workflowItem);
|
|
||||||
query.executeUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void deleteByWorkflowItemAndEPerson(Context context, BasicWorkflowItem workflowItem, EPerson ePerson)
|
|
||||||
throws SQLException {
|
|
||||||
String queryString = "delete from TaskListItem where workflowItem = :workflowItem AND ePerson = :ePerson";
|
|
||||||
Query query = createQuery(context, queryString);
|
|
||||||
query.setParameter("workflowItem", workflowItem);
|
|
||||||
query.setParameter("ePerson", ePerson);
|
|
||||||
query.executeUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void deleteByEPerson(Context context, EPerson ePerson) throws SQLException {
|
|
||||||
String queryString = "delete from TaskListItem where ePerson = :ePerson";
|
|
||||||
Query query = createQuery(context, queryString);
|
|
||||||
query.setParameter("ePerson", ePerson);
|
|
||||||
query.executeUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<TaskListItem> findByEPerson(Context context, EPerson ePerson) throws SQLException {
|
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
|
||||||
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, TaskListItem.class);
|
|
||||||
Root<TaskListItem> taskListItemRoot = criteriaQuery.from(TaskListItem.class);
|
|
||||||
criteriaQuery.select(taskListItemRoot);
|
|
||||||
criteriaQuery.where(criteriaBuilder.equal(taskListItemRoot.get(TaskListItem_.ePerson), ePerson));
|
|
||||||
return list(context, criteriaQuery, false, TaskListItem.class, -1, -1);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,34 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.workflowbasic.factory;
|
|
||||||
|
|
||||||
import org.dspace.services.factory.DSpaceServicesFactory;
|
|
||||||
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
|
||||||
import org.dspace.workflowbasic.service.BasicWorkflowItemService;
|
|
||||||
import org.dspace.workflowbasic.service.BasicWorkflowService;
|
|
||||||
import org.dspace.workflowbasic.service.TaskListItemService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Abstract factory to get services for the workflowbasic package, use BasicWorkflowServiceFactory.getInstance() to
|
|
||||||
* retrieve an implementation
|
|
||||||
*
|
|
||||||
* @author kevinvandevelde at atmire.com
|
|
||||||
*/
|
|
||||||
public abstract class BasicWorkflowServiceFactory extends WorkflowServiceFactory {
|
|
||||||
|
|
||||||
public abstract BasicWorkflowService getBasicWorkflowService();
|
|
||||||
|
|
||||||
public abstract BasicWorkflowItemService getBasicWorkflowItemService();
|
|
||||||
|
|
||||||
public abstract TaskListItemService getTaskListItemService();
|
|
||||||
|
|
||||||
public static BasicWorkflowServiceFactory getInstance() {
|
|
||||||
return DSpaceServicesFactory.getInstance().getServiceManager()
|
|
||||||
.getServiceByName("workflowServiceFactory", BasicWorkflowServiceFactory.class);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,57 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.workflowbasic.factory;
|
|
||||||
|
|
||||||
import org.dspace.workflow.WorkflowItemService;
|
|
||||||
import org.dspace.workflow.WorkflowService;
|
|
||||||
import org.dspace.workflowbasic.service.BasicWorkflowItemService;
|
|
||||||
import org.dspace.workflowbasic.service.BasicWorkflowService;
|
|
||||||
import org.dspace.workflowbasic.service.TaskListItemService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Factory implementation to get services for the workflowbasic package, use BasicWorkflowServiceFactory.getInstance
|
|
||||||
* () to retrieve an implementation
|
|
||||||
*
|
|
||||||
* @author kevinvandevelde at atmire.com
|
|
||||||
*/
|
|
||||||
public class BasicWorkflowServiceFactoryImpl extends BasicWorkflowServiceFactory {
|
|
||||||
|
|
||||||
@Autowired(required = true)
|
|
||||||
private BasicWorkflowService basicWorkflowService;
|
|
||||||
@Autowired(required = true)
|
|
||||||
private BasicWorkflowItemService basicWorkflowItemService;
|
|
||||||
@Autowired(required = true)
|
|
||||||
private TaskListItemService taskListItemService;
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public BasicWorkflowService getBasicWorkflowService() {
|
|
||||||
return basicWorkflowService;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public BasicWorkflowItemService getBasicWorkflowItemService() {
|
|
||||||
return basicWorkflowItemService;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TaskListItemService getTaskListItemService() {
|
|
||||||
return taskListItemService;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public WorkflowService getWorkflowService() {
|
|
||||||
return getBasicWorkflowService();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public WorkflowItemService getWorkflowItemService() {
|
|
||||||
return getBasicWorkflowItemService();
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,40 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.workflowbasic.service;
|
|
||||||
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.dspace.core.Context;
|
|
||||||
import org.dspace.eperson.EPerson;
|
|
||||||
import org.dspace.workflow.WorkflowItemService;
|
|
||||||
import org.dspace.workflowbasic.BasicWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Service interface class for the BasicWorkflowItem object.
|
|
||||||
* The implementation of this class is responsible for all business logic calls for the BasicWorkflowItem object and
|
|
||||||
* is autowired by spring
|
|
||||||
*
|
|
||||||
* @author kevinvandevelde at atmire.com
|
|
||||||
*/
|
|
||||||
public interface BasicWorkflowItemService extends WorkflowItemService<BasicWorkflowItem> {
|
|
||||||
|
|
||||||
public List<BasicWorkflowItem> findPooledTasks(Context context, EPerson ePerson) throws SQLException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve the list of BasicWorkflowItems that the given EPerson is owner of (owner == claimed for review)
|
|
||||||
*
|
|
||||||
* @param context The relevant DSpace Context.
|
|
||||||
* @param ePerson The DSpace EPerson object.
|
|
||||||
* @return a list of BasicWorkflowItem objects
|
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
|
||||||
*/
|
|
||||||
public List<BasicWorkflowItem> findByOwner(Context context, EPerson ePerson) throws SQLException;
|
|
||||||
|
|
||||||
int countTotal(Context context) throws SQLException;
|
|
||||||
}
|
|
@@ -1,206 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.workflowbasic.service;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.dspace.authorize.AuthorizeException;
|
|
||||||
import org.dspace.core.Context;
|
|
||||||
import org.dspace.eperson.EPerson;
|
|
||||||
import org.dspace.workflow.WorkflowService;
|
|
||||||
import org.dspace.workflowbasic.BasicWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Workflow state machine
|
|
||||||
*
|
|
||||||
* Notes:
|
|
||||||
*
|
|
||||||
* Determining item status from the database:
|
|
||||||
*
|
|
||||||
* When an item has not been submitted yet, it is in the user's personal
|
|
||||||
* workspace (there is a row in PersonalWorkspace pointing to it.)
|
|
||||||
*
|
|
||||||
* When an item is submitted and is somewhere in a workflow, it has a row in the
|
|
||||||
* WorkflowItem table pointing to it. The state of the workflow can be
|
|
||||||
* determined by looking at WorkflowItem.getState()
|
|
||||||
*
|
|
||||||
* When a submission is complete, the WorkflowItem pointing to the item is
|
|
||||||
* destroyed and the archive() method is called, which hooks the item up to the
|
|
||||||
* archive.
|
|
||||||
*
|
|
||||||
* Notification: When an item enters a state that requires notification,
|
|
||||||
* (WFSTATE_STEP1POOL, WFSTATE_STEP2POOL, WFSTATE_STEP3POOL,) the workflow needs
|
|
||||||
* to notify the appropriate groups that they have a pending task to claim.
|
|
||||||
*
|
|
||||||
* Revealing lists of approvers, editors, and reviewers. A method could be added
|
|
||||||
* to do this, but it isn't strictly necessary. (say public List
|
|
||||||
* getStateEPeople( WorkflowItem wi, int state ) could return people affected by
|
|
||||||
* the item's current state.
|
|
||||||
*/
|
|
||||||
public interface BasicWorkflowService extends WorkflowService<BasicWorkflowItem> {
|
|
||||||
|
|
||||||
// states to store in WorkflowItem for the GUI to report on
|
|
||||||
// fits our current set of workflow states (stored in WorkflowItem.state)
|
|
||||||
public static final int WFSTATE_SUBMIT = 0; // hmm, probably don't need
|
|
||||||
|
|
||||||
public static final int WFSTATE_STEP1POOL = 1; // waiting for a reviewer to
|
|
||||||
// claim it
|
|
||||||
|
|
||||||
public static final int WFSTATE_STEP1 = 2; // task - reviewer has claimed it
|
|
||||||
|
|
||||||
public static final int WFSTATE_STEP2POOL = 3; // waiting for an admin to
|
|
||||||
// claim it
|
|
||||||
|
|
||||||
public static final int WFSTATE_STEP2 = 4; // task - admin has claimed item
|
|
||||||
|
|
||||||
public static final int WFSTATE_STEP3POOL = 5; // waiting for an editor to
|
|
||||||
// claim it
|
|
||||||
|
|
||||||
public static final int WFSTATE_STEP3 = 6; // task - editor has claimed the
|
|
||||||
// item
|
|
||||||
|
|
||||||
public static final int WFSTATE_ARCHIVE = 7; // probably don't need this one
|
|
||||||
// either
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Translate symbolic name of workflow state into number.
|
|
||||||
* The name is case-insensitive. Returns -1 when name cannot
|
|
||||||
* be matched.
|
|
||||||
*
|
|
||||||
* @param state symbolic name of workflow state, must be one of
|
|
||||||
* the elements of workflowText array.
|
|
||||||
* @return numeric workflow state or -1 for error.
|
|
||||||
*/
|
|
||||||
public int getWorkflowID(String state);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* getOwnedTasks() returns a List of WorkflowItems containing the tasks
|
|
||||||
* claimed and owned by an EPerson. The GUI displays this info on the
|
|
||||||
* MyDSpace page.
|
|
||||||
*
|
|
||||||
* @param context The relevant DSpace Context.
|
|
||||||
* @param e The EPerson we want to fetch owned tasks for.
|
|
||||||
* @return list of basic workflow items
|
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
|
||||||
*/
|
|
||||||
public List<BasicWorkflowItem> getOwnedTasks(Context context, EPerson e)
|
|
||||||
throws java.sql.SQLException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* getPooledTasks() returns a List of WorkflowItems an EPerson could claim
|
|
||||||
* (as a reviewer, etc.) for display on a user's MyDSpace page.
|
|
||||||
*
|
|
||||||
* @param context The relevant DSpace Context.
|
|
||||||
* @param e The Eperson we want to fetch the pooled tasks for.
|
|
||||||
* @return list of basic workflow items
|
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
|
||||||
*/
|
|
||||||
public List<BasicWorkflowItem> getPooledTasks(Context context, EPerson e) throws SQLException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* claim() claims a workflow task for an EPerson
|
|
||||||
*
|
|
||||||
* @param context The relevant DSpace Context.
|
|
||||||
* @param workflowItem WorkflowItem to do the claim on
|
|
||||||
* @param e The EPerson doing the claim
|
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
|
||||||
* @throws IOException A general class of exceptions produced by failed or interrupted I/O operations.
|
|
||||||
* @throws AuthorizeException Exception indicating the current user of the context does not have permission
|
|
||||||
* to perform a particular action.
|
|
||||||
*/
|
|
||||||
public void claim(Context context, BasicWorkflowItem workflowItem, EPerson e)
|
|
||||||
throws SQLException, IOException, AuthorizeException;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* advance() sends an item forward in the workflow (reviewers,
|
|
||||||
* approvers, and editors all do an 'approve' to move the item forward) if
|
|
||||||
* the item arrives at the submit state, then remove the WorkflowItem and
|
|
||||||
* call the archive() method to put it in the archive, and email notify the
|
|
||||||
* submitter of a successful submission
|
|
||||||
*
|
|
||||||
* @param context The relevant DSpace Context.
|
|
||||||
* @param workflowItem WorkflowItem do do the approval on
|
|
||||||
* @param e EPerson doing the approval
|
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
|
||||||
* @throws IOException A general class of exceptions produced by failed or interrupted I/O operations.
|
|
||||||
* @throws AuthorizeException Exception indicating the current user of the context does not have permission
|
|
||||||
* to perform a particular action.
|
|
||||||
*/
|
|
||||||
public void advance(Context context, BasicWorkflowItem workflowItem, EPerson e)
|
|
||||||
throws SQLException, IOException, AuthorizeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* advance() sends an item forward in the workflow (reviewers,
|
|
||||||
* approvers, and editors all do an 'approve' to move the item forward) if
|
|
||||||
* the item arrives at the submit state, then remove the WorkflowItem and
|
|
||||||
* call the archive() method to put it in the archive, and email notify the
|
|
||||||
* submitter of a successful submission
|
|
||||||
*
|
|
||||||
* @param context The relevant DSpace Context.
|
|
||||||
* @param workflowItem WorkflowItem do do the approval on
|
|
||||||
* @param e EPerson doing the approval
|
|
||||||
* @param curate boolean indicating whether curation tasks should be done
|
|
||||||
* @param record boolean indicating whether to record action
|
|
||||||
* @return true if the item was successfully archived
|
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
|
||||||
* @throws IOException A general class of exceptions produced by failed or interrupted I/O operations.
|
|
||||||
* @throws AuthorizeException Exception indicating the current user of the context does not have permission
|
|
||||||
* to perform a particular action.
|
|
||||||
*/
|
|
||||||
public boolean advance(Context context, BasicWorkflowItem workflowItem, EPerson e,
|
|
||||||
boolean curate, boolean record)
|
|
||||||
throws SQLException, IOException, AuthorizeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* unclaim() returns an owned task/item to the pool
|
|
||||||
*
|
|
||||||
* @param context Context
|
|
||||||
* @param workflowItem WorkflowItem to operate on
|
|
||||||
* @param e EPerson doing the operation
|
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
|
||||||
* @throws IOException A general class of exceptions produced by failed or interrupted I/O operations.
|
|
||||||
* @throws AuthorizeException Exception indicating the current user of the context does not have permission
|
|
||||||
* to perform a particular action.
|
|
||||||
*/
|
|
||||||
public void unclaim(Context context, BasicWorkflowItem workflowItem, EPerson e)
|
|
||||||
throws SQLException, IOException, AuthorizeException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the text representing the given workflow state
|
|
||||||
*
|
|
||||||
* @param state the workflow state
|
|
||||||
* @return the text representation
|
|
||||||
*/
|
|
||||||
public String getWorkflowText(int state);
|
|
||||||
|
|
||||||
|
|
||||||
// send notices of curation activity
|
|
||||||
public void notifyOfCuration(Context c, BasicWorkflowItem wi, List<EPerson> ePeople,
|
|
||||||
String taskName, String action, String message) throws SQLException, IOException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* get the title of the item in this workflow
|
|
||||||
*
|
|
||||||
* @param wi the workflow item object
|
|
||||||
* @return item title
|
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
|
||||||
*/
|
|
||||||
public String getItemTitle(BasicWorkflowItem wi) throws SQLException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* get the name of the eperson who started this workflow
|
|
||||||
*
|
|
||||||
* @param wi the workflow item
|
|
||||||
* @return submitter's name
|
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
|
||||||
*/
|
|
||||||
public String getSubmitterName(BasicWorkflowItem wi) throws SQLException;
|
|
||||||
}
|
|
@@ -1,39 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.workflowbasic.service;
|
|
||||||
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.dspace.core.Context;
|
|
||||||
import org.dspace.eperson.EPerson;
|
|
||||||
import org.dspace.workflowbasic.BasicWorkflowItem;
|
|
||||||
import org.dspace.workflowbasic.TaskListItem;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Service interface class for the TaskListItem object.
|
|
||||||
* The implementation of this class is responsible for all business logic calls for the TaskListItem object and is
|
|
||||||
* autowired by spring
|
|
||||||
*
|
|
||||||
* @author kevinvandevelde at atmire.com
|
|
||||||
*/
|
|
||||||
public interface TaskListItemService {
|
|
||||||
|
|
||||||
public TaskListItem create(Context context, BasicWorkflowItem workflowItem, EPerson ePerson) throws SQLException;
|
|
||||||
|
|
||||||
public void deleteByWorkflowItem(Context context, BasicWorkflowItem workflowItem) throws SQLException;
|
|
||||||
|
|
||||||
public void deleteByWorkflowItemAndEPerson(Context context, BasicWorkflowItem workflowItem, EPerson ePerson)
|
|
||||||
throws SQLException;
|
|
||||||
|
|
||||||
public void deleteByEPerson(Context context, EPerson ePerson) throws SQLException;
|
|
||||||
|
|
||||||
public void update(Context context, TaskListItem taskListItem) throws SQLException;
|
|
||||||
|
|
||||||
public List<TaskListItem> findByEPerson(Context context, EPerson ePerson) throws SQLException;
|
|
||||||
}
|
|
@@ -14,9 +14,9 @@ import org.dspace.core.Context;
|
|||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
import org.dspace.eperson.Group;
|
import org.dspace.eperson.Group;
|
||||||
import org.dspace.eperson.service.GroupService;
|
import org.dspace.eperson.service.GroupService;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.CollectionRole;
|
import org.dspace.xmlworkflow.storedcomponents.CollectionRole;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.WorkflowItemRole;
|
import org.dspace.xmlworkflow.storedcomponents.WorkflowItemRole;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.CollectionRoleService;
|
import org.dspace.xmlworkflow.storedcomponents.service.CollectionRoleService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.WorkflowItemRoleService;
|
import org.dspace.xmlworkflow.storedcomponents.service.WorkflowItemRoleService;
|
||||||
import org.springframework.beans.factory.BeanNameAware;
|
import org.springframework.beans.factory.BeanNameAware;
|
||||||
@@ -79,7 +79,7 @@ public class Role implements BeanNameAware {
|
|||||||
return scope;
|
return scope;
|
||||||
}
|
}
|
||||||
|
|
||||||
public RoleMembers getMembers(Context context, XmlWorkflowItem wfi) throws SQLException {
|
public RoleMembers getMembers(Context context, WorkflowItem wfi) throws SQLException {
|
||||||
if (scope == Scope.REPOSITORY) {
|
if (scope == Scope.REPOSITORY) {
|
||||||
Group group = groupService.findByName(context, name);
|
Group group = groupService.findByName(context, name);
|
||||||
if (group == null) {
|
if (group == null) {
|
||||||
|
@@ -17,17 +17,17 @@ import org.dspace.authorize.ResourcePolicy;
|
|||||||
import org.dspace.content.service.ItemService;
|
import org.dspace.content.service.ItemService;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
|
import org.dspace.workflow.WorkflowItemService;
|
||||||
|
import org.dspace.workflow.WorkflowService;
|
||||||
import org.dspace.xmlworkflow.factory.XmlWorkflowFactory;
|
import org.dspace.xmlworkflow.factory.XmlWorkflowFactory;
|
||||||
import org.dspace.xmlworkflow.service.WorkflowRequirementsService;
|
import org.dspace.xmlworkflow.service.WorkflowRequirementsService;
|
||||||
import org.dspace.xmlworkflow.service.XmlWorkflowService;
|
|
||||||
import org.dspace.xmlworkflow.state.Step;
|
import org.dspace.xmlworkflow.state.Step;
|
||||||
import org.dspace.xmlworkflow.state.Workflow;
|
import org.dspace.xmlworkflow.state.Workflow;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.InProgressUser;
|
import org.dspace.xmlworkflow.storedcomponents.InProgressUser;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.PoolTask;
|
import org.dspace.xmlworkflow.storedcomponents.PoolTask;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.InProgressUserService;
|
import org.dspace.xmlworkflow.storedcomponents.service.InProgressUserService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.XmlWorkflowItemService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -52,22 +52,22 @@ public class WorkflowRequirementsServiceImpl implements WorkflowRequirementsServ
|
|||||||
@Autowired(required = true)
|
@Autowired(required = true)
|
||||||
protected XmlWorkflowFactory workflowFactory;
|
protected XmlWorkflowFactory workflowFactory;
|
||||||
@Autowired(required = true)
|
@Autowired(required = true)
|
||||||
protected XmlWorkflowItemService xmlWorkflowItemService;
|
protected WorkflowItemService workflowItemService;
|
||||||
@Autowired(required = true)
|
@Autowired(required = true)
|
||||||
protected XmlWorkflowService xmlWorkflowService;
|
protected WorkflowService workflowService;
|
||||||
|
|
||||||
protected WorkflowRequirementsServiceImpl() {
|
protected WorkflowRequirementsServiceImpl() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addClaimedUser(Context context, XmlWorkflowItem wfi, Step step, EPerson user)
|
public void addClaimedUser(Context context, WorkflowItem wfi, Step step, EPerson user)
|
||||||
throws SQLException, AuthorizeException, IOException {
|
throws SQLException, AuthorizeException, IOException {
|
||||||
|
|
||||||
//Make sure we delete the pooled task for our current user if the task is not a group pooltask
|
//Make sure we delete the pooled task for our current user if the task is not a group pooltask
|
||||||
PoolTask task = poolTaskService.findByWorkflowIdAndEPerson(context, wfi, user);
|
PoolTask task = poolTaskService.findByWorkflowIdAndEPerson(context, wfi, user);
|
||||||
if (task != null && task.getEperson() != null) {
|
if (task != null && task.getEperson() != null) {
|
||||||
xmlWorkflowService.deletePooledTask(context, wfi, task);
|
workflowService.deletePooledTask(context, wfi, task);
|
||||||
}
|
}
|
||||||
|
|
||||||
InProgressUser ipu = inProgressUserService.create(context);
|
InProgressUser ipu = inProgressUserService.create(context);
|
||||||
@@ -77,21 +77,21 @@ public class WorkflowRequirementsServiceImpl implements WorkflowRequirementsServ
|
|||||||
inProgressUserService.update(context, ipu);
|
inProgressUserService.update(context, ipu);
|
||||||
|
|
||||||
//Make sure the user has the necessary rights to update the item after the tasks is removed from the pool
|
//Make sure the user has the necessary rights to update the item after the tasks is removed from the pool
|
||||||
xmlWorkflowService.grantUserAllItemPolicies(context, wfi.getItem(), user, ResourcePolicy.TYPE_WORKFLOW);
|
workflowService.grantUserAllItemPolicies(context, wfi.getItem(), user, ResourcePolicy.TYPE_WORKFLOW);
|
||||||
|
|
||||||
int totalUsers = inProgressUserService.getNumberOfInProgressUsers(context, wfi) + inProgressUserService
|
int totalUsers = inProgressUserService.getNumberOfInProgressUsers(context, wfi) + inProgressUserService
|
||||||
.getNumberOfFinishedUsers(context, wfi);
|
.getNumberOfFinishedUsers(context, wfi);
|
||||||
|
|
||||||
if (totalUsers == step.getRequiredUsers()) {
|
if (totalUsers == step.getRequiredUsers()) {
|
||||||
//If enough users have claimed/finished this step then remove the tasks
|
//If enough users have claimed/finished this step then remove the tasks
|
||||||
xmlWorkflowService.deleteAllPooledTasks(context, wfi);
|
workflowService.deleteAllPooledTasks(context, wfi);
|
||||||
}
|
}
|
||||||
|
|
||||||
xmlWorkflowItemService.update(context, wfi);
|
workflowItemService.update(context, wfi);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void removeClaimedUser(Context context, XmlWorkflowItem wfi, EPerson user, String stepID)
|
public void removeClaimedUser(Context context, WorkflowItem wfi, EPerson user, String stepID)
|
||||||
throws SQLException, IOException, WorkflowConfigurationException, AuthorizeException {
|
throws SQLException, IOException, WorkflowConfigurationException, AuthorizeException {
|
||||||
//Check if we had reached our max number @ this moment
|
//Check if we had reached our max number @ this moment
|
||||||
int totalUsers = inProgressUserService.getNumberOfInProgressUsers(context, wfi) + inProgressUserService
|
int totalUsers = inProgressUserService.getNumberOfInProgressUsers(context, wfi) + inProgressUserService
|
||||||
@@ -101,7 +101,7 @@ public class WorkflowRequirementsServiceImpl implements WorkflowRequirementsServ
|
|||||||
inProgressUserService.delete(context, inProgressUserService.findByWorkflowItemAndEPerson(context, wfi, user));
|
inProgressUserService.delete(context, inProgressUserService.findByWorkflowItemAndEPerson(context, wfi, user));
|
||||||
|
|
||||||
//Make sure the removed user has his custom rights removed
|
//Make sure the removed user has his custom rights removed
|
||||||
xmlWorkflowService.removeUserItemPolicies(context, wfi.getItem(), user);
|
workflowService.removeUserItemPolicies(context, wfi.getItem(), user);
|
||||||
|
|
||||||
Workflow workflow = workflowFactory.getWorkflow(wfi.getCollection());
|
Workflow workflow = workflowFactory.getWorkflow(wfi.getCollection());
|
||||||
Step step = workflow.getStep(stepID);
|
Step step = workflow.getStep(stepID);
|
||||||
@@ -142,7 +142,7 @@ public class WorkflowRequirementsServiceImpl implements WorkflowRequirementsServ
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addFinishedUser(Context c, XmlWorkflowItem wfi, EPerson user) throws AuthorizeException, SQLException {
|
public void addFinishedUser(Context c, WorkflowItem wfi, EPerson user) throws AuthorizeException, SQLException {
|
||||||
InProgressUser ipu = inProgressUserService.findByWorkflowItemAndEPerson(c, wfi, user);
|
InProgressUser ipu = inProgressUserService.findByWorkflowItemAndEPerson(c, wfi, user);
|
||||||
ipu.setFinished(true);
|
ipu.setFinished(true);
|
||||||
inProgressUserService.update(c, ipu);
|
inProgressUserService.update(c, ipu);
|
||||||
@@ -150,7 +150,7 @@ public class WorkflowRequirementsServiceImpl implements WorkflowRequirementsServ
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void clearInProgressUsers(Context c, XmlWorkflowItem wfi) throws AuthorizeException, SQLException {
|
public void clearInProgressUsers(Context c, WorkflowItem wfi) throws AuthorizeException, SQLException {
|
||||||
Iterator<InProgressUser> ipus = inProgressUserService.findByWorkflowItem(c, wfi).iterator();
|
Iterator<InProgressUser> ipus = inProgressUserService.findByWorkflowItem(c, wfi).iterator();
|
||||||
while (ipus.hasNext()) {
|
while (ipus.hasNext()) {
|
||||||
InProgressUser ipu = ipus.next();
|
InProgressUser ipu = ipus.next();
|
||||||
|
@@ -54,9 +54,11 @@ import org.dspace.services.ConfigurationService;
|
|||||||
import org.dspace.services.factory.DSpaceServicesFactory;
|
import org.dspace.services.factory.DSpaceServicesFactory;
|
||||||
import org.dspace.usage.UsageWorkflowEvent;
|
import org.dspace.usage.UsageWorkflowEvent;
|
||||||
import org.dspace.workflow.WorkflowException;
|
import org.dspace.workflow.WorkflowException;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
|
import org.dspace.workflow.WorkflowItemService;
|
||||||
|
import org.dspace.workflow.WorkflowService;
|
||||||
import org.dspace.xmlworkflow.factory.XmlWorkflowFactory;
|
import org.dspace.xmlworkflow.factory.XmlWorkflowFactory;
|
||||||
import org.dspace.xmlworkflow.service.WorkflowRequirementsService;
|
import org.dspace.xmlworkflow.service.WorkflowRequirementsService;
|
||||||
import org.dspace.xmlworkflow.service.XmlWorkflowService;
|
|
||||||
import org.dspace.xmlworkflow.state.Step;
|
import org.dspace.xmlworkflow.state.Step;
|
||||||
import org.dspace.xmlworkflow.state.Workflow;
|
import org.dspace.xmlworkflow.state.Workflow;
|
||||||
import org.dspace.xmlworkflow.state.actions.Action;
|
import org.dspace.xmlworkflow.state.actions.Action;
|
||||||
@@ -64,17 +66,15 @@ import org.dspace.xmlworkflow.state.actions.ActionResult;
|
|||||||
import org.dspace.xmlworkflow.state.actions.WorkflowActionConfig;
|
import org.dspace.xmlworkflow.state.actions.WorkflowActionConfig;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.ClaimedTask;
|
import org.dspace.xmlworkflow.storedcomponents.ClaimedTask;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.PoolTask;
|
import org.dspace.xmlworkflow.storedcomponents.PoolTask;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.CollectionRoleService;
|
import org.dspace.xmlworkflow.storedcomponents.service.CollectionRoleService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.WorkflowItemRoleService;
|
import org.dspace.xmlworkflow.storedcomponents.service.WorkflowItemRoleService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.XmlWorkflowItemService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When an item is submitted and is somewhere in a workflow, it has a row in the
|
* When an item is submitted and is somewhere in a workflow, it has a row in the
|
||||||
* WorkflowItem table pointing to it.
|
* cwf_workflowitem table pointing to it.
|
||||||
*
|
*
|
||||||
* Once the item has completed the workflow it will be archived
|
* Once the item has completed the workflow it will be archived
|
||||||
*
|
*
|
||||||
@@ -83,12 +83,12 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
* @author Ben Bosman (ben at atmire dot com)
|
* @author Ben Bosman (ben at atmire dot com)
|
||||||
* @author Mark Diggory (markd at atmire dot com)
|
* @author Mark Diggory (markd at atmire dot com)
|
||||||
*/
|
*/
|
||||||
public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
public class WorkflowServiceImpl implements WorkflowService {
|
||||||
|
|
||||||
/* support for 'no notification' */
|
/* support for 'no notification' */
|
||||||
protected Map<UUID, Boolean> noEMail = new HashMap<>();
|
protected Map<UUID, Boolean> noEMail = new HashMap<>();
|
||||||
|
|
||||||
private final Logger log = org.apache.logging.log4j.LogManager.getLogger(XmlWorkflowServiceImpl.class);
|
private final Logger log = org.apache.logging.log4j.LogManager.getLogger(WorkflowServiceImpl.class);
|
||||||
|
|
||||||
@Autowired(required = true)
|
@Autowired(required = true)
|
||||||
protected AuthorizeService authorizeService;
|
protected AuthorizeService authorizeService;
|
||||||
@@ -113,7 +113,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
@Autowired(required = true)
|
@Autowired(required = true)
|
||||||
protected WorkspaceItemService workspaceItemService;
|
protected WorkspaceItemService workspaceItemService;
|
||||||
@Autowired(required = true)
|
@Autowired(required = true)
|
||||||
protected XmlWorkflowItemService xmlWorkflowItemService;
|
protected WorkflowItemService workflowItemService;
|
||||||
@Autowired(required = true)
|
@Autowired(required = true)
|
||||||
protected GroupService groupService;
|
protected GroupService groupService;
|
||||||
@Autowired(required = true)
|
@Autowired(required = true)
|
||||||
@@ -125,7 +125,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
@Autowired(required = true)
|
@Autowired(required = true)
|
||||||
protected ConfigurationService configurationService;
|
protected ConfigurationService configurationService;
|
||||||
|
|
||||||
protected XmlWorkflowServiceImpl() {
|
protected WorkflowServiceImpl() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,7 +133,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
@Override
|
@Override
|
||||||
public void deleteCollection(Context context, Collection collection)
|
public void deleteCollection(Context context, Collection collection)
|
||||||
throws SQLException, IOException, AuthorizeException {
|
throws SQLException, IOException, AuthorizeException {
|
||||||
xmlWorkflowItemService.deleteByCollection(context, collection);
|
workflowItemService.deleteByCollection(context, collection);
|
||||||
collectionRoleService.deleteByCollection(context, collection);
|
collectionRoleService.deleteByCollection(context, collection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -194,18 +194,18 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public XmlWorkflowItem start(Context context, WorkspaceItem wsi)
|
public WorkflowItem start(Context context, WorkspaceItem wsi)
|
||||||
throws SQLException, AuthorizeException, IOException, WorkflowException {
|
throws SQLException, AuthorizeException, IOException, WorkflowException {
|
||||||
try {
|
try {
|
||||||
Item myitem = wsi.getItem();
|
Item myitem = wsi.getItem();
|
||||||
Collection collection = wsi.getCollection();
|
Collection collection = wsi.getCollection();
|
||||||
Workflow wf = xmlWorkflowFactory.getWorkflow(collection);
|
Workflow wf = xmlWorkflowFactory.getWorkflow(collection);
|
||||||
|
|
||||||
XmlWorkflowItem wfi = xmlWorkflowItemService.create(context, myitem, collection);
|
WorkflowItem wfi = workflowItemService.create(context, myitem, collection);
|
||||||
wfi.setMultipleFiles(wsi.hasMultipleFiles());
|
wfi.setMultipleFiles(wsi.hasMultipleFiles());
|
||||||
wfi.setMultipleTitles(wsi.hasMultipleTitles());
|
wfi.setMultipleTitles(wsi.hasMultipleTitles());
|
||||||
wfi.setPublishedBefore(wsi.isPublishedBefore());
|
wfi.setPublishedBefore(wsi.isPublishedBefore());
|
||||||
xmlWorkflowItemService.update(context, wfi);
|
workflowItemService.update(context, wfi);
|
||||||
removeUserItemPolicies(context, myitem, myitem.getSubmitter());
|
removeUserItemPolicies(context, myitem, myitem.getSubmitter());
|
||||||
grantSubmitterReadPolicies(context, myitem);
|
grantSubmitterReadPolicies(context, myitem);
|
||||||
|
|
||||||
@@ -244,7 +244,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
* @param wsi the submitted Item entering workflow.
|
* @param wsi the submitted Item entering workflow.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public XmlWorkflowItem startWithoutNotify(Context context, WorkspaceItem wsi)
|
public WorkflowItem startWithoutNotify(Context context, WorkspaceItem wsi)
|
||||||
throws SQLException, AuthorizeException, IOException, WorkflowException {
|
throws SQLException, AuthorizeException, IOException, WorkflowException {
|
||||||
// make a hash table entry with item ID for no notify
|
// make a hash table entry with item ID for no notify
|
||||||
// notify code checks no notify hash for item id
|
// notify code checks no notify hash for item id
|
||||||
@@ -254,7 +254,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void alertUsersOnTaskActivation(Context c, XmlWorkflowItem wfi, String emailTemplate, List<EPerson> epa,
|
public void alertUsersOnTaskActivation(Context c, WorkflowItem wfi, String emailTemplate, List<EPerson> epa,
|
||||||
String... arguments) throws IOException, SQLException, MessagingException {
|
String... arguments) throws IOException, SQLException, MessagingException {
|
||||||
if (noEMail.containsKey(wfi.getItem().getID())) {
|
if (noEMail.containsKey(wfi.getItem().getID())) {
|
||||||
// suppress email, and delete key
|
// suppress email, and delete key
|
||||||
@@ -292,7 +292,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected void activateFirstStep(Context context, Workflow wf, Step firstStep, XmlWorkflowItem wfi)
|
protected void activateFirstStep(Context context, Workflow wf, Step firstStep, WorkflowItem wfi)
|
||||||
throws AuthorizeException, IOException, SQLException, WorkflowException, WorkflowConfigurationException {
|
throws AuthorizeException, IOException, SQLException, WorkflowException, WorkflowConfigurationException {
|
||||||
WorkflowActionConfig firstActionConfig = firstStep.getUserSelectionMethod();
|
WorkflowActionConfig firstActionConfig = firstStep.getUserSelectionMethod();
|
||||||
firstActionConfig.getProcessingAction().activate(context, wfi);
|
firstActionConfig.getProcessingAction().activate(context, wfi);
|
||||||
@@ -322,7 +322,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
Workflow workflow, WorkflowActionConfig currentActionConfig)
|
Workflow workflow, WorkflowActionConfig currentActionConfig)
|
||||||
throws SQLException, AuthorizeException, IOException, WorkflowException {
|
throws SQLException, AuthorizeException, IOException, WorkflowException {
|
||||||
try {
|
try {
|
||||||
XmlWorkflowItem wi = xmlWorkflowItemService.find(c, workflowItemId);
|
WorkflowItem wi = workflowItemService.find(c, workflowItemId);
|
||||||
Step currentStep = currentActionConfig.getStep();
|
Step currentStep = currentActionConfig.getStep();
|
||||||
if (currentActionConfig.getProcessingAction().isAuthorized(c, request, wi)) {
|
if (currentActionConfig.getProcessingAction().isAuthorized(c, request, wi)) {
|
||||||
ActionResult outcome = currentActionConfig.getProcessingAction().execute(c, wi, currentStep, request);
|
ActionResult outcome = currentActionConfig.getProcessingAction().execute(c, wi, currentStep, request);
|
||||||
@@ -349,7 +349,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
@Override
|
@Override
|
||||||
public WorkflowActionConfig processOutcome(Context c, EPerson user, Workflow workflow, Step currentStep,
|
public WorkflowActionConfig processOutcome(Context c, EPerson user, Workflow workflow, Step currentStep,
|
||||||
WorkflowActionConfig currentActionConfig, ActionResult currentOutcome,
|
WorkflowActionConfig currentActionConfig, ActionResult currentOutcome,
|
||||||
XmlWorkflowItem wfi, boolean enteredNewStep)
|
WorkflowItem wfi, boolean enteredNewStep)
|
||||||
throws IOException, AuthorizeException, SQLException, WorkflowException {
|
throws IOException, AuthorizeException, SQLException, WorkflowException {
|
||||||
if (currentOutcome.getType() == ActionResult.TYPE.TYPE_PAGE || currentOutcome
|
if (currentOutcome.getType() == ActionResult.TYPE.TYPE_PAGE || currentOutcome
|
||||||
.getType() == ActionResult.TYPE.TYPE_ERROR) {
|
.getType() == ActionResult.TYPE.TYPE_ERROR) {
|
||||||
@@ -460,7 +460,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void logWorkflowEvent(Context c, String workflowId, String previousStepId, String previousActionConfigId,
|
protected void logWorkflowEvent(Context c, String workflowId, String previousStepId, String previousActionConfigId,
|
||||||
XmlWorkflowItem wfi, EPerson actor, Step newStep,
|
WorkflowItem wfi, EPerson actor, Step newStep,
|
||||||
WorkflowActionConfig newActionConfig) throws SQLException {
|
WorkflowActionConfig newActionConfig) throws SQLException {
|
||||||
try {
|
try {
|
||||||
//Fire an event so we can log our action !
|
//Fire an event so we can log our action !
|
||||||
@@ -510,7 +510,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected WorkflowActionConfig processNextStep(Context c, EPerson user, Workflow workflow,
|
protected WorkflowActionConfig processNextStep(Context c, EPerson user, Workflow workflow,
|
||||||
ActionResult currentOutcome, XmlWorkflowItem wfi, Step nextStep)
|
ActionResult currentOutcome, WorkflowItem wfi, Step nextStep)
|
||||||
throws SQLException, IOException, AuthorizeException, WorkflowException, WorkflowConfigurationException {
|
throws SQLException, IOException, AuthorizeException, WorkflowException, WorkflowConfigurationException {
|
||||||
WorkflowActionConfig nextActionConfig;
|
WorkflowActionConfig nextActionConfig;
|
||||||
if (nextStep != null) {
|
if (nextStep != null) {
|
||||||
@@ -552,7 +552,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
* @throws AuthorizeException Exception indicating the current user of the context does not have permission
|
* @throws AuthorizeException Exception indicating the current user of the context does not have permission
|
||||||
* to perform a particular action.
|
* to perform a particular action.
|
||||||
*/
|
*/
|
||||||
protected Item archive(Context context, XmlWorkflowItem wfi)
|
protected Item archive(Context context, WorkflowItem wfi)
|
||||||
throws SQLException, IOException, AuthorizeException {
|
throws SQLException, IOException, AuthorizeException {
|
||||||
// FIXME: Check auth
|
// FIXME: Check auth
|
||||||
Item item = wfi.getItem();
|
Item item = wfi.getItem();
|
||||||
@@ -644,7 +644,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
* to perform a particular action.
|
* to perform a particular action.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void deleteAllTasks(Context context, XmlWorkflowItem wi) throws SQLException, AuthorizeException {
|
public void deleteAllTasks(Context context, WorkflowItem wi) throws SQLException, AuthorizeException {
|
||||||
deleteAllPooledTasks(context, wi);
|
deleteAllPooledTasks(context, wi);
|
||||||
|
|
||||||
Iterator<ClaimedTask> allClaimedTasks = claimedTaskService.findByWorkflowItem(context, wi).iterator();
|
Iterator<ClaimedTask> allClaimedTasks = claimedTaskService.findByWorkflowItem(context, wi).iterator();
|
||||||
@@ -656,7 +656,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteAllPooledTasks(Context context, XmlWorkflowItem wi) throws SQLException, AuthorizeException {
|
public void deleteAllPooledTasks(Context context, WorkflowItem wi) throws SQLException, AuthorizeException {
|
||||||
Iterator<PoolTask> allPooledTasks = poolTaskService.find(context, wi).iterator();
|
Iterator<PoolTask> allPooledTasks = poolTaskService.find(context, wi).iterator();
|
||||||
while (allPooledTasks.hasNext()) {
|
while (allPooledTasks.hasNext()) {
|
||||||
PoolTask poolTask = allPooledTasks.next();
|
PoolTask poolTask = allPooledTasks.next();
|
||||||
@@ -669,7 +669,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
* Deletes an eperson from the taskpool of a step
|
* Deletes an eperson from the taskpool of a step
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void deletePooledTask(Context context, XmlWorkflowItem wi, PoolTask task)
|
public void deletePooledTask(Context context, WorkflowItem wi, PoolTask task)
|
||||||
throws SQLException, AuthorizeException {
|
throws SQLException, AuthorizeException {
|
||||||
if (task != null) {
|
if (task != null) {
|
||||||
if (task.getEperson() != null) {
|
if (task.getEperson() != null) {
|
||||||
@@ -682,7 +682,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteClaimedTask(Context c, XmlWorkflowItem wi, ClaimedTask task)
|
public void deleteClaimedTask(Context c, WorkflowItem wi, ClaimedTask task)
|
||||||
throws SQLException, AuthorizeException {
|
throws SQLException, AuthorizeException {
|
||||||
if (task != null) {
|
if (task != null) {
|
||||||
removeUserItemPolicies(c, wi.getItem(), task.getOwner());
|
removeUserItemPolicies(c, wi.getItem(), task.getOwner());
|
||||||
@@ -696,7 +696,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
* Creates a task pool for a given step
|
* Creates a task pool for a given step
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void createPoolTasks(Context context, XmlWorkflowItem wi, RoleMembers assignees, Step step,
|
public void createPoolTasks(Context context, WorkflowItem wi, RoleMembers assignees, Step step,
|
||||||
WorkflowActionConfig action)
|
WorkflowActionConfig action)
|
||||||
throws SQLException, AuthorizeException {
|
throws SQLException, AuthorizeException {
|
||||||
// create a tasklist entry for each eperson
|
// create a tasklist entry for each eperson
|
||||||
@@ -728,7 +728,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
* Claims an action for a given eperson
|
* Claims an action for a given eperson
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void createOwnedTask(Context context, XmlWorkflowItem wi, Step step, WorkflowActionConfig action, EPerson e)
|
public void createOwnedTask(Context context, WorkflowItem wi, Step step, WorkflowActionConfig action, EPerson e)
|
||||||
throws SQLException, AuthorizeException {
|
throws SQLException, AuthorizeException {
|
||||||
ClaimedTask task = claimedTaskService.create(context);
|
ClaimedTask task = claimedTaskService.create(context);
|
||||||
task.setWorkflowItem(wi);
|
task.setWorkflowItem(wi);
|
||||||
@@ -875,7 +875,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteWorkflowByWorkflowItem(Context context, XmlWorkflowItem wi, EPerson e)
|
public void deleteWorkflowByWorkflowItem(Context context, WorkflowItem wi, EPerson e)
|
||||||
throws SQLException, AuthorizeException, IOException {
|
throws SQLException, AuthorizeException, IOException {
|
||||||
Item myitem = wi.getItem();
|
Item myitem = wi.getItem();
|
||||||
UUID itemID = myitem.getID();
|
UUID itemID = myitem.getID();
|
||||||
@@ -889,7 +889,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
// Remove (if any) the workflowItemroles for this item
|
// Remove (if any) the workflowItemroles for this item
|
||||||
workflowItemRoleService.deleteForWorkflowItem(context, wi);
|
workflowItemRoleService.deleteForWorkflowItem(context, wi);
|
||||||
// Now remove the workflow object manually from the database
|
// Now remove the workflow object manually from the database
|
||||||
xmlWorkflowItemService.deleteWrapper(context, wi);
|
workflowItemService.deleteWrapper(context, wi);
|
||||||
// Now delete the item
|
// Now delete the item
|
||||||
itemService.delete(context, myitem);
|
itemService.delete(context, myitem);
|
||||||
log.info(LogManager.getHeader(context, "delete_workflow", "workflow_item_id="
|
log.info(LogManager.getHeader(context, "delete_workflow", "workflow_item_id="
|
||||||
@@ -900,9 +900,9 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkspaceItem sendWorkflowItemBackSubmission(Context context, XmlWorkflowItem wi, EPerson e,
|
public WorkspaceItem sendWorkflowItemBackSubmission(Context context, WorkflowItem wi, EPerson e,
|
||||||
String provenance,
|
String provenance,
|
||||||
String rejection_message)
|
String rejection_message)
|
||||||
throws SQLException, AuthorizeException,
|
throws SQLException, AuthorizeException,
|
||||||
IOException {
|
IOException {
|
||||||
|
|
||||||
@@ -962,7 +962,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WorkspaceItem abort(Context c, XmlWorkflowItem wi, EPerson e)
|
public WorkspaceItem abort(Context c, WorkflowItem wi, EPerson e)
|
||||||
throws AuthorizeException, SQLException, IOException {
|
throws AuthorizeException, SQLException, IOException {
|
||||||
if (!authorizeService.isAdmin(c)) {
|
if (!authorizeService.isAdmin(c)) {
|
||||||
throw new AuthorizeException(
|
throw new AuthorizeException(
|
||||||
@@ -991,13 +991,13 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
* item is removed, and a workspace item created.
|
* item is removed, and a workspace item created.
|
||||||
*
|
*
|
||||||
* @param c Context
|
* @param c Context
|
||||||
* @param wfi WorkflowItem to be 'dismantled'
|
* @param wfi workflow item to be 'dismantled'
|
||||||
* @return the workspace item
|
* @return the workspace item
|
||||||
* @throws java.io.IOException ...
|
* @throws java.io.IOException ...
|
||||||
* @throws java.sql.SQLException ...
|
* @throws java.sql.SQLException ...
|
||||||
* @throws org.dspace.authorize.AuthorizeException ...
|
* @throws org.dspace.authorize.AuthorizeException ...
|
||||||
*/
|
*/
|
||||||
protected WorkspaceItem returnToWorkspace(Context c, XmlWorkflowItem wfi)
|
protected WorkspaceItem returnToWorkspace(Context c, WorkflowItem wfi)
|
||||||
throws SQLException, IOException, AuthorizeException {
|
throws SQLException, IOException, AuthorizeException {
|
||||||
// authorize a DSpaceActions.REJECT
|
// authorize a DSpaceActions.REJECT
|
||||||
// stop workflow
|
// stop workflow
|
||||||
@@ -1030,7 +1030,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
+ workspaceItem.getID()));
|
+ workspaceItem.getID()));
|
||||||
|
|
||||||
// Now remove the workflow object manually from the database
|
// Now remove the workflow object manually from the database
|
||||||
xmlWorkflowItemService.deleteWrapper(c, wfi);
|
workflowItemService.deleteWrapper(c, wfi);
|
||||||
return workspaceItem;
|
return workspaceItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1072,7 +1072,7 @@ public class XmlWorkflowServiceImpl implements XmlWorkflowService {
|
|||||||
itemService.update(context, myitem);
|
itemService.update(context, myitem);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void notifyOfReject(Context c, XmlWorkflowItem wi, EPerson e,
|
protected void notifyOfReject(Context c, WorkflowItem wi, EPerson e,
|
||||||
String reason) {
|
String reason) {
|
||||||
try {
|
try {
|
||||||
// send the notification only if the person was not deleted in the
|
// send the notification only if the person was not deleted in the
|
@@ -32,8 +32,8 @@ import org.dspace.eperson.factory.EPersonServiceFactory;
|
|||||||
import org.dspace.eperson.service.GroupService;
|
import org.dspace.eperson.service.GroupService;
|
||||||
import org.dspace.services.ConfigurationService;
|
import org.dspace.services.ConfigurationService;
|
||||||
import org.dspace.services.factory.DSpaceServicesFactory;
|
import org.dspace.services.factory.DSpaceServicesFactory;
|
||||||
|
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
||||||
import org.dspace.xmlworkflow.factory.XmlWorkflowFactory;
|
import org.dspace.xmlworkflow.factory.XmlWorkflowFactory;
|
||||||
import org.dspace.xmlworkflow.factory.XmlWorkflowServiceFactory;
|
|
||||||
import org.dspace.xmlworkflow.state.Workflow;
|
import org.dspace.xmlworkflow.state.Workflow;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.CollectionRole;
|
import org.dspace.xmlworkflow.storedcomponents.CollectionRole;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.CollectionRoleService;
|
import org.dspace.xmlworkflow.storedcomponents.service.CollectionRoleService;
|
||||||
@@ -53,9 +53,9 @@ public class WorkflowUtils extends Util {
|
|||||||
public static Logger log = LogManager.getLogger(WorkflowUtils.class);
|
public static Logger log = LogManager.getLogger(WorkflowUtils.class);
|
||||||
|
|
||||||
protected static final CollectionRoleService collectionRoleService =
|
protected static final CollectionRoleService collectionRoleService =
|
||||||
XmlWorkflowServiceFactory.getInstance().getCollectionRoleService();
|
WorkflowServiceFactory.getInstance().getCollectionRoleService();
|
||||||
protected static final GroupService groupService = EPersonServiceFactory.getInstance().getGroupService();
|
protected static final GroupService groupService = EPersonServiceFactory.getInstance().getGroupService();
|
||||||
protected static final XmlWorkflowFactory xmlWorkflowFactory = XmlWorkflowServiceFactory.getInstance()
|
protected static final XmlWorkflowFactory xmlWorkflowFactory = WorkflowServiceFactory.getInstance()
|
||||||
.getWorkflowFactory();
|
.getWorkflowFactory();
|
||||||
protected static final ConfigurationService configurationService
|
protected static final ConfigurationService configurationService
|
||||||
= DSpaceServicesFactory.getInstance().getConfigurationService();
|
= DSpaceServicesFactory.getInstance().getConfigurationService();
|
||||||
|
@@ -1,51 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.xmlworkflow.factory;
|
|
||||||
|
|
||||||
import org.dspace.services.factory.DSpaceServicesFactory;
|
|
||||||
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
|
||||||
import org.dspace.xmlworkflow.service.WorkflowRequirementsService;
|
|
||||||
import org.dspace.xmlworkflow.service.XmlWorkflowService;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.CollectionRoleService;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.InProgressUserService;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.WorkflowItemRoleService;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.XmlWorkflowItemService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Abstract factory to get services for the xmlworkflow package, use XmlWorkflowServiceFactory.getInstance() to
|
|
||||||
* retrieve an implementation
|
|
||||||
*
|
|
||||||
* @author kevinvandevelde at atmire.com
|
|
||||||
*/
|
|
||||||
public abstract class XmlWorkflowServiceFactory extends WorkflowServiceFactory {
|
|
||||||
|
|
||||||
public abstract XmlWorkflowFactory getWorkflowFactory();
|
|
||||||
|
|
||||||
public abstract WorkflowRequirementsService getWorkflowRequirementsService();
|
|
||||||
|
|
||||||
public abstract XmlWorkflowService getXmlWorkflowService();
|
|
||||||
|
|
||||||
public abstract ClaimedTaskService getClaimedTaskService();
|
|
||||||
|
|
||||||
public abstract CollectionRoleService getCollectionRoleService();
|
|
||||||
|
|
||||||
public abstract InProgressUserService getInProgressUserService();
|
|
||||||
|
|
||||||
public abstract PoolTaskService getPoolTaskService();
|
|
||||||
|
|
||||||
public abstract WorkflowItemRoleService getWorkflowItemRoleService();
|
|
||||||
|
|
||||||
public abstract XmlWorkflowItemService getXmlWorkflowItemService();
|
|
||||||
|
|
||||||
public static XmlWorkflowServiceFactory getInstance() {
|
|
||||||
return DSpaceServicesFactory.getInstance().getServiceManager()
|
|
||||||
.getServiceByName("workflowServiceFactory", XmlWorkflowServiceFactory.class);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -13,9 +13,9 @@ import java.sql.SQLException;
|
|||||||
import org.dspace.authorize.AuthorizeException;
|
import org.dspace.authorize.AuthorizeException;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
||||||
import org.dspace.xmlworkflow.state.Step;
|
import org.dspace.xmlworkflow.state.Step;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A class that contains utililty methods related to the workflow
|
* A class that contains utililty methods related to the workflow
|
||||||
@@ -46,10 +46,10 @@ public interface WorkflowRequirementsService {
|
|||||||
* @throws AuthorizeException ...
|
* @throws AuthorizeException ...
|
||||||
* @throws IOException ...
|
* @throws IOException ...
|
||||||
*/
|
*/
|
||||||
public void addClaimedUser(Context context, XmlWorkflowItem wfi, Step step, EPerson user)
|
public void addClaimedUser(Context context, WorkflowItem wfi, Step step, EPerson user)
|
||||||
throws SQLException, AuthorizeException, IOException;
|
throws SQLException, AuthorizeException, IOException;
|
||||||
|
|
||||||
public void removeClaimedUser(Context context, XmlWorkflowItem wfi, EPerson user, String stepID)
|
public void removeClaimedUser(Context context, WorkflowItem wfi, EPerson user, String stepID)
|
||||||
throws SQLException, IOException, WorkflowConfigurationException, AuthorizeException;
|
throws SQLException, IOException, WorkflowConfigurationException, AuthorizeException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -62,8 +62,8 @@ public interface WorkflowRequirementsService {
|
|||||||
* @throws AuthorizeException ...
|
* @throws AuthorizeException ...
|
||||||
* @throws SQLException ...
|
* @throws SQLException ...
|
||||||
*/
|
*/
|
||||||
public void addFinishedUser(Context context, XmlWorkflowItem wfi, EPerson user)
|
public void addFinishedUser(Context context, WorkflowItem wfi, EPerson user)
|
||||||
throws AuthorizeException, SQLException;
|
throws AuthorizeException, SQLException;
|
||||||
|
|
||||||
public void clearInProgressUsers(Context context, XmlWorkflowItem wfi) throws AuthorizeException, SQLException;
|
public void clearInProgressUsers(Context context, WorkflowItem wfi) throws AuthorizeException, SQLException;
|
||||||
}
|
}
|
||||||
|
@@ -1,79 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.xmlworkflow.service;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.List;
|
|
||||||
import javax.mail.MessagingException;
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
|
|
||||||
import org.dspace.authorize.AuthorizeException;
|
|
||||||
import org.dspace.content.Item;
|
|
||||||
import org.dspace.core.Context;
|
|
||||||
import org.dspace.eperson.EPerson;
|
|
||||||
import org.dspace.workflow.WorkflowException;
|
|
||||||
import org.dspace.workflow.WorkflowService;
|
|
||||||
import org.dspace.xmlworkflow.RoleMembers;
|
|
||||||
import org.dspace.xmlworkflow.state.Step;
|
|
||||||
import org.dspace.xmlworkflow.state.Workflow;
|
|
||||||
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
|
||||||
import org.dspace.xmlworkflow.state.actions.WorkflowActionConfig;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.ClaimedTask;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.PoolTask;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* When an item is submitted and is somewhere in a workflow, it has a row in the
|
|
||||||
* WorkflowItem table pointing to it.
|
|
||||||
*
|
|
||||||
* Once the item has completed the workflow it will be archived
|
|
||||||
*
|
|
||||||
* @author Bram De Schouwer (bram.deschouwer at dot com)
|
|
||||||
* @author Kevin Van de Velde (kevin at atmire dot com)
|
|
||||||
* @author Ben Bosman (ben at atmire dot com)
|
|
||||||
* @author Mark Diggory (markd at atmire dot com)
|
|
||||||
*/
|
|
||||||
public interface XmlWorkflowService extends WorkflowService<XmlWorkflowItem> {
|
|
||||||
|
|
||||||
public void alertUsersOnTaskActivation(Context c, XmlWorkflowItem wfi, String emailTemplate, List<EPerson> epa,
|
|
||||||
String... arguments) throws IOException, SQLException, MessagingException;
|
|
||||||
|
|
||||||
public WorkflowActionConfig doState(Context c, EPerson user, HttpServletRequest request, int workflowItemId,
|
|
||||||
Workflow workflow, WorkflowActionConfig currentActionConfig)
|
|
||||||
throws SQLException, AuthorizeException, IOException, MessagingException, WorkflowException;
|
|
||||||
|
|
||||||
public WorkflowActionConfig processOutcome(Context c, EPerson user, Workflow workflow, Step currentStep,
|
|
||||||
WorkflowActionConfig currentActionConfig, ActionResult currentOutcome,
|
|
||||||
XmlWorkflowItem wfi, boolean enteredNewStep)
|
|
||||||
throws IOException, AuthorizeException, SQLException, WorkflowException;
|
|
||||||
|
|
||||||
public void deleteAllTasks(Context context, XmlWorkflowItem wi) throws SQLException, AuthorizeException;
|
|
||||||
|
|
||||||
public void deleteAllPooledTasks(Context c, XmlWorkflowItem wi) throws SQLException, AuthorizeException;
|
|
||||||
|
|
||||||
public void deletePooledTask(Context context, XmlWorkflowItem wi, PoolTask task)
|
|
||||||
throws SQLException, AuthorizeException;
|
|
||||||
|
|
||||||
public void deleteClaimedTask(Context c, XmlWorkflowItem wi, ClaimedTask task)
|
|
||||||
throws SQLException, AuthorizeException;
|
|
||||||
|
|
||||||
public void createPoolTasks(Context context, XmlWorkflowItem wi, RoleMembers assignees, Step step,
|
|
||||||
WorkflowActionConfig action)
|
|
||||||
throws SQLException, AuthorizeException;
|
|
||||||
|
|
||||||
public void createOwnedTask(Context context, XmlWorkflowItem wi, Step step, WorkflowActionConfig action, EPerson e)
|
|
||||||
throws SQLException, AuthorizeException;
|
|
||||||
|
|
||||||
public void grantUserAllItemPolicies(Context context, Item item, EPerson epa, String actionType)
|
|
||||||
throws AuthorizeException, SQLException;
|
|
||||||
|
|
||||||
public void removeUserItemPolicies(Context context, Item item, EPerson e) throws SQLException, AuthorizeException;
|
|
||||||
|
|
||||||
public String getEPersonName(EPerson ePerson);
|
|
||||||
}
|
|
@@ -14,11 +14,11 @@ import java.util.Map;
|
|||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.Role;
|
import org.dspace.xmlworkflow.Role;
|
||||||
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
||||||
import org.dspace.xmlworkflow.state.actions.UserSelectionActionConfig;
|
import org.dspace.xmlworkflow.state.actions.UserSelectionActionConfig;
|
||||||
import org.dspace.xmlworkflow.state.actions.WorkflowActionConfig;
|
import org.dspace.xmlworkflow.state.actions.WorkflowActionConfig;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.InProgressUserService;
|
import org.dspace.xmlworkflow.storedcomponents.service.InProgressUserService;
|
||||||
import org.springframework.beans.factory.BeanNameAware;
|
import org.springframework.beans.factory.BeanNameAware;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -87,7 +87,7 @@ public class Step implements BeanNameAware {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public boolean isValidStep(Context context, XmlWorkflowItem wfi)
|
public boolean isValidStep(Context context, WorkflowItem wfi)
|
||||||
throws WorkflowConfigurationException, SQLException {
|
throws WorkflowConfigurationException, SQLException {
|
||||||
//Check if our next step has a UI, if not then the step is valid, no need for a group
|
//Check if our next step has a UI, if not then the step is valid, no need for a group
|
||||||
return !(getUserSelectionMethod() == null || getUserSelectionMethod()
|
return !(getUserSelectionMethod() == null || getUserSelectionMethod()
|
||||||
@@ -125,7 +125,7 @@ public class Step implements BeanNameAware {
|
|||||||
* @return if enough users have finished this task
|
* @return if enough users have finished this task
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
* @throws SQLException An exception that provides information on a database access error or other errors.
|
||||||
*/
|
*/
|
||||||
public boolean isFinished(Context c, XmlWorkflowItem wfi) throws SQLException {
|
public boolean isFinished(Context c, WorkflowItem wfi) throws SQLException {
|
||||||
return inProgressUserService.getNumberOfFinishedUsers(c, wfi) == requiredUsers;
|
return inProgressUserService.getNumberOfFinishedUsers(c, wfi) == requiredUsers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -13,10 +13,10 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.Role;
|
import org.dspace.xmlworkflow.Role;
|
||||||
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
||||||
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
import org.springframework.beans.factory.BeanNameAware;
|
import org.springframework.beans.factory.BeanNameAware;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
@@ -55,7 +55,7 @@ public class Workflow implements BeanNameAware {
|
|||||||
throw new WorkflowConfigurationException("Step definition not found for: " + stepID);
|
throw new WorkflowConfigurationException("Step definition not found for: " + stepID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Step getNextStep(Context context, XmlWorkflowItem wfi, Step currentStep, int outcome)
|
public Step getNextStep(Context context, WorkflowItem wfi, Step currentStep, int outcome)
|
||||||
throws WorkflowConfigurationException, SQLException {
|
throws WorkflowConfigurationException, SQLException {
|
||||||
Step nextStep = currentStep.getNextStep(outcome);
|
Step nextStep = currentStep.getNextStep(outcome);
|
||||||
if (nextStep != null) {
|
if (nextStep != null) {
|
||||||
|
@@ -16,10 +16,10 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
import org.dspace.authorize.AuthorizeException;
|
import org.dspace.authorize.AuthorizeException;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.workflow.WorkflowException;
|
import org.dspace.workflow.WorkflowException;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.RoleMembers;
|
import org.dspace.xmlworkflow.RoleMembers;
|
||||||
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
||||||
import org.dspace.xmlworkflow.state.Step;
|
import org.dspace.xmlworkflow.state.Step;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This abstract class represents an api action
|
* This abstract class represents an api action
|
||||||
@@ -38,10 +38,10 @@ public abstract class Action {
|
|||||||
private WorkflowActionConfig parent;
|
private WorkflowActionConfig parent;
|
||||||
private static final String ERROR_FIELDS_ATTRIBUTE = "dspace.workflow.error_fields";
|
private static final String ERROR_FIELDS_ATTRIBUTE = "dspace.workflow.error_fields";
|
||||||
|
|
||||||
public abstract void activate(Context c, XmlWorkflowItem wf)
|
public abstract void activate(Context c, WorkflowItem wf)
|
||||||
throws SQLException, IOException, AuthorizeException, WorkflowException;
|
throws SQLException, IOException, AuthorizeException, WorkflowException;
|
||||||
|
|
||||||
public abstract ActionResult execute(Context c, XmlWorkflowItem wfi, Step step, HttpServletRequest request)
|
public abstract ActionResult execute(Context c, WorkflowItem wfi, Step step, HttpServletRequest request)
|
||||||
throws SQLException, AuthorizeException, IOException, WorkflowException;
|
throws SQLException, AuthorizeException, IOException, WorkflowException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -76,12 +76,12 @@ public abstract class Action {
|
|||||||
return "Step: " + getParent().getStep().getId() + " - action:" + getParent().getId();
|
return "Step: " + getParent().getStep().getId() + " - action:" + getParent().getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void alertUsersOnActivation(Context c, XmlWorkflowItem wfi, RoleMembers members)
|
public void alertUsersOnActivation(Context c, WorkflowItem wfi, RoleMembers members)
|
||||||
throws SQLException, IOException {
|
throws SQLException, IOException {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract boolean isAuthorized(Context context, HttpServletRequest request, XmlWorkflowItem wfi)
|
public abstract boolean isAuthorized(Context context, HttpServletRequest request, WorkflowItem wfi)
|
||||||
throws SQLException, AuthorizeException, IOException, WorkflowConfigurationException;
|
throws SQLException, AuthorizeException, IOException, WorkflowConfigurationException;
|
||||||
|
|
||||||
|
|
||||||
|
@@ -18,10 +18,10 @@ import org.dspace.authorize.AuthorizeException;
|
|||||||
import org.dspace.content.DCDate;
|
import org.dspace.content.DCDate;
|
||||||
import org.dspace.content.MetadataSchemaEnum;
|
import org.dspace.content.MetadataSchemaEnum;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.xmlworkflow.factory.XmlWorkflowServiceFactory;
|
import org.dspace.workflow.WorkflowItem;
|
||||||
|
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
||||||
import org.dspace.xmlworkflow.state.Step;
|
import org.dspace.xmlworkflow.state.Step;
|
||||||
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Processing class of an action that allows users to
|
* Processing class of an action that allows users to
|
||||||
@@ -41,12 +41,12 @@ public class AcceptEditRejectAction extends ProcessingAction {
|
|||||||
//TODO: rename to AcceptAndEditMetadataAction
|
//TODO: rename to AcceptAndEditMetadataAction
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void activate(Context c, XmlWorkflowItem wf) {
|
public void activate(Context c, WorkflowItem wf) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionResult execute(Context c, XmlWorkflowItem wfi, Step step, HttpServletRequest request)
|
public ActionResult execute(Context c, WorkflowItem wfi, Step step, HttpServletRequest request)
|
||||||
throws SQLException, AuthorizeException, IOException {
|
throws SQLException, AuthorizeException, IOException {
|
||||||
if (super.isOptionInParam(request)) {
|
if (super.isOptionInParam(request)) {
|
||||||
switch (Util.getSubmitButton(request, SUBMIT_CANCEL)) {
|
switch (Util.getSubmitButton(request, SUBMIT_CANCEL)) {
|
||||||
@@ -72,7 +72,7 @@ public class AcceptEditRejectAction extends ProcessingAction {
|
|||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionResult processAccept(Context c, XmlWorkflowItem wfi)
|
public ActionResult processAccept(Context c, WorkflowItem wfi)
|
||||||
throws SQLException, AuthorizeException {
|
throws SQLException, AuthorizeException {
|
||||||
//Delete the tasks
|
//Delete the tasks
|
||||||
addApprovedProvenance(c, wfi);
|
addApprovedProvenance(c, wfi);
|
||||||
@@ -80,7 +80,7 @@ public class AcceptEditRejectAction extends ProcessingAction {
|
|||||||
return new ActionResult(ActionResult.TYPE.TYPE_OUTCOME, ActionResult.OUTCOME_COMPLETE);
|
return new ActionResult(ActionResult.TYPE.TYPE_OUTCOME, ActionResult.OUTCOME_COMPLETE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionResult processRejectPage(Context c, XmlWorkflowItem wfi, HttpServletRequest request)
|
public ActionResult processRejectPage(Context c, WorkflowItem wfi, HttpServletRequest request)
|
||||||
throws SQLException, AuthorizeException, IOException {
|
throws SQLException, AuthorizeException, IOException {
|
||||||
String reason = request.getParameter("reason");
|
String reason = request.getParameter("reason");
|
||||||
if (reason == null || 0 == reason.trim().length()) {
|
if (reason == null || 0 == reason.trim().length()) {
|
||||||
@@ -90,16 +90,16 @@ public class AcceptEditRejectAction extends ProcessingAction {
|
|||||||
|
|
||||||
// We have pressed reject, so remove the task the user has & put it back
|
// We have pressed reject, so remove the task the user has & put it back
|
||||||
// to a workspace item
|
// to a workspace item
|
||||||
XmlWorkflowServiceFactory.getInstance().getXmlWorkflowService().sendWorkflowItemBackSubmission(c, wfi,
|
WorkflowServiceFactory.getInstance().getWorkflowService().sendWorkflowItemBackSubmission(c, wfi,
|
||||||
c.getCurrentUser(), this.getProvenanceStartId(), reason);
|
c.getCurrentUser(), this.getProvenanceStartId(), reason);
|
||||||
|
|
||||||
return new ActionResult(ActionResult.TYPE.TYPE_SUBMISSION_PAGE);
|
return new ActionResult(ActionResult.TYPE.TYPE_SUBMISSION_PAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionResult processSubmitterIsDeletedPage(Context c, XmlWorkflowItem wfi, HttpServletRequest request)
|
public ActionResult processSubmitterIsDeletedPage(Context c, WorkflowItem wfi, HttpServletRequest request)
|
||||||
throws SQLException, AuthorizeException, IOException {
|
throws SQLException, AuthorizeException, IOException {
|
||||||
if (request.getParameter("submit_delete") != null) {
|
if (request.getParameter("submit_delete") != null) {
|
||||||
XmlWorkflowServiceFactory.getInstance().getXmlWorkflowService()
|
WorkflowServiceFactory.getInstance().getWorkflowService()
|
||||||
.deleteWorkflowByWorkflowItem(c, wfi, c.getCurrentUser());
|
.deleteWorkflowByWorkflowItem(c, wfi, c.getCurrentUser());
|
||||||
// Delete and send user back to myDspace page
|
// Delete and send user back to myDspace page
|
||||||
return new ActionResult(ActionResult.TYPE.TYPE_SUBMISSION_PAGE);
|
return new ActionResult(ActionResult.TYPE.TYPE_SUBMISSION_PAGE);
|
||||||
@@ -112,12 +112,12 @@ public class AcceptEditRejectAction extends ProcessingAction {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addApprovedProvenance(Context c, XmlWorkflowItem wfi) throws SQLException, AuthorizeException {
|
private void addApprovedProvenance(Context c, WorkflowItem wfi) throws SQLException, AuthorizeException {
|
||||||
//Add the provenance for the accept
|
//Add the provenance for the accept
|
||||||
String now = DCDate.getCurrent().toString();
|
String now = DCDate.getCurrent().toString();
|
||||||
|
|
||||||
// Get user's name + email address
|
// Get user's name + email address
|
||||||
String usersName = XmlWorkflowServiceFactory.getInstance().getXmlWorkflowService()
|
String usersName = WorkflowServiceFactory.getInstance().getWorkflowService()
|
||||||
.getEPersonName(c.getCurrentUser());
|
.getEPersonName(c.getCurrentUser());
|
||||||
|
|
||||||
String provDescription = getProvenanceStartId() + " Approved for entry into archive by "
|
String provDescription = getProvenanceStartId() + " Approved for entry into archive by "
|
||||||
|
@@ -17,10 +17,10 @@ import org.dspace.authorize.AuthorizeException;
|
|||||||
import org.dspace.content.DCDate;
|
import org.dspace.content.DCDate;
|
||||||
import org.dspace.content.MetadataSchemaEnum;
|
import org.dspace.content.MetadataSchemaEnum;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.xmlworkflow.factory.XmlWorkflowServiceFactory;
|
import org.dspace.workflow.WorkflowItem;
|
||||||
|
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
||||||
import org.dspace.xmlworkflow.state.Step;
|
import org.dspace.xmlworkflow.state.Step;
|
||||||
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Processing class of an action that allows users to
|
* Processing class of an action that allows users to
|
||||||
@@ -36,17 +36,17 @@ public class FinalEditAction extends ProcessingAction {
|
|||||||
private static final String SUBMIT_APPROVE = "submit_approve";
|
private static final String SUBMIT_APPROVE = "submit_approve";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void activate(Context c, XmlWorkflowItem wf) {
|
public void activate(Context c, WorkflowItem wf) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionResult execute(Context c, XmlWorkflowItem wfi, Step step, HttpServletRequest request)
|
public ActionResult execute(Context c, WorkflowItem wfi, Step step, HttpServletRequest request)
|
||||||
throws SQLException, AuthorizeException {
|
throws SQLException, AuthorizeException {
|
||||||
return processMainPage(c, wfi, request);
|
return processMainPage(c, wfi, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionResult processMainPage(Context c, XmlWorkflowItem wfi, HttpServletRequest request)
|
public ActionResult processMainPage(Context c, WorkflowItem wfi, HttpServletRequest request)
|
||||||
throws SQLException, AuthorizeException {
|
throws SQLException, AuthorizeException {
|
||||||
if (super.isOptionInParam(request)) {
|
if (super.isOptionInParam(request)) {
|
||||||
switch (Util.getSubmitButton(request, SUBMIT_CANCEL)) {
|
switch (Util.getSubmitButton(request, SUBMIT_CANCEL)) {
|
||||||
@@ -70,12 +70,12 @@ public class FinalEditAction extends ProcessingAction {
|
|||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addApprovedProvenance(Context c, XmlWorkflowItem wfi) throws SQLException, AuthorizeException {
|
private void addApprovedProvenance(Context c, WorkflowItem wfi) throws SQLException, AuthorizeException {
|
||||||
//Add the provenance for the accept
|
//Add the provenance for the accept
|
||||||
String now = DCDate.getCurrent().toString();
|
String now = DCDate.getCurrent().toString();
|
||||||
|
|
||||||
// Get user's name + email address
|
// Get user's name + email address
|
||||||
String usersName = XmlWorkflowServiceFactory.getInstance().getXmlWorkflowService()
|
String usersName = WorkflowServiceFactory.getInstance().getWorkflowService()
|
||||||
.getEPersonName(c.getCurrentUser());
|
.getEPersonName(c.getCurrentUser());
|
||||||
|
|
||||||
String provDescription = getProvenanceStartId() + " Approved for entry into archive by "
|
String provDescription = getProvenanceStartId() + " Approved for entry into archive by "
|
||||||
|
@@ -12,9 +12,9 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
|
|
||||||
import org.dspace.content.service.ItemService;
|
import org.dspace.content.service.ItemService;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.state.actions.Action;
|
import org.dspace.xmlworkflow.state.actions.Action;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.ClaimedTask;
|
import org.dspace.xmlworkflow.storedcomponents.ClaimedTask;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ public abstract class ProcessingAction extends Action {
|
|||||||
public static final String SUBMIT_CANCEL = "submit_cancel";
|
public static final String SUBMIT_CANCEL = "submit_cancel";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAuthorized(Context context, HttpServletRequest request, XmlWorkflowItem wfi) throws SQLException {
|
public boolean isAuthorized(Context context, HttpServletRequest request, WorkflowItem wfi) throws SQLException {
|
||||||
ClaimedTask task = null;
|
ClaimedTask task = null;
|
||||||
if (context.getCurrentUser() != null) {
|
if (context.getCurrentUser() != null) {
|
||||||
task = claimedTaskService.findByWorkflowIdAndEPerson(context, wfi, context.getCurrentUser());
|
task = claimedTaskService.findByWorkflowIdAndEPerson(context, wfi, context.getCurrentUser());
|
||||||
|
@@ -18,10 +18,10 @@ import org.dspace.authorize.AuthorizeException;
|
|||||||
import org.dspace.content.DCDate;
|
import org.dspace.content.DCDate;
|
||||||
import org.dspace.content.MetadataSchemaEnum;
|
import org.dspace.content.MetadataSchemaEnum;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.xmlworkflow.factory.XmlWorkflowServiceFactory;
|
import org.dspace.workflow.WorkflowItem;
|
||||||
|
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
||||||
import org.dspace.xmlworkflow.state.Step;
|
import org.dspace.xmlworkflow.state.Step;
|
||||||
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Processing class of an accept/reject action
|
* Processing class of an accept/reject action
|
||||||
@@ -42,12 +42,12 @@ public class ReviewAction extends ProcessingAction {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void activate(Context c, XmlWorkflowItem wfItem) {
|
public void activate(Context c, WorkflowItem wfItem) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionResult execute(Context c, XmlWorkflowItem wfi, Step step, HttpServletRequest request)
|
public ActionResult execute(Context c, WorkflowItem wfi, Step step, HttpServletRequest request)
|
||||||
throws SQLException, AuthorizeException, IOException {
|
throws SQLException, AuthorizeException, IOException {
|
||||||
if (super.isOptionInParam(request)) {
|
if (super.isOptionInParam(request)) {
|
||||||
switch (Util.getSubmitButton(request, SUBMIT_CANCEL)) {
|
switch (Util.getSubmitButton(request, SUBMIT_CANCEL)) {
|
||||||
@@ -72,18 +72,18 @@ public class ReviewAction extends ProcessingAction {
|
|||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionResult processAccept(Context c, XmlWorkflowItem wfi) throws SQLException, AuthorizeException {
|
public ActionResult processAccept(Context c, WorkflowItem wfi) throws SQLException, AuthorizeException {
|
||||||
//Delete the tasks
|
//Delete the tasks
|
||||||
addApprovedProvenance(c, wfi);
|
addApprovedProvenance(c, wfi);
|
||||||
return new ActionResult(ActionResult.TYPE.TYPE_OUTCOME, ActionResult.OUTCOME_COMPLETE);
|
return new ActionResult(ActionResult.TYPE.TYPE_OUTCOME, ActionResult.OUTCOME_COMPLETE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addApprovedProvenance(Context c, XmlWorkflowItem wfi) throws SQLException, AuthorizeException {
|
private void addApprovedProvenance(Context c, WorkflowItem wfi) throws SQLException, AuthorizeException {
|
||||||
//Add the provenance for the accept
|
//Add the provenance for the accept
|
||||||
String now = DCDate.getCurrent().toString();
|
String now = DCDate.getCurrent().toString();
|
||||||
|
|
||||||
// Get user's name + email address
|
// Get user's name + email address
|
||||||
String usersName = XmlWorkflowServiceFactory.getInstance().getXmlWorkflowService()
|
String usersName = WorkflowServiceFactory.getInstance().getWorkflowService()
|
||||||
.getEPersonName(c.getCurrentUser());
|
.getEPersonName(c.getCurrentUser());
|
||||||
|
|
||||||
String provDescription = getProvenanceStartId() + " Approved for entry into archive by "
|
String provDescription = getProvenanceStartId() + " Approved for entry into archive by "
|
||||||
@@ -95,7 +95,7 @@ public class ReviewAction extends ProcessingAction {
|
|||||||
itemService.update(c, wfi.getItem());
|
itemService.update(c, wfi.getItem());
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionResult processRejectPage(Context c, XmlWorkflowItem wfi, Step step, HttpServletRequest request)
|
public ActionResult processRejectPage(Context c, WorkflowItem wfi, Step step, HttpServletRequest request)
|
||||||
throws SQLException, AuthorizeException, IOException {
|
throws SQLException, AuthorizeException, IOException {
|
||||||
String reason = request.getParameter("reason");
|
String reason = request.getParameter("reason");
|
||||||
if (reason == null || 0 == reason.trim().length()) {
|
if (reason == null || 0 == reason.trim().length()) {
|
||||||
@@ -105,7 +105,7 @@ public class ReviewAction extends ProcessingAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//We have pressed reject, so remove the task the user has & put it back to a workspace item
|
//We have pressed reject, so remove the task the user has & put it back to a workspace item
|
||||||
XmlWorkflowServiceFactory.getInstance().getXmlWorkflowService()
|
WorkflowServiceFactory.getInstance().getWorkflowService()
|
||||||
.sendWorkflowItemBackSubmission(c, wfi, c.getCurrentUser(),
|
.sendWorkflowItemBackSubmission(c, wfi, c.getCurrentUser(),
|
||||||
this.getProvenanceStartId(), reason);
|
this.getProvenanceStartId(), reason);
|
||||||
|
|
||||||
@@ -113,10 +113,10 @@ public class ReviewAction extends ProcessingAction {
|
|||||||
return new ActionResult(ActionResult.TYPE.TYPE_SUBMISSION_PAGE);
|
return new ActionResult(ActionResult.TYPE.TYPE_SUBMISSION_PAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionResult processSubmitterIsDeletedPage(Context c, XmlWorkflowItem wfi, HttpServletRequest request)
|
public ActionResult processSubmitterIsDeletedPage(Context c, WorkflowItem wfi, HttpServletRequest request)
|
||||||
throws SQLException, AuthorizeException, IOException {
|
throws SQLException, AuthorizeException, IOException {
|
||||||
if (request.getParameter("submit_delete") != null) {
|
if (request.getParameter("submit_delete") != null) {
|
||||||
XmlWorkflowServiceFactory.getInstance().getXmlWorkflowService()
|
WorkflowServiceFactory.getInstance().getWorkflowService()
|
||||||
.deleteWorkflowByWorkflowItem(c, wfi, c.getCurrentUser());
|
.deleteWorkflowByWorkflowItem(c, wfi, c.getCurrentUser());
|
||||||
// Delete and send user back to myDspace page
|
// Delete and send user back to myDspace page
|
||||||
return new ActionResult(ActionResult.TYPE.TYPE_SUBMISSION_PAGE);
|
return new ActionResult(ActionResult.TYPE.TYPE_SUBMISSION_PAGE);
|
||||||
|
@@ -18,11 +18,11 @@ import org.dspace.content.Item;
|
|||||||
import org.dspace.content.MetadataSchemaEnum;
|
import org.dspace.content.MetadataSchemaEnum;
|
||||||
import org.dspace.content.MetadataValue;
|
import org.dspace.content.MetadataValue;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.xmlworkflow.factory.XmlWorkflowServiceFactory;
|
import org.dspace.workflow.WorkflowItem;
|
||||||
|
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
||||||
import org.dspace.xmlworkflow.service.WorkflowRequirementsService;
|
import org.dspace.xmlworkflow.service.WorkflowRequirementsService;
|
||||||
import org.dspace.xmlworkflow.state.Step;
|
import org.dspace.xmlworkflow.state.Step;
|
||||||
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Processing class for the score evaluation action
|
* Processing class for the score evaluation action
|
||||||
@@ -40,12 +40,12 @@ public class ScoreEvaluationAction extends ProcessingAction {
|
|||||||
private int minimumAcceptanceScore;
|
private int minimumAcceptanceScore;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void activate(Context c, XmlWorkflowItem wf) {
|
public void activate(Context c, WorkflowItem wf) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionResult execute(Context c, XmlWorkflowItem wfi, Step step, HttpServletRequest request)
|
public ActionResult execute(Context c, WorkflowItem wfi, Step step, HttpServletRequest request)
|
||||||
throws SQLException, AuthorizeException, IOException {
|
throws SQLException, AuthorizeException, IOException {
|
||||||
boolean hasPassed = false;
|
boolean hasPassed = false;
|
||||||
//Retrieve all our scores from the metadata & add em up
|
//Retrieve all our scores from the metadata & add em up
|
||||||
@@ -73,7 +73,7 @@ public class ScoreEvaluationAction extends ProcessingAction {
|
|||||||
return new ActionResult(ActionResult.TYPE.TYPE_OUTCOME, ActionResult.OUTCOME_COMPLETE);
|
return new ActionResult(ActionResult.TYPE.TYPE_OUTCOME, ActionResult.OUTCOME_COMPLETE);
|
||||||
} else {
|
} else {
|
||||||
//We haven't passed, reject our item
|
//We haven't passed, reject our item
|
||||||
XmlWorkflowServiceFactory.getInstance().getXmlWorkflowService()
|
WorkflowServiceFactory.getInstance().getWorkflowService()
|
||||||
.sendWorkflowItemBackSubmission(c, wfi, c.getCurrentUser(),
|
.sendWorkflowItemBackSubmission(c, wfi, c.getCurrentUser(),
|
||||||
this.getProvenanceStartId(),
|
this.getProvenanceStartId(),
|
||||||
"The item was reject due to a bad review score.");
|
"The item was reject due to a bad review score.");
|
||||||
|
@@ -15,10 +15,10 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
import org.dspace.app.util.Util;
|
import org.dspace.app.util.Util;
|
||||||
import org.dspace.authorize.AuthorizeException;
|
import org.dspace.authorize.AuthorizeException;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.service.WorkflowRequirementsService;
|
import org.dspace.xmlworkflow.service.WorkflowRequirementsService;
|
||||||
import org.dspace.xmlworkflow.state.Step;
|
import org.dspace.xmlworkflow.state.Step;
|
||||||
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This action will allow multiple users to rate a certain item
|
* This action will allow multiple users to rate a certain item
|
||||||
@@ -35,12 +35,12 @@ public class ScoreReviewAction extends ProcessingAction {
|
|||||||
private static final String SUBMIT_SCORE = "submit_score";
|
private static final String SUBMIT_SCORE = "submit_score";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void activate(Context c, XmlWorkflowItem wf) {
|
public void activate(Context c, WorkflowItem wf) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionResult execute(Context c, XmlWorkflowItem wfi, Step step, HttpServletRequest request)
|
public ActionResult execute(Context c, WorkflowItem wfi, Step step, HttpServletRequest request)
|
||||||
throws SQLException, AuthorizeException {
|
throws SQLException, AuthorizeException {
|
||||||
if (request.getParameter(SUBMIT_SCORE) != null) {
|
if (request.getParameter(SUBMIT_SCORE) != null) {
|
||||||
int score = Util.getIntParameter(request, "score");
|
int score = Util.getIntParameter(request, "score");
|
||||||
|
@@ -18,11 +18,11 @@ import org.dspace.authorize.AuthorizeException;
|
|||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
import org.dspace.eperson.service.EPersonService;
|
import org.dspace.eperson.service.EPersonService;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.Role;
|
import org.dspace.xmlworkflow.Role;
|
||||||
import org.dspace.xmlworkflow.state.Step;
|
import org.dspace.xmlworkflow.state.Step;
|
||||||
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.WorkflowItemRole;
|
import org.dspace.xmlworkflow.storedcomponents.WorkflowItemRole;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.WorkflowItemRoleService;
|
import org.dspace.xmlworkflow.storedcomponents.service.WorkflowItemRoleService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
@@ -54,12 +54,12 @@ public class SelectReviewerAction extends ProcessingAction {
|
|||||||
private WorkflowItemRoleService workflowItemRoleService;
|
private WorkflowItemRoleService workflowItemRoleService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void activate(Context c, XmlWorkflowItem wf) {
|
public void activate(Context c, WorkflowItem wf) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionResult execute(Context c, XmlWorkflowItem wfi, Step step, HttpServletRequest request)
|
public ActionResult execute(Context c, WorkflowItem wfi, Step step, HttpServletRequest request)
|
||||||
throws SQLException, AuthorizeException {
|
throws SQLException, AuthorizeException {
|
||||||
String submitButton = Util.getSubmitButton(request, SUBMIT_CANCEL);
|
String submitButton = Util.getSubmitButton(request, SUBMIT_CANCEL);
|
||||||
|
|
||||||
|
@@ -18,10 +18,10 @@ import org.dspace.authorize.AuthorizeException;
|
|||||||
import org.dspace.content.DCDate;
|
import org.dspace.content.DCDate;
|
||||||
import org.dspace.content.MetadataSchemaEnum;
|
import org.dspace.content.MetadataSchemaEnum;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.xmlworkflow.factory.XmlWorkflowServiceFactory;
|
import org.dspace.workflow.WorkflowItem;
|
||||||
|
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
||||||
import org.dspace.xmlworkflow.state.Step;
|
import org.dspace.xmlworkflow.state.Step;
|
||||||
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Processing class of an action where a single user has
|
* Processing class of an action where a single user has
|
||||||
@@ -46,12 +46,12 @@ public class SingleUserReviewAction extends ProcessingAction {
|
|||||||
protected static final String SUBMIT_DECLINE_TASK = "submit_decline_task";
|
protected static final String SUBMIT_DECLINE_TASK = "submit_decline_task";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void activate(Context c, XmlWorkflowItem wfItem) {
|
public void activate(Context c, WorkflowItem wfItem) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionResult execute(Context c, XmlWorkflowItem wfi, Step step, HttpServletRequest request)
|
public ActionResult execute(Context c, WorkflowItem wfi, Step step, HttpServletRequest request)
|
||||||
throws SQLException, AuthorizeException, IOException {
|
throws SQLException, AuthorizeException, IOException {
|
||||||
int page = Util.getIntParameter(request, "page");
|
int page = Util.getIntParameter(request, "page");
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ public class SingleUserReviewAction extends ProcessingAction {
|
|||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionResult processMainPage(Context c, XmlWorkflowItem wfi, Step step, HttpServletRequest request)
|
public ActionResult processMainPage(Context c, WorkflowItem wfi, Step step, HttpServletRequest request)
|
||||||
throws SQLException, AuthorizeException {
|
throws SQLException, AuthorizeException {
|
||||||
if (request.getParameter(SUBMIT_APPROVE) != null) {
|
if (request.getParameter(SUBMIT_APPROVE) != null) {
|
||||||
//Delete the tasks
|
//Delete the tasks
|
||||||
@@ -101,12 +101,12 @@ public class SingleUserReviewAction extends ProcessingAction {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addApprovedProvenance(Context c, XmlWorkflowItem wfi) throws SQLException, AuthorizeException {
|
private void addApprovedProvenance(Context c, WorkflowItem wfi) throws SQLException, AuthorizeException {
|
||||||
//Add the provenance for the accept
|
//Add the provenance for the accept
|
||||||
String now = DCDate.getCurrent().toString();
|
String now = DCDate.getCurrent().toString();
|
||||||
|
|
||||||
// Get user's name + email address
|
// Get user's name + email address
|
||||||
String usersName = XmlWorkflowServiceFactory.getInstance().getXmlWorkflowService()
|
String usersName = WorkflowServiceFactory.getInstance().getWorkflowService()
|
||||||
.getEPersonName(c.getCurrentUser());
|
.getEPersonName(c.getCurrentUser());
|
||||||
|
|
||||||
String provDescription = getProvenanceStartId() + " Approved for entry into archive by "
|
String provDescription = getProvenanceStartId() + " Approved for entry into archive by "
|
||||||
@@ -118,7 +118,7 @@ public class SingleUserReviewAction extends ProcessingAction {
|
|||||||
itemService.update(c, wfi.getItem());
|
itemService.update(c, wfi.getItem());
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionResult processRejectPage(Context c, XmlWorkflowItem wfi, Step step, HttpServletRequest request)
|
public ActionResult processRejectPage(Context c, WorkflowItem wfi, Step step, HttpServletRequest request)
|
||||||
throws SQLException, AuthorizeException, IOException {
|
throws SQLException, AuthorizeException, IOException {
|
||||||
if (request.getParameter("submit_reject") != null) {
|
if (request.getParameter("submit_reject") != null) {
|
||||||
String reason = request.getParameter("reason");
|
String reason = request.getParameter("reason");
|
||||||
@@ -129,7 +129,7 @@ public class SingleUserReviewAction extends ProcessingAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//We have pressed reject, so remove the task the user has & put it back to a workspace item
|
//We have pressed reject, so remove the task the user has & put it back to a workspace item
|
||||||
XmlWorkflowServiceFactory.getInstance().getXmlWorkflowService()
|
WorkflowServiceFactory.getInstance().getWorkflowService()
|
||||||
.sendWorkflowItemBackSubmission(c, wfi, c.getCurrentUser(),
|
.sendWorkflowItemBackSubmission(c, wfi, c.getCurrentUser(),
|
||||||
this.getProvenanceStartId(), reason);
|
this.getProvenanceStartId(), reason);
|
||||||
|
|
||||||
@@ -143,10 +143,10 @@ public class SingleUserReviewAction extends ProcessingAction {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionResult processSubmitterIsDeletedPage(Context c, XmlWorkflowItem wfi, HttpServletRequest request)
|
public ActionResult processSubmitterIsDeletedPage(Context c, WorkflowItem wfi, HttpServletRequest request)
|
||||||
throws SQLException, AuthorizeException, IOException {
|
throws SQLException, AuthorizeException, IOException {
|
||||||
if (request.getParameter("submit_delete") != null) {
|
if (request.getParameter("submit_delete") != null) {
|
||||||
XmlWorkflowServiceFactory.getInstance().getXmlWorkflowService()
|
WorkflowServiceFactory.getInstance().getWorkflowService()
|
||||||
.deleteWorkflowByWorkflowItem(c, wfi, c.getCurrentUser());
|
.deleteWorkflowByWorkflowItem(c, wfi, c.getCurrentUser());
|
||||||
// Delete and send user back to myDspace page
|
// Delete and send user back to myDspace page
|
||||||
return new ActionResult(ActionResult.TYPE.TYPE_SUBMISSION_PAGE);
|
return new ActionResult(ActionResult.TYPE.TYPE_SUBMISSION_PAGE);
|
||||||
|
@@ -13,11 +13,11 @@ import java.util.List;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.RoleMembers;
|
import org.dspace.xmlworkflow.RoleMembers;
|
||||||
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
||||||
import org.dspace.xmlworkflow.state.Step;
|
import org.dspace.xmlworkflow.state.Step;
|
||||||
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Bram De Schouwer (bram.deschouwer at dot com)
|
* @author Bram De Schouwer (bram.deschouwer at dot com)
|
||||||
@@ -28,11 +28,11 @@ import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|||||||
public class AssignAction extends UserSelectionAction {
|
public class AssignAction extends UserSelectionAction {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void activate(Context c, XmlWorkflowItem wfItem) {
|
public void activate(Context c, WorkflowItem wfItem) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionResult execute(Context c, XmlWorkflowItem wfi, Step step, HttpServletRequest request) {
|
public ActionResult execute(Context c, WorkflowItem wfi, Step step, HttpServletRequest request) {
|
||||||
return new ActionResult(ActionResult.TYPE.TYPE_OUTCOME, ActionResult.OUTCOME_COMPLETE);
|
return new ActionResult(ActionResult.TYPE.TYPE_OUTCOME, ActionResult.OUTCOME_COMPLETE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,16 +45,16 @@ public class AssignAction extends UserSelectionAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isFinished(XmlWorkflowItem wfi) {
|
public boolean isFinished(WorkflowItem wfi) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void regenerateTasks(Context c, XmlWorkflowItem wfi, RoleMembers roleMembers) throws SQLException {
|
public void regenerateTasks(Context c, WorkflowItem wfi, RoleMembers roleMembers) throws SQLException {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isValidUserSelection(Context context, XmlWorkflowItem wfi, boolean hasUI)
|
public boolean isValidUserSelection(Context context, WorkflowItem wfi, boolean hasUI)
|
||||||
throws WorkflowConfigurationException, SQLException {
|
throws WorkflowConfigurationException, SQLException {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@@ -20,15 +20,15 @@ import org.dspace.core.Context;
|
|||||||
import org.dspace.core.LogManager;
|
import org.dspace.core.LogManager;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
import org.dspace.workflow.WorkflowException;
|
import org.dspace.workflow.WorkflowException;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
|
import org.dspace.workflow.WorkflowService;
|
||||||
|
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
||||||
import org.dspace.xmlworkflow.RoleMembers;
|
import org.dspace.xmlworkflow.RoleMembers;
|
||||||
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
||||||
import org.dspace.xmlworkflow.factory.XmlWorkflowServiceFactory;
|
|
||||||
import org.dspace.xmlworkflow.service.WorkflowRequirementsService;
|
import org.dspace.xmlworkflow.service.WorkflowRequirementsService;
|
||||||
import org.dspace.xmlworkflow.service.XmlWorkflowService;
|
|
||||||
import org.dspace.xmlworkflow.state.Step;
|
import org.dspace.xmlworkflow.state.Step;
|
||||||
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
||||||
import org.dspace.xmlworkflow.state.actions.WorkflowActionConfig;
|
import org.dspace.xmlworkflow.state.actions.WorkflowActionConfig;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -46,17 +46,17 @@ public class AssignOriginalSubmitterAction extends UserSelectionAction {
|
|||||||
protected WorkflowRequirementsService workflowRequirementsService;
|
protected WorkflowRequirementsService workflowRequirementsService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isFinished(XmlWorkflowItem wfi) {
|
public boolean isFinished(WorkflowItem wfi) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void regenerateTasks(Context c, XmlWorkflowItem wfi, RoleMembers roleMembers) throws SQLException {
|
public void regenerateTasks(Context c, WorkflowItem wfi, RoleMembers roleMembers) throws SQLException {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isValidUserSelection(Context context, XmlWorkflowItem wfi, boolean hasUI)
|
public boolean isValidUserSelection(Context context, WorkflowItem wfi, boolean hasUI)
|
||||||
throws WorkflowConfigurationException, SQLException {
|
throws WorkflowConfigurationException, SQLException {
|
||||||
return wfi.getSubmitter() != null;
|
return wfi.getSubmitter() != null;
|
||||||
}
|
}
|
||||||
@@ -67,24 +67,24 @@ public class AssignOriginalSubmitterAction extends UserSelectionAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void activate(Context c, XmlWorkflowItem wf) throws SQLException, IOException {
|
public void activate(Context c, WorkflowItem wf) throws SQLException, IOException {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void alertUsersOnActivation(Context c, XmlWorkflowItem wfi, RoleMembers roleMembers)
|
public void alertUsersOnActivation(Context c, WorkflowItem wfi, RoleMembers roleMembers)
|
||||||
throws IOException, SQLException {
|
throws IOException, SQLException {
|
||||||
if (wfi.getSubmitter() != null) {
|
if (wfi.getSubmitter() != null) {
|
||||||
try {
|
try {
|
||||||
XmlWorkflowService xmlWorkflowService = XmlWorkflowServiceFactory.getInstance().getXmlWorkflowService();
|
WorkflowService workflowService = WorkflowServiceFactory.getInstance().getWorkflowService();
|
||||||
xmlWorkflowService.alertUsersOnTaskActivation(c, wfi, "submit_task", Arrays.asList(wfi.getSubmitter()),
|
workflowService.alertUsersOnTaskActivation(c, wfi, "submit_task", Arrays.asList(wfi.getSubmitter()),
|
||||||
//The arguments
|
//The arguments
|
||||||
wfi.getItem().getName(),
|
wfi.getItem().getName(),
|
||||||
wfi.getCollection().getName(),
|
wfi.getCollection().getName(),
|
||||||
wfi.getSubmitter().getFullName(),
|
wfi.getSubmitter().getFullName(),
|
||||||
//TODO: message
|
//TODO: message
|
||||||
"New task available.",
|
"New task available.",
|
||||||
xmlWorkflowService.getMyDSpaceLink()
|
workflowService.getMyDSpaceLink()
|
||||||
);
|
);
|
||||||
} catch (MessagingException e) {
|
} catch (MessagingException e) {
|
||||||
log.info(LogManager.getHeader(c, "error emailing user(s) for claimed task",
|
log.info(LogManager.getHeader(c, "error emailing user(s) for claimed task",
|
||||||
@@ -95,7 +95,7 @@ public class AssignOriginalSubmitterAction extends UserSelectionAction {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionResult execute(Context c, XmlWorkflowItem wfi, Step step, HttpServletRequest request)
|
public ActionResult execute(Context c, WorkflowItem wfi, Step step, HttpServletRequest request)
|
||||||
throws SQLException, AuthorizeException, IOException, WorkflowException {
|
throws SQLException, AuthorizeException, IOException, WorkflowException {
|
||||||
EPerson submitter = wfi.getSubmitter();
|
EPerson submitter = wfi.getSubmitter();
|
||||||
WorkflowActionConfig nextAction = getParent().getStep().getNextAction(this.getParent());
|
WorkflowActionConfig nextAction = getParent().getStep().getNextAction(this.getParent());
|
||||||
@@ -133,11 +133,11 @@ public class AssignOriginalSubmitterAction extends UserSelectionAction {
|
|||||||
* @throws AuthorizeException ...
|
* @throws AuthorizeException ...
|
||||||
* @throws IOException ...
|
* @throws IOException ...
|
||||||
*/
|
*/
|
||||||
protected void createTaskForEPerson(Context c, XmlWorkflowItem wfi, Step step, WorkflowActionConfig actionConfig,
|
protected void createTaskForEPerson(Context c, WorkflowItem wfi, Step step, WorkflowActionConfig actionConfig,
|
||||||
EPerson user) throws SQLException, AuthorizeException, IOException {
|
EPerson user) throws SQLException, AuthorizeException, IOException {
|
||||||
if (claimedTaskService.find(c, wfi, step.getId(), actionConfig.getId()) != null) {
|
if (claimedTaskService.find(c, wfi, step.getId(), actionConfig.getId()) != null) {
|
||||||
workflowRequirementsService.addClaimedUser(c, wfi, step, c.getCurrentUser());
|
workflowRequirementsService.addClaimedUser(c, wfi, step, c.getCurrentUser());
|
||||||
XmlWorkflowServiceFactory.getInstance().getXmlWorkflowService()
|
WorkflowServiceFactory.getInstance().getWorkflowService()
|
||||||
.createOwnedTask(c, wfi, step, actionConfig, user);
|
.createOwnedTask(c, wfi, step, actionConfig, user);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,16 +19,16 @@ import org.dspace.core.Context;
|
|||||||
import org.dspace.core.LogManager;
|
import org.dspace.core.LogManager;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
import org.dspace.eperson.service.GroupService;
|
import org.dspace.eperson.service.GroupService;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
|
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
||||||
import org.dspace.xmlworkflow.Role;
|
import org.dspace.xmlworkflow.Role;
|
||||||
import org.dspace.xmlworkflow.RoleMembers;
|
import org.dspace.xmlworkflow.RoleMembers;
|
||||||
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
||||||
import org.dspace.xmlworkflow.factory.XmlWorkflowServiceFactory;
|
|
||||||
import org.dspace.xmlworkflow.service.WorkflowRequirementsService;
|
import org.dspace.xmlworkflow.service.WorkflowRequirementsService;
|
||||||
import org.dspace.xmlworkflow.state.Step;
|
import org.dspace.xmlworkflow.state.Step;
|
||||||
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
||||||
import org.dspace.xmlworkflow.state.actions.WorkflowActionConfig;
|
import org.dspace.xmlworkflow.state.actions.WorkflowActionConfig;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.WorkflowItemRole;
|
import org.dspace.xmlworkflow.storedcomponents.WorkflowItemRole;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -51,12 +51,12 @@ public class AutoAssignAction extends UserSelectionAction {
|
|||||||
protected WorkflowRequirementsService workflowRequirementsService;
|
protected WorkflowRequirementsService workflowRequirementsService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void activate(Context c, XmlWorkflowItem wfItem) {
|
public void activate(Context c, WorkflowItem wfItem) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionResult execute(Context c, XmlWorkflowItem wfi, Step step, HttpServletRequest request)
|
public ActionResult execute(Context c, WorkflowItem wfi, Step step, HttpServletRequest request)
|
||||||
throws SQLException, AuthorizeException, IOException {
|
throws SQLException, AuthorizeException, IOException {
|
||||||
try {
|
try {
|
||||||
Role role = getParent().getStep().getRole();
|
Role role = getParent().getStep().getRole();
|
||||||
@@ -124,27 +124,27 @@ public class AutoAssignAction extends UserSelectionAction {
|
|||||||
* @throws AuthorizeException ...
|
* @throws AuthorizeException ...
|
||||||
* @throws IOException ...
|
* @throws IOException ...
|
||||||
*/
|
*/
|
||||||
protected void createTaskForEPerson(Context c, XmlWorkflowItem wfi, Step step, WorkflowActionConfig actionConfig,
|
protected void createTaskForEPerson(Context c, WorkflowItem wfi, Step step, WorkflowActionConfig actionConfig,
|
||||||
EPerson user) throws SQLException, AuthorizeException, IOException {
|
EPerson user) throws SQLException, AuthorizeException, IOException {
|
||||||
if (claimedTaskService.find(c, wfi, step.getId(), actionConfig.getId()) != null) {
|
if (claimedTaskService.find(c, wfi, step.getId(), actionConfig.getId()) != null) {
|
||||||
workflowRequirementsService.addClaimedUser(c, wfi, step, c.getCurrentUser());
|
workflowRequirementsService.addClaimedUser(c, wfi, step, c.getCurrentUser());
|
||||||
XmlWorkflowServiceFactory.getInstance().getXmlWorkflowService()
|
WorkflowServiceFactory.getInstance().getWorkflowService()
|
||||||
.createOwnedTask(c, wfi, step, actionConfig, user);
|
.createOwnedTask(c, wfi, step, actionConfig, user);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isFinished(XmlWorkflowItem wfi) {
|
public boolean isFinished(WorkflowItem wfi) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void regenerateTasks(Context c, XmlWorkflowItem wfi, RoleMembers roleMembers) throws SQLException {
|
public void regenerateTasks(Context c, WorkflowItem wfi, RoleMembers roleMembers) throws SQLException {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isValidUserSelection(Context context, XmlWorkflowItem wfi, boolean hasUI)
|
public boolean isValidUserSelection(Context context, WorkflowItem wfi, boolean hasUI)
|
||||||
throws WorkflowConfigurationException, SQLException {
|
throws WorkflowConfigurationException, SQLException {
|
||||||
//This is an automatic assign action, it can never have a user interface
|
//This is an automatic assign action, it can never have a user interface
|
||||||
Role role = getParent().getStep().getRole();
|
Role role = getParent().getStep().getRole();
|
||||||
|
@@ -20,14 +20,14 @@ import org.dspace.core.LogManager;
|
|||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
import org.dspace.services.ConfigurationService;
|
import org.dspace.services.ConfigurationService;
|
||||||
import org.dspace.services.factory.DSpaceServicesFactory;
|
import org.dspace.services.factory.DSpaceServicesFactory;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
|
import org.dspace.workflow.WorkflowService;
|
||||||
|
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
||||||
import org.dspace.xmlworkflow.Role;
|
import org.dspace.xmlworkflow.Role;
|
||||||
import org.dspace.xmlworkflow.RoleMembers;
|
import org.dspace.xmlworkflow.RoleMembers;
|
||||||
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
||||||
import org.dspace.xmlworkflow.factory.XmlWorkflowServiceFactory;
|
|
||||||
import org.dspace.xmlworkflow.service.XmlWorkflowService;
|
|
||||||
import org.dspace.xmlworkflow.state.Step;
|
import org.dspace.xmlworkflow.state.Step;
|
||||||
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Processing class for an action where x number of users
|
* Processing class for an action where x number of users
|
||||||
@@ -43,14 +43,14 @@ public class ClaimAction extends UserSelectionAction {
|
|||||||
= DSpaceServicesFactory.getInstance().getConfigurationService();
|
= DSpaceServicesFactory.getInstance().getConfigurationService();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void activate(Context context, XmlWorkflowItem wfItem) throws SQLException, IOException, AuthorizeException {
|
public void activate(Context context, WorkflowItem wfItem) throws SQLException, IOException, AuthorizeException {
|
||||||
Step owningStep = getParent().getStep();
|
Step owningStep = getParent().getStep();
|
||||||
|
|
||||||
RoleMembers allroleMembers = getParent().getStep().getRole().getMembers(context, wfItem);
|
RoleMembers allroleMembers = getParent().getStep().getRole().getMembers(context, wfItem);
|
||||||
// Create pooled tasks for each member of our group
|
// Create pooled tasks for each member of our group
|
||||||
if (allroleMembers != null && (allroleMembers.getGroups().size() > 0 || allroleMembers.getEPersons()
|
if (allroleMembers != null && (allroleMembers.getGroups().size() > 0 || allroleMembers.getEPersons()
|
||||||
.size() > 0)) {
|
.size() > 0)) {
|
||||||
XmlWorkflowServiceFactory.getInstance().getXmlWorkflowService()
|
WorkflowServiceFactory.getInstance().getWorkflowService()
|
||||||
.createPoolTasks(context, wfItem, allroleMembers, owningStep, getParent());
|
.createPoolTasks(context, wfItem, allroleMembers, owningStep, getParent());
|
||||||
alertUsersOnActivation(context, wfItem, allroleMembers);
|
alertUsersOnActivation(context, wfItem, allroleMembers);
|
||||||
} else {
|
} else {
|
||||||
@@ -63,10 +63,10 @@ public class ClaimAction extends UserSelectionAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionResult execute(Context c, XmlWorkflowItem wfi, Step step, HttpServletRequest request)
|
public ActionResult execute(Context c, WorkflowItem wfi, Step step, HttpServletRequest request)
|
||||||
throws SQLException, AuthorizeException, IOException {
|
throws SQLException, AuthorizeException, IOException {
|
||||||
// accept task, or accepting multiple tasks
|
// accept task, or accepting multiple tasks
|
||||||
XmlWorkflowServiceFactory.getInstance().getWorkflowRequirementsService().addClaimedUser(c, wfi, step,
|
WorkflowServiceFactory.getInstance().getWorkflowRequirementsService().addClaimedUser(c, wfi, step,
|
||||||
c.getCurrentUser());
|
c.getCurrentUser());
|
||||||
return new ActionResult(ActionResult.TYPE.TYPE_OUTCOME, ActionResult.OUTCOME_COMPLETE);
|
return new ActionResult(ActionResult.TYPE.TYPE_OUTCOME, ActionResult.OUTCOME_COMPLETE);
|
||||||
}
|
}
|
||||||
@@ -77,7 +77,7 @@ public class ClaimAction extends UserSelectionAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void alertUsersOnActivation(Context c, XmlWorkflowItem wfi, RoleMembers roleMembers)
|
public void alertUsersOnActivation(Context c, WorkflowItem wfi, RoleMembers roleMembers)
|
||||||
throws IOException, SQLException {
|
throws IOException, SQLException {
|
||||||
try {
|
try {
|
||||||
EPerson ep = wfi.getSubmitter();
|
EPerson ep = wfi.getSubmitter();
|
||||||
@@ -85,15 +85,15 @@ public class ClaimAction extends UserSelectionAction {
|
|||||||
if (ep != null) {
|
if (ep != null) {
|
||||||
submitterName = ep.getFullName();
|
submitterName = ep.getFullName();
|
||||||
}
|
}
|
||||||
XmlWorkflowService xmlWorkflowService = XmlWorkflowServiceFactory.getInstance().getXmlWorkflowService();
|
WorkflowService workflowService = WorkflowServiceFactory.getInstance().getWorkflowService();
|
||||||
xmlWorkflowService.alertUsersOnTaskActivation(c, wfi, "submit_task", roleMembers.getAllUniqueMembers(c),
|
workflowService.alertUsersOnTaskActivation(c, wfi, "submit_task", roleMembers.getAllUniqueMembers(c),
|
||||||
//The arguments
|
//The arguments
|
||||||
wfi.getItem().getName(),
|
wfi.getItem().getName(),
|
||||||
wfi.getCollection().getName(),
|
wfi.getCollection().getName(),
|
||||||
submitterName,
|
submitterName,
|
||||||
//TODO: message
|
//TODO: message
|
||||||
"New task available.",
|
"New task available.",
|
||||||
xmlWorkflowService.getMyDSpaceLink()
|
workflowService.getMyDSpaceLink()
|
||||||
);
|
);
|
||||||
} catch (MessagingException e) {
|
} catch (MessagingException e) {
|
||||||
log.info(LogManager.getHeader(c, "error emailing user(s) for claimed task",
|
log.info(LogManager.getHeader(c, "error emailing user(s) for claimed task",
|
||||||
@@ -102,11 +102,11 @@ public class ClaimAction extends UserSelectionAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void regenerateTasks(Context c, XmlWorkflowItem wfi, RoleMembers roleMembers)
|
public void regenerateTasks(Context c, WorkflowItem wfi, RoleMembers roleMembers)
|
||||||
throws SQLException, AuthorizeException, IOException {
|
throws SQLException, AuthorizeException, IOException {
|
||||||
if (roleMembers != null && (roleMembers.getEPersons().size() > 0 || roleMembers.getGroups().size() > 0)) {
|
if (roleMembers != null && (roleMembers.getEPersons().size() > 0 || roleMembers.getGroups().size() > 0)) {
|
||||||
//Create task for the users left
|
//Create task for the users left
|
||||||
XmlWorkflowServiceFactory.getInstance().getXmlWorkflowService()
|
WorkflowServiceFactory.getInstance().getWorkflowService()
|
||||||
.createPoolTasks(c, wfi, roleMembers, getParent().getStep(), getParent());
|
.createPoolTasks(c, wfi, roleMembers, getParent().getStep(), getParent());
|
||||||
if (configurationService.getBooleanProperty("workflow.notify.returned.tasks", true)) {
|
if (configurationService.getBooleanProperty("workflow.notify.returned.tasks", true)) {
|
||||||
alertUsersOnActivation(c, wfi, roleMembers);
|
alertUsersOnActivation(c, wfi, roleMembers);
|
||||||
@@ -121,12 +121,12 @@ public class ClaimAction extends UserSelectionAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isFinished(XmlWorkflowItem wfi) {
|
public boolean isFinished(WorkflowItem wfi) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isValidUserSelection(Context context, XmlWorkflowItem wfi, boolean hasUI)
|
public boolean isValidUserSelection(Context context, WorkflowItem wfi, boolean hasUI)
|
||||||
throws WorkflowConfigurationException, SQLException {
|
throws WorkflowConfigurationException, SQLException {
|
||||||
//A user claim action always needs to have a UI, since somebody needs to be able to claim it
|
//A user claim action always needs to have a UI, since somebody needs to be able to claim it
|
||||||
if (hasUI) {
|
if (hasUI) {
|
||||||
|
@@ -13,11 +13,11 @@ import java.util.List;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.RoleMembers;
|
import org.dspace.xmlworkflow.RoleMembers;
|
||||||
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
||||||
import org.dspace.xmlworkflow.state.Step;
|
import org.dspace.xmlworkflow.state.Step;
|
||||||
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A user selection action that inherits user
|
* A user selection action that inherits user
|
||||||
@@ -31,11 +31,11 @@ import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|||||||
public class InheritUsersAction extends UserSelectionAction {
|
public class InheritUsersAction extends UserSelectionAction {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void activate(Context c, XmlWorkflowItem wfItem) {
|
public void activate(Context c, WorkflowItem wfItem) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionResult execute(Context c, XmlWorkflowItem wfi, Step step, HttpServletRequest request) {
|
public ActionResult execute(Context c, WorkflowItem wfi, Step step, HttpServletRequest request) {
|
||||||
return new ActionResult(ActionResult.TYPE.TYPE_OUTCOME, ActionResult.OUTCOME_COMPLETE);
|
return new ActionResult(ActionResult.TYPE.TYPE_OUTCOME, ActionResult.OUTCOME_COMPLETE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,16 +45,16 @@ public class InheritUsersAction extends UserSelectionAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isFinished(XmlWorkflowItem wfi) {
|
public boolean isFinished(WorkflowItem wfi) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void regenerateTasks(Context c, XmlWorkflowItem wfi, RoleMembers roleMembers) throws SQLException {
|
public void regenerateTasks(Context c, WorkflowItem wfi, RoleMembers roleMembers) throws SQLException {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isValidUserSelection(Context context, XmlWorkflowItem wfi, boolean hasUI)
|
public boolean isValidUserSelection(Context context, WorkflowItem wfi, boolean hasUI)
|
||||||
throws WorkflowConfigurationException, SQLException {
|
throws WorkflowConfigurationException, SQLException {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@@ -12,10 +12,10 @@ import java.util.List;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.RoleMembers;
|
import org.dspace.xmlworkflow.RoleMembers;
|
||||||
import org.dspace.xmlworkflow.state.Step;
|
import org.dspace.xmlworkflow.state.Step;
|
||||||
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
import org.dspace.xmlworkflow.state.actions.ActionResult;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A user selection action that does not assign any users
|
* A user selection action that does not assign any users
|
||||||
@@ -27,16 +27,16 @@ import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|||||||
*/
|
*/
|
||||||
public class NoUserSelectionAction extends UserSelectionAction {
|
public class NoUserSelectionAction extends UserSelectionAction {
|
||||||
@Override
|
@Override
|
||||||
public boolean isFinished(XmlWorkflowItem wfi) {
|
public boolean isFinished(WorkflowItem wfi) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void regenerateTasks(Context c, XmlWorkflowItem wfi, RoleMembers roleMembers) {
|
public void regenerateTasks(Context c, WorkflowItem wfi, RoleMembers roleMembers) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isValidUserSelection(Context context, XmlWorkflowItem wfi, boolean hasUI) {
|
public boolean isValidUserSelection(Context context, WorkflowItem wfi, boolean hasUI) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,11 +46,11 @@ public class NoUserSelectionAction extends UserSelectionAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void activate(Context c, XmlWorkflowItem wf) {
|
public void activate(Context c, WorkflowItem wf) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionResult execute(Context c, XmlWorkflowItem wfi, Step step, HttpServletRequest request) {
|
public ActionResult execute(Context c, WorkflowItem wfi, Step step, HttpServletRequest request) {
|
||||||
return new ActionResult(ActionResult.TYPE.TYPE_OUTCOME, ActionResult.OUTCOME_COMPLETE);
|
return new ActionResult(ActionResult.TYPE.TYPE_OUTCOME, ActionResult.OUTCOME_COMPLETE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -14,11 +14,11 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.dspace.authorize.AuthorizeException;
|
import org.dspace.authorize.AuthorizeException;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.RoleMembers;
|
import org.dspace.xmlworkflow.RoleMembers;
|
||||||
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
import org.dspace.xmlworkflow.WorkflowConfigurationException;
|
||||||
import org.dspace.xmlworkflow.state.actions.Action;
|
import org.dspace.xmlworkflow.state.actions.Action;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.PoolTask;
|
import org.dspace.xmlworkflow.storedcomponents.PoolTask;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.WorkflowItemRoleService;
|
import org.dspace.xmlworkflow.storedcomponents.service.WorkflowItemRoleService;
|
||||||
@@ -38,7 +38,7 @@ public abstract class UserSelectionAction extends Action {
|
|||||||
|
|
||||||
protected Logger log = org.apache.logging.log4j.LogManager.getLogger(UserSelectionAction.class);
|
protected Logger log = org.apache.logging.log4j.LogManager.getLogger(UserSelectionAction.class);
|
||||||
|
|
||||||
public abstract boolean isFinished(XmlWorkflowItem wfi);
|
public abstract boolean isFinished(WorkflowItem wfi);
|
||||||
|
|
||||||
@Autowired(required = true)
|
@Autowired(required = true)
|
||||||
protected ClaimedTaskService claimedTaskService;
|
protected ClaimedTaskService claimedTaskService;
|
||||||
@@ -48,7 +48,7 @@ public abstract class UserSelectionAction extends Action {
|
|||||||
protected WorkflowItemRoleService workflowItemRoleService;
|
protected WorkflowItemRoleService workflowItemRoleService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAuthorized(Context context, HttpServletRequest request, XmlWorkflowItem wfi)
|
public boolean isAuthorized(Context context, HttpServletRequest request, WorkflowItem wfi)
|
||||||
throws SQLException, AuthorizeException, IOException, WorkflowConfigurationException {
|
throws SQLException, AuthorizeException, IOException, WorkflowConfigurationException {
|
||||||
PoolTask task = null;
|
PoolTask task = null;
|
||||||
if (context.getCurrentUser() != null) {
|
if (context.getCurrentUser() != null) {
|
||||||
@@ -72,7 +72,7 @@ public abstract class UserSelectionAction extends Action {
|
|||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
* @throws SQLException An exception that provides information on a database access error or other errors.
|
||||||
* @throws IOException A general class of exceptions produced by failed or interrupted I/O operations.
|
* @throws IOException A general class of exceptions produced by failed or interrupted I/O operations.
|
||||||
*/
|
*/
|
||||||
public abstract void regenerateTasks(Context c, XmlWorkflowItem wfi, RoleMembers roleMembers)
|
public abstract void regenerateTasks(Context c, WorkflowItem wfi, RoleMembers roleMembers)
|
||||||
throws SQLException, AuthorizeException, IOException;
|
throws SQLException, AuthorizeException, IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -87,7 +87,7 @@ public abstract class UserSelectionAction extends Action {
|
|||||||
* @throws SQLException An exception that provides information on a database access error or
|
* @throws SQLException An exception that provides information on a database access error or
|
||||||
* other errors.
|
* other errors.
|
||||||
*/
|
*/
|
||||||
public abstract boolean isValidUserSelection(Context context, XmlWorkflowItem wfi, boolean hasUI)
|
public abstract boolean isValidUserSelection(Context context, WorkflowItem wfi, boolean hasUI)
|
||||||
throws WorkflowConfigurationException, SQLException;
|
throws WorkflowConfigurationException, SQLException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -21,6 +21,7 @@ import javax.persistence.Table;
|
|||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.core.ReloadableEntity;
|
import org.dspace.core.ReloadableEntity;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Claimed task representing the database representation of an action claimed by an eperson
|
* Claimed task representing the database representation of an action claimed by an eperson
|
||||||
@@ -42,7 +43,7 @@ public class ClaimedTask implements ReloadableEntity<Integer> {
|
|||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(name = "workflowitem_id")
|
@JoinColumn(name = "workflowitem_id")
|
||||||
private XmlWorkflowItem workflowItem;
|
private WorkflowItem workflowItem;
|
||||||
|
|
||||||
// @Column(name = "workflow_id")
|
// @Column(name = "workflow_id")
|
||||||
// @Lob
|
// @Lob
|
||||||
@@ -83,11 +84,11 @@ public class ClaimedTask implements ReloadableEntity<Integer> {
|
|||||||
return owner;
|
return owner;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setWorkflowItem(XmlWorkflowItem workflowItem) {
|
public void setWorkflowItem(WorkflowItem workflowItem) {
|
||||||
this.workflowItem = workflowItem;
|
this.workflowItem = workflowItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
public XmlWorkflowItem getWorkflowItem() {
|
public WorkflowItem getWorkflowItem() {
|
||||||
return workflowItem;
|
return workflowItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -16,6 +16,7 @@ import org.apache.commons.collections4.CollectionUtils;
|
|||||||
import org.dspace.authorize.AuthorizeException;
|
import org.dspace.authorize.AuthorizeException;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.dao.ClaimedTaskDAO;
|
import org.dspace.xmlworkflow.storedcomponents.dao.ClaimedTaskDAO;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -71,12 +72,12 @@ public class ClaimedTaskServiceImpl implements ClaimedTaskService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ClaimedTask> findByWorkflowItem(Context context, XmlWorkflowItem workflowItem) throws SQLException {
|
public List<ClaimedTask> findByWorkflowItem(Context context, WorkflowItem workflowItem) throws SQLException {
|
||||||
return claimedTaskDAO.findByWorkflowItem(context, workflowItem);
|
return claimedTaskDAO.findByWorkflowItem(context, workflowItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ClaimedTask findByWorkflowIdAndEPerson(Context context, XmlWorkflowItem workflowItem, EPerson ePerson)
|
public ClaimedTask findByWorkflowIdAndEPerson(Context context, WorkflowItem workflowItem, EPerson ePerson)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
return claimedTaskDAO.findByWorkflowItemAndEPerson(context, workflowItem, ePerson);
|
return claimedTaskDAO.findByWorkflowItemAndEPerson(context, workflowItem, ePerson);
|
||||||
}
|
}
|
||||||
@@ -87,25 +88,25 @@ public class ClaimedTaskServiceImpl implements ClaimedTaskService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ClaimedTask> find(Context context, XmlWorkflowItem workflowItem, String stepID) throws SQLException {
|
public List<ClaimedTask> find(Context context, WorkflowItem workflowItem, String stepID) throws SQLException {
|
||||||
return claimedTaskDAO.findByWorkflowItemAndStepId(context, workflowItem, stepID);
|
return claimedTaskDAO.findByWorkflowItemAndStepId(context, workflowItem, stepID);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ClaimedTask find(Context context, EPerson ePerson, XmlWorkflowItem workflowItem, String stepID,
|
public ClaimedTask find(Context context, EPerson ePerson, WorkflowItem workflowItem, String stepID,
|
||||||
String actionID) throws SQLException {
|
String actionID) throws SQLException {
|
||||||
return claimedTaskDAO
|
return claimedTaskDAO
|
||||||
.findByEPersonAndWorkflowItemAndStepIdAndActionId(context, ePerson, workflowItem, stepID, actionID);
|
.findByEPersonAndWorkflowItemAndStepIdAndActionId(context, ePerson, workflowItem, stepID, actionID);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ClaimedTask> find(Context context, XmlWorkflowItem workflowItem, String stepID, String actionID)
|
public List<ClaimedTask> find(Context context, WorkflowItem workflowItem, String stepID, String actionID)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
return claimedTaskDAO.findByWorkflowItemAndStepIdAndActionId(context, workflowItem, stepID, actionID);
|
return claimedTaskDAO.findByWorkflowItemAndStepIdAndActionId(context, workflowItem, stepID, actionID);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ClaimedTask> find(Context context, XmlWorkflowItem workflowItem) throws SQLException {
|
public List<ClaimedTask> find(Context context, WorkflowItem workflowItem) throws SQLException {
|
||||||
return claimedTaskDAO.findByWorkflowItem(context, workflowItem);
|
return claimedTaskDAO.findByWorkflowItem(context, workflowItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,7 +116,7 @@ public class ClaimedTaskServiceImpl implements ClaimedTaskService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteByWorkflowItem(Context context, XmlWorkflowItem workflowItem)
|
public void deleteByWorkflowItem(Context context, WorkflowItem workflowItem)
|
||||||
throws SQLException, AuthorizeException {
|
throws SQLException, AuthorizeException {
|
||||||
List<ClaimedTask> claimedTasks = findByWorkflowItem(context, workflowItem);
|
List<ClaimedTask> claimedTasks = findByWorkflowItem(context, workflowItem);
|
||||||
//Use an iterator to remove the tasks !
|
//Use an iterator to remove the tasks !
|
||||||
|
@@ -21,6 +21,7 @@ import javax.persistence.Table;
|
|||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.core.ReloadableEntity;
|
import org.dspace.core.ReloadableEntity;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Claimed task representing the database representation of an action claimed by an eperson
|
* Claimed task representing the database representation of an action claimed by an eperson
|
||||||
@@ -46,7 +47,7 @@ public class InProgressUser implements ReloadableEntity<Integer> {
|
|||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(name = "workflowitem_id")
|
@JoinColumn(name = "workflowitem_id")
|
||||||
private XmlWorkflowItem workflowItem;
|
private WorkflowItem workflowItem;
|
||||||
|
|
||||||
@Column(name = "finished")
|
@Column(name = "finished")
|
||||||
private boolean finished = false;
|
private boolean finished = false;
|
||||||
@@ -71,11 +72,11 @@ public class InProgressUser implements ReloadableEntity<Integer> {
|
|||||||
return this.ePerson;
|
return this.ePerson;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setWorkflowItem(XmlWorkflowItem workflowItem) {
|
public void setWorkflowItem(WorkflowItem workflowItem) {
|
||||||
this.workflowItem = workflowItem;
|
this.workflowItem = workflowItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
public XmlWorkflowItem getWorkflowItem() {
|
public WorkflowItem getWorkflowItem() {
|
||||||
return this.workflowItem;
|
return this.workflowItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -15,6 +15,7 @@ import org.apache.commons.collections4.CollectionUtils;
|
|||||||
import org.dspace.authorize.AuthorizeException;
|
import org.dspace.authorize.AuthorizeException;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.dao.InProgressUserDAO;
|
import org.dspace.xmlworkflow.storedcomponents.dao.InProgressUserDAO;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.InProgressUserService;
|
import org.dspace.xmlworkflow.storedcomponents.service.InProgressUserService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -36,7 +37,7 @@ public class InProgressUserServiceImpl implements InProgressUserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InProgressUser findByWorkflowItemAndEPerson(Context context, XmlWorkflowItem workflowItem, EPerson ePerson)
|
public InProgressUser findByWorkflowItemAndEPerson(Context context, WorkflowItem workflowItem, EPerson ePerson)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
return inProgressUserDAO.findByWorkflowItemAndEPerson(context, workflowItem, ePerson);
|
return inProgressUserDAO.findByWorkflowItemAndEPerson(context, workflowItem, ePerson);
|
||||||
}
|
}
|
||||||
@@ -47,17 +48,17 @@ public class InProgressUserServiceImpl implements InProgressUserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<InProgressUser> findByWorkflowItem(Context context, XmlWorkflowItem workflowItem) throws SQLException {
|
public List<InProgressUser> findByWorkflowItem(Context context, WorkflowItem workflowItem) throws SQLException {
|
||||||
return inProgressUserDAO.findByWorkflowItem(context, workflowItem);
|
return inProgressUserDAO.findByWorkflowItem(context, workflowItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getNumberOfInProgressUsers(Context context, XmlWorkflowItem workflowItem) throws SQLException {
|
public int getNumberOfInProgressUsers(Context context, WorkflowItem workflowItem) throws SQLException {
|
||||||
return inProgressUserDAO.countInProgressUsers(context, workflowItem);
|
return inProgressUserDAO.countInProgressUsers(context, workflowItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getNumberOfFinishedUsers(Context context, XmlWorkflowItem workflowItem) throws SQLException {
|
public int getNumberOfFinishedUsers(Context context, WorkflowItem workflowItem) throws SQLException {
|
||||||
return inProgressUserDAO.countFinishedUsers(context, workflowItem);
|
return inProgressUserDAO.countFinishedUsers(context, workflowItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -23,6 +23,7 @@ import org.dspace.core.Context;
|
|||||||
import org.dspace.core.ReloadableEntity;
|
import org.dspace.core.ReloadableEntity;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
import org.dspace.eperson.Group;
|
import org.dspace.eperson.Group;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pool task representing the database representation of a pool task for a step and an eperson
|
* Pool task representing the database representation of a pool task for a step and an eperson
|
||||||
@@ -44,7 +45,7 @@ public class PoolTask implements ReloadableEntity<Integer> {
|
|||||||
|
|
||||||
@OneToOne
|
@OneToOne
|
||||||
@JoinColumn(name = "workflowitem_id")
|
@JoinColumn(name = "workflowitem_id")
|
||||||
private XmlWorkflowItem workflowItem;
|
private WorkflowItem workflowItem;
|
||||||
|
|
||||||
// @Column(name = "workflow_id")
|
// @Column(name = "workflow_id")
|
||||||
// @Lob
|
// @Lob
|
||||||
@@ -106,11 +107,11 @@ public class PoolTask implements ReloadableEntity<Integer> {
|
|||||||
return workflowId;
|
return workflowId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setWorkflowItem(XmlWorkflowItem xmlWorkflowItem) {
|
public void setWorkflowItem(WorkflowItem workflowItem) {
|
||||||
this.workflowItem = xmlWorkflowItem;
|
this.workflowItem = workflowItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
public XmlWorkflowItem getWorkflowItem() {
|
public WorkflowItem getWorkflowItem() {
|
||||||
return this.workflowItem;
|
return this.workflowItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -21,6 +21,7 @@ import org.dspace.core.Context;
|
|||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
import org.dspace.eperson.Group;
|
import org.dspace.eperson.Group;
|
||||||
import org.dspace.eperson.service.GroupService;
|
import org.dspace.eperson.service.GroupService;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.dao.PoolTaskDAO;
|
import org.dspace.xmlworkflow.storedcomponents.dao.PoolTaskDAO;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.InProgressUserService;
|
import org.dspace.xmlworkflow.storedcomponents.service.InProgressUserService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
||||||
@@ -67,7 +68,7 @@ public class PoolTaskServiceImpl implements PoolTaskService {
|
|||||||
for (Group group : groups) {
|
for (Group group : groups) {
|
||||||
List<PoolTask> groupTasks = poolTaskDAO.findByGroup(context, group);
|
List<PoolTask> groupTasks = poolTaskDAO.findByGroup(context, group);
|
||||||
for (PoolTask poolTask : groupTasks) {
|
for (PoolTask poolTask : groupTasks) {
|
||||||
XmlWorkflowItem workflowItem = poolTask.getWorkflowItem();
|
WorkflowItem workflowItem = poolTask.getWorkflowItem();
|
||||||
if (inProgressUserService.findByWorkflowItemAndEPerson(context, workflowItem, ePerson) == null) {
|
if (inProgressUserService.findByWorkflowItemAndEPerson(context, workflowItem, ePerson) == null) {
|
||||||
result.add(poolTask);
|
result.add(poolTask);
|
||||||
}
|
}
|
||||||
@@ -78,12 +79,12 @@ public class PoolTaskServiceImpl implements PoolTaskService {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PoolTask> find(Context context, XmlWorkflowItem workflowItem) throws SQLException {
|
public List<PoolTask> find(Context context, WorkflowItem workflowItem) throws SQLException {
|
||||||
return poolTaskDAO.findByWorkflowItem(context, workflowItem);
|
return poolTaskDAO.findByWorkflowItem(context, workflowItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PoolTask findByWorkflowIdAndEPerson(Context context, XmlWorkflowItem workflowItem, EPerson ePerson)
|
public PoolTask findByWorkflowIdAndEPerson(Context context, WorkflowItem workflowItem, EPerson ePerson)
|
||||||
throws SQLException, AuthorizeException, IOException {
|
throws SQLException, AuthorizeException, IOException {
|
||||||
PoolTask poolTask = poolTaskDAO.findByWorkflowItemAndEPerson(context, workflowItem, ePerson);
|
PoolTask poolTask = poolTaskDAO.findByWorkflowItemAndEPerson(context, workflowItem, ePerson);
|
||||||
|
|
||||||
@@ -113,9 +114,9 @@ public class PoolTaskServiceImpl implements PoolTaskService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteByWorkflowItem(Context context, XmlWorkflowItem xmlWorkflowItem)
|
public void deleteByWorkflowItem(Context context, WorkflowItem workflowItem)
|
||||||
throws SQLException, AuthorizeException {
|
throws SQLException, AuthorizeException {
|
||||||
List<PoolTask> tasks = find(context, xmlWorkflowItem);
|
List<PoolTask> tasks = find(context, workflowItem);
|
||||||
//Use an iterator to remove the tasks !
|
//Use an iterator to remove the tasks !
|
||||||
Iterator<PoolTask> iterator = tasks.iterator();
|
Iterator<PoolTask> iterator = tasks.iterator();
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
|
@@ -23,6 +23,7 @@ import org.dspace.core.Context;
|
|||||||
import org.dspace.core.ReloadableEntity;
|
import org.dspace.core.ReloadableEntity;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
import org.dspace.eperson.Group;
|
import org.dspace.eperson.Group;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a workflow assignments database representation.
|
* Represents a workflow assignments database representation.
|
||||||
@@ -51,7 +52,7 @@ public class WorkflowItemRole implements ReloadableEntity<Integer> {
|
|||||||
|
|
||||||
@OneToOne(fetch = FetchType.LAZY)
|
@OneToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(name = "workflowitem_id")
|
@JoinColumn(name = "workflowitem_id")
|
||||||
private XmlWorkflowItem workflowItem;
|
private WorkflowItem workflowItem;
|
||||||
|
|
||||||
@OneToOne(fetch = FetchType.LAZY)
|
@OneToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(name = "eperson_id")
|
@JoinColumn(name = "eperson_id")
|
||||||
@@ -82,11 +83,11 @@ public class WorkflowItemRole implements ReloadableEntity<Integer> {
|
|||||||
return this.roleId;
|
return this.roleId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setWorkflowItem(XmlWorkflowItem xmlWorkflowItem) {
|
public void setWorkflowItem(WorkflowItem workflowItem) {
|
||||||
this.workflowItem = xmlWorkflowItem;
|
this.workflowItem = workflowItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
public XmlWorkflowItem getWorkflowItem() {
|
public WorkflowItem getWorkflowItem() {
|
||||||
return workflowItem;
|
return workflowItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -16,6 +16,7 @@ import org.apache.commons.collections4.CollectionUtils;
|
|||||||
import org.dspace.authorize.AuthorizeException;
|
import org.dspace.authorize.AuthorizeException;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.dao.WorkflowItemRoleDAO;
|
import org.dspace.xmlworkflow.storedcomponents.dao.WorkflowItemRoleDAO;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.WorkflowItemRoleService;
|
import org.dspace.xmlworkflow.storedcomponents.service.WorkflowItemRoleService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -37,20 +38,20 @@ public class WorkflowItemRoleServiceImpl implements WorkflowItemRoleService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<WorkflowItemRole> find(Context context, XmlWorkflowItem workflowItem, String role) throws SQLException {
|
public List<WorkflowItemRole> find(Context context, WorkflowItem workflowItem, String role) throws SQLException {
|
||||||
return workflowItemRoleDAO.findByWorkflowItemAndRole(context, workflowItem, role);
|
return workflowItemRoleDAO.findByWorkflowItemAndRole(context, workflowItem, role);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<WorkflowItemRole> findByWorkflowItem(Context context, XmlWorkflowItem xmlWorkflowItem)
|
public List<WorkflowItemRole> findByWorkflowItem(Context context, WorkflowItem workflowItem)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
return workflowItemRoleDAO.findByWorkflowItem(context, xmlWorkflowItem);
|
return workflowItemRoleDAO.findByWorkflowItem(context, workflowItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteForWorkflowItem(Context context, XmlWorkflowItem xmlWorkflowItem)
|
public void deleteForWorkflowItem(Context context, WorkflowItem workflowItem)
|
||||||
throws SQLException, AuthorizeException {
|
throws SQLException, AuthorizeException {
|
||||||
Iterator<WorkflowItemRole> workflowItemRoles = findByWorkflowItem(context, xmlWorkflowItem).iterator();
|
Iterator<WorkflowItemRole> workflowItemRoles = findByWorkflowItem(context, workflowItem).iterator();
|
||||||
while (workflowItemRoles.hasNext()) {
|
while (workflowItemRoles.hasNext()) {
|
||||||
WorkflowItemRole workflowItemRole = workflowItemRoles.next();
|
WorkflowItemRole workflowItemRole = workflowItemRoles.next();
|
||||||
workflowItemRoles.remove();
|
workflowItemRoles.remove();
|
||||||
|
@@ -1,141 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.xmlworkflow.storedcomponents;
|
|
||||||
|
|
||||||
import javax.persistence.Column;
|
|
||||||
import javax.persistence.Entity;
|
|
||||||
import javax.persistence.FetchType;
|
|
||||||
import javax.persistence.GeneratedValue;
|
|
||||||
import javax.persistence.GenerationType;
|
|
||||||
import javax.persistence.Id;
|
|
||||||
import javax.persistence.JoinColumn;
|
|
||||||
import javax.persistence.ManyToOne;
|
|
||||||
import javax.persistence.OneToOne;
|
|
||||||
import javax.persistence.SequenceGenerator;
|
|
||||||
import javax.persistence.Table;
|
|
||||||
|
|
||||||
import org.dspace.content.Collection;
|
|
||||||
import org.dspace.content.Item;
|
|
||||||
import org.dspace.core.Context;
|
|
||||||
import org.dspace.eperson.EPerson;
|
|
||||||
import org.dspace.workflow.WorkflowItem;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class representing an item going through the workflow process in DSpace
|
|
||||||
*
|
|
||||||
* @author Bram De Schouwer (bram.deschouwer at dot com)
|
|
||||||
* @author Kevin Van de Velde (kevin at atmire dot com)
|
|
||||||
* @author Ben Bosman (ben at atmire dot com)
|
|
||||||
* @author Mark Diggory (markd at atmire dot com)
|
|
||||||
*/
|
|
||||||
@Entity
|
|
||||||
@Table(name = "cwf_workflowitem")
|
|
||||||
public class XmlWorkflowItem implements WorkflowItem {
|
|
||||||
|
|
||||||
@Id
|
|
||||||
@Column(name = "workflowitem_id")
|
|
||||||
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "cwf_workflowitem_seq")
|
|
||||||
@SequenceGenerator(name = "cwf_workflowitem_seq", sequenceName = "cwf_workflowitem_seq", allocationSize = 1)
|
|
||||||
private Integer id;
|
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
|
||||||
@JoinColumn(name = "collection_id")
|
|
||||||
private Collection collection;
|
|
||||||
|
|
||||||
@OneToOne(fetch = FetchType.LAZY)
|
|
||||||
@JoinColumn(name = "item_id", unique = true)
|
|
||||||
private Item item;
|
|
||||||
|
|
||||||
@Column(name = "multiple_titles")
|
|
||||||
private boolean multipleTitles = false;
|
|
||||||
|
|
||||||
@Column(name = "published_before")
|
|
||||||
private boolean publishedBefore = false;
|
|
||||||
|
|
||||||
@Column(name = "multiple_files")
|
|
||||||
private boolean multipleFiles = false;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Protected constructor, create object using:
|
|
||||||
* {@link org.dspace.xmlworkflow.storedcomponents.service.XmlWorkflowItemService#create(Context, Item, Collection)}
|
|
||||||
*/
|
|
||||||
protected XmlWorkflowItem() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the internal ID of this workflow item
|
|
||||||
*
|
|
||||||
* @return the internal identifier
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Integer getID() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Collection getCollection() {
|
|
||||||
return this.collection;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCollection(Collection collection) {
|
|
||||||
this.collection = collection;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Item getItem() {
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setItem(Item item) {
|
|
||||||
this.item = item;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public EPerson getSubmitter() {
|
|
||||||
return item.getSubmitter();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasMultipleFiles() {
|
|
||||||
return multipleFiles;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setMultipleFiles(boolean b) {
|
|
||||||
this.multipleFiles = b;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasMultipleTitles() {
|
|
||||||
return this.multipleTitles;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setMultipleTitles(boolean b) {
|
|
||||||
this.multipleTitles = b;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isPublishedBefore() {
|
|
||||||
return this.publishedBefore;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setPublishedBefore(boolean b) {
|
|
||||||
this.publishedBefore = b;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getState() {
|
|
||||||
// FIXME not used by the xml workflow, should be removed when the basic workflow is removed and the interfaces
|
|
||||||
// simplified
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -13,8 +13,8 @@ import java.util.List;
|
|||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.core.GenericDAO;
|
import org.dspace.core.GenericDAO;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.ClaimedTask;
|
import org.dspace.xmlworkflow.storedcomponents.ClaimedTask;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Database Access Object interface class for the ClaimedTask object.
|
* Database Access Object interface class for the ClaimedTask object.
|
||||||
@@ -26,21 +26,21 @@ import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|||||||
*/
|
*/
|
||||||
public interface ClaimedTaskDAO extends GenericDAO<ClaimedTask> {
|
public interface ClaimedTaskDAO extends GenericDAO<ClaimedTask> {
|
||||||
|
|
||||||
public List<ClaimedTask> findByWorkflowItem(Context context, XmlWorkflowItem workflowItem) throws SQLException;
|
public List<ClaimedTask> findByWorkflowItem(Context context, WorkflowItem workflowItem) throws SQLException;
|
||||||
|
|
||||||
public ClaimedTask findByWorkflowItemAndEPerson(Context context, XmlWorkflowItem workflowItem, EPerson ePerson)
|
public ClaimedTask findByWorkflowItemAndEPerson(Context context, WorkflowItem workflowItem, EPerson ePerson)
|
||||||
throws SQLException;
|
throws SQLException;
|
||||||
|
|
||||||
public List<ClaimedTask> findByEperson(Context context, EPerson ePerson) throws SQLException;
|
public List<ClaimedTask> findByEperson(Context context, EPerson ePerson) throws SQLException;
|
||||||
|
|
||||||
public List<ClaimedTask> findByWorkflowItemAndStepId(Context context, XmlWorkflowItem workflowItem, String stepID)
|
public List<ClaimedTask> findByWorkflowItemAndStepId(Context context, WorkflowItem workflowItem, String stepID)
|
||||||
throws SQLException;
|
throws SQLException;
|
||||||
|
|
||||||
public ClaimedTask findByEPersonAndWorkflowItemAndStepIdAndActionId(Context context, EPerson ePerson,
|
public ClaimedTask findByEPersonAndWorkflowItemAndStepIdAndActionId(Context context, EPerson ePerson,
|
||||||
XmlWorkflowItem workflowItem, String stepID,
|
WorkflowItem workflowItem, String stepID,
|
||||||
String actionID) throws SQLException;
|
String actionID) throws SQLException;
|
||||||
|
|
||||||
public List<ClaimedTask> findByWorkflowItemAndStepIdAndActionId(Context c, XmlWorkflowItem workflowItem,
|
public List<ClaimedTask> findByWorkflowItemAndStepIdAndActionId(Context c, WorkflowItem workflowItem,
|
||||||
String stepID, String actionID) throws SQLException;
|
String stepID, String actionID) throws SQLException;
|
||||||
|
|
||||||
public List<ClaimedTask> findByStep(Context context, String stepID) throws SQLException;
|
public List<ClaimedTask> findByStep(Context context, String stepID) throws SQLException;
|
||||||
|
@@ -13,8 +13,8 @@ import java.util.List;
|
|||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.core.GenericDAO;
|
import org.dspace.core.GenericDAO;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.InProgressUser;
|
import org.dspace.xmlworkflow.storedcomponents.InProgressUser;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Database Access Object interface class for the InProgressUser object.
|
* Database Access Object interface class for the InProgressUser object.
|
||||||
@@ -26,14 +26,14 @@ import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|||||||
*/
|
*/
|
||||||
public interface InProgressUserDAO extends GenericDAO<InProgressUser> {
|
public interface InProgressUserDAO extends GenericDAO<InProgressUser> {
|
||||||
|
|
||||||
public InProgressUser findByWorkflowItemAndEPerson(Context context, XmlWorkflowItem workflowItem, EPerson ePerson)
|
public InProgressUser findByWorkflowItemAndEPerson(Context context, WorkflowItem workflowItem, EPerson ePerson)
|
||||||
throws SQLException;
|
throws SQLException;
|
||||||
|
|
||||||
public List<InProgressUser> findByEperson(Context context, EPerson ePerson) throws SQLException;
|
public List<InProgressUser> findByEperson(Context context, EPerson ePerson) throws SQLException;
|
||||||
|
|
||||||
public List<InProgressUser> findByWorkflowItem(Context context, XmlWorkflowItem workflowItem) throws SQLException;
|
public List<InProgressUser> findByWorkflowItem(Context context, WorkflowItem workflowItem) throws SQLException;
|
||||||
|
|
||||||
public int countInProgressUsers(Context context, XmlWorkflowItem workflowItem) throws SQLException;
|
public int countInProgressUsers(Context context, WorkflowItem workflowItem) throws SQLException;
|
||||||
|
|
||||||
public int countFinishedUsers(Context context, XmlWorkflowItem workflowItem) throws SQLException;
|
public int countFinishedUsers(Context context, WorkflowItem workflowItem) throws SQLException;
|
||||||
}
|
}
|
||||||
|
@@ -14,8 +14,8 @@ import org.dspace.core.Context;
|
|||||||
import org.dspace.core.GenericDAO;
|
import org.dspace.core.GenericDAO;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
import org.dspace.eperson.Group;
|
import org.dspace.eperson.Group;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.PoolTask;
|
import org.dspace.xmlworkflow.storedcomponents.PoolTask;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Database Access Object interface class for the PoolTask object.
|
* Database Access Object interface class for the PoolTask object.
|
||||||
@@ -31,11 +31,11 @@ public interface PoolTaskDAO extends GenericDAO<PoolTask> {
|
|||||||
|
|
||||||
public List<PoolTask> findByGroup(Context context, Group group) throws SQLException;
|
public List<PoolTask> findByGroup(Context context, Group group) throws SQLException;
|
||||||
|
|
||||||
public List<PoolTask> findByWorkflowItem(Context context, XmlWorkflowItem workflowItem) throws SQLException;
|
public List<PoolTask> findByWorkflowItem(Context context, WorkflowItem workflowItem) throws SQLException;
|
||||||
|
|
||||||
public PoolTask findByWorkflowItemAndEPerson(Context context, XmlWorkflowItem workflowItem, EPerson ePerson)
|
public PoolTask findByWorkflowItemAndEPerson(Context context, WorkflowItem workflowItem, EPerson ePerson)
|
||||||
throws SQLException;
|
throws SQLException;
|
||||||
|
|
||||||
public PoolTask findByWorkflowItemAndGroup(Context context, Group group, XmlWorkflowItem workflowItem)
|
public PoolTask findByWorkflowItemAndGroup(Context context, Group group, WorkflowItem workflowItem)
|
||||||
throws SQLException;
|
throws SQLException;
|
||||||
}
|
}
|
||||||
|
@@ -15,17 +15,17 @@ import org.dspace.content.Item;
|
|||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.core.GenericDAO;
|
import org.dspace.core.GenericDAO;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
import org.dspace.workflow.WorkflowItem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Database Access Object interface class for the XmlWorkflowItem object.
|
* Database Access Object interface class for the WorkflowItem object.
|
||||||
* The implementation of this class is responsible for all database calls for the XmlWorkflowItem object and is
|
* The implementation of this class is responsible for all database calls for the WorkflowItem object and is
|
||||||
* autowired by spring
|
* autowired by spring
|
||||||
* This class should only be accessed from a single service and should never be exposed outside of the API
|
* This class should only be accessed from a single service and should never be exposed outside of the API
|
||||||
*
|
*
|
||||||
* @author kevinvandevelde at atmire.com
|
* @author kevinvandevelde at atmire.com
|
||||||
*/
|
*/
|
||||||
public interface XmlWorkflowItemDAO extends GenericDAO<XmlWorkflowItem> {
|
public interface WorkflowItemDAO extends GenericDAO<WorkflowItem> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find all the workflow items in a specific collection using the pagination parameters (offset, limit)
|
* Find all the workflow items in a specific collection using the pagination parameters (offset, limit)
|
||||||
@@ -41,18 +41,18 @@ public interface XmlWorkflowItemDAO extends GenericDAO<XmlWorkflowItem> {
|
|||||||
* @return all the workflow items respecting the parameters conditions
|
* @return all the workflow items respecting the parameters conditions
|
||||||
* @throws SQLException
|
* @throws SQLException
|
||||||
*/
|
*/
|
||||||
public List<XmlWorkflowItem> findAllInCollection(Context context, Integer offset, Integer limit,
|
public List<WorkflowItem> findAllInCollection(Context context, Integer offset, Integer limit,
|
||||||
Collection collection) throws SQLException;
|
Collection collection) throws SQLException;
|
||||||
|
|
||||||
public int countAll(Context context) throws SQLException;
|
public int countAll(Context context) throws SQLException;
|
||||||
|
|
||||||
public int countAllInCollection(Context context, Collection collection) throws SQLException;
|
public int countAllInCollection(Context context, Collection collection) throws SQLException;
|
||||||
|
|
||||||
public List<XmlWorkflowItem> findBySubmitter(Context context, EPerson ep) throws SQLException;
|
public List<WorkflowItem> findBySubmitter(Context context, EPerson ep) throws SQLException;
|
||||||
|
|
||||||
public List<XmlWorkflowItem> findByCollection(Context context, Collection collection) throws SQLException;
|
public List<WorkflowItem> findByCollection(Context context, Collection collection) throws SQLException;
|
||||||
|
|
||||||
public XmlWorkflowItem findByItem(Context context, Item item) throws SQLException;
|
public WorkflowItem findByItem(Context context, Item item) throws SQLException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return all the workflow items from a specific submitter respecting the pagination parameters
|
* Return all the workflow items from a specific submitter respecting the pagination parameters
|
||||||
@@ -67,7 +67,7 @@ public interface XmlWorkflowItemDAO extends GenericDAO<XmlWorkflowItem> {
|
|||||||
* the max number of records to return
|
* the max number of records to return
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public List<XmlWorkflowItem> findBySubmitter(Context context, EPerson ep, Integer offset, Integer limit)
|
public List<WorkflowItem> findBySubmitter(Context context, EPerson ep, Integer offset, Integer limit)
|
||||||
throws SQLException;
|
throws SQLException;
|
||||||
|
|
||||||
/**
|
/**
|
@@ -13,8 +13,8 @@ import java.util.List;
|
|||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.core.GenericDAO;
|
import org.dspace.core.GenericDAO;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.WorkflowItemRole;
|
import org.dspace.xmlworkflow.storedcomponents.WorkflowItemRole;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Database Access Object interface class for the WorkflowItemRole object.
|
* Database Access Object interface class for the WorkflowItemRole object.
|
||||||
@@ -26,10 +26,10 @@ import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|||||||
*/
|
*/
|
||||||
public interface WorkflowItemRoleDAO extends GenericDAO<WorkflowItemRole> {
|
public interface WorkflowItemRoleDAO extends GenericDAO<WorkflowItemRole> {
|
||||||
|
|
||||||
public List<WorkflowItemRole> findByWorkflowItemAndRole(Context context, XmlWorkflowItem workflowItem, String role)
|
public List<WorkflowItemRole> findByWorkflowItemAndRole(Context context, WorkflowItem workflowItem, String role)
|
||||||
throws SQLException;
|
throws SQLException;
|
||||||
|
|
||||||
public List<WorkflowItemRole> findByWorkflowItem(Context context, XmlWorkflowItem workflowItem) throws SQLException;
|
public List<WorkflowItemRole> findByWorkflowItem(Context context, WorkflowItem workflowItem) throws SQLException;
|
||||||
|
|
||||||
public List<WorkflowItemRole> findByEPerson(Context context, EPerson ePerson) throws SQLException;
|
public List<WorkflowItemRole> findByEPerson(Context context, EPerson ePerson) throws SQLException;
|
||||||
}
|
}
|
||||||
|
@@ -16,9 +16,9 @@ import javax.persistence.criteria.Root;
|
|||||||
import org.dspace.core.AbstractHibernateDAO;
|
import org.dspace.core.AbstractHibernateDAO;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.ClaimedTask;
|
import org.dspace.xmlworkflow.storedcomponents.ClaimedTask;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.ClaimedTask_;
|
import org.dspace.xmlworkflow.storedcomponents.ClaimedTask_;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.dao.ClaimedTaskDAO;
|
import org.dspace.xmlworkflow.storedcomponents.dao.ClaimedTaskDAO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -34,7 +34,7 @@ public class ClaimedTaskDAOImpl extends AbstractHibernateDAO<ClaimedTask> implem
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ClaimedTask> findByWorkflowItem(Context context, XmlWorkflowItem workflowItem) throws SQLException {
|
public List<ClaimedTask> findByWorkflowItem(Context context, WorkflowItem workflowItem) throws SQLException {
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
||||||
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, ClaimedTask.class);
|
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, ClaimedTask.class);
|
||||||
Root<ClaimedTask> claimedTaskRoot = criteriaQuery.from(ClaimedTask.class);
|
Root<ClaimedTask> claimedTaskRoot = criteriaQuery.from(ClaimedTask.class);
|
||||||
@@ -45,7 +45,7 @@ public class ClaimedTaskDAOImpl extends AbstractHibernateDAO<ClaimedTask> implem
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ClaimedTask findByWorkflowItemAndEPerson(Context context, XmlWorkflowItem workflowItem, EPerson ePerson)
|
public ClaimedTask findByWorkflowItemAndEPerson(Context context, WorkflowItem workflowItem, EPerson ePerson)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
||||||
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, ClaimedTask.class);
|
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, ClaimedTask.class);
|
||||||
@@ -72,7 +72,7 @@ public class ClaimedTaskDAOImpl extends AbstractHibernateDAO<ClaimedTask> implem
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ClaimedTask> findByWorkflowItemAndStepId(Context context, XmlWorkflowItem workflowItem, String stepID)
|
public List<ClaimedTask> findByWorkflowItemAndStepId(Context context, WorkflowItem workflowItem, String stepID)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
||||||
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, ClaimedTask.class);
|
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, ClaimedTask.class);
|
||||||
@@ -88,7 +88,7 @@ public class ClaimedTaskDAOImpl extends AbstractHibernateDAO<ClaimedTask> implem
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ClaimedTask findByEPersonAndWorkflowItemAndStepIdAndActionId(Context context, EPerson ePerson,
|
public ClaimedTask findByEPersonAndWorkflowItemAndStepIdAndActionId(Context context, EPerson ePerson,
|
||||||
XmlWorkflowItem workflowItem, String stepID,
|
WorkflowItem workflowItem, String stepID,
|
||||||
String actionID) throws SQLException {
|
String actionID) throws SQLException {
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
||||||
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, ClaimedTask.class);
|
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, ClaimedTask.class);
|
||||||
@@ -105,7 +105,7 @@ public class ClaimedTaskDAOImpl extends AbstractHibernateDAO<ClaimedTask> implem
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ClaimedTask> findByWorkflowItemAndStepIdAndActionId(Context context, XmlWorkflowItem workflowItem,
|
public List<ClaimedTask> findByWorkflowItemAndStepIdAndActionId(Context context, WorkflowItem workflowItem,
|
||||||
String stepID, String actionID)
|
String stepID, String actionID)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
||||||
|
@@ -16,9 +16,9 @@ import javax.persistence.criteria.Root;
|
|||||||
import org.dspace.core.AbstractHibernateDAO;
|
import org.dspace.core.AbstractHibernateDAO;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.InProgressUser;
|
import org.dspace.xmlworkflow.storedcomponents.InProgressUser;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.InProgressUser_;
|
import org.dspace.xmlworkflow.storedcomponents.InProgressUser_;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.dao.InProgressUserDAO;
|
import org.dspace.xmlworkflow.storedcomponents.dao.InProgressUserDAO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -34,7 +34,7 @@ public class InProgressUserDAOImpl extends AbstractHibernateDAO<InProgressUser>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InProgressUser findByWorkflowItemAndEPerson(Context context, XmlWorkflowItem workflowItem, EPerson ePerson)
|
public InProgressUser findByWorkflowItemAndEPerson(Context context, WorkflowItem workflowItem, EPerson ePerson)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
|
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
||||||
@@ -61,7 +61,7 @@ public class InProgressUserDAOImpl extends AbstractHibernateDAO<InProgressUser>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<InProgressUser> findByWorkflowItem(Context context, XmlWorkflowItem workflowItem) throws SQLException {
|
public List<InProgressUser> findByWorkflowItem(Context context, WorkflowItem workflowItem) throws SQLException {
|
||||||
|
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
||||||
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, InProgressUser.class);
|
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, InProgressUser.class);
|
||||||
@@ -72,7 +72,7 @@ public class InProgressUserDAOImpl extends AbstractHibernateDAO<InProgressUser>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int countInProgressUsers(Context context, XmlWorkflowItem workflowItem) throws SQLException {
|
public int countInProgressUsers(Context context, WorkflowItem workflowItem) throws SQLException {
|
||||||
|
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
||||||
CriteriaQuery<Long> criteriaQuery = criteriaBuilder.createQuery(Long.class);
|
CriteriaQuery<Long> criteriaQuery = criteriaBuilder.createQuery(Long.class);
|
||||||
@@ -88,7 +88,7 @@ public class InProgressUserDAOImpl extends AbstractHibernateDAO<InProgressUser>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int countFinishedUsers(Context context, XmlWorkflowItem workflowItem) throws SQLException {
|
public int countFinishedUsers(Context context, WorkflowItem workflowItem) throws SQLException {
|
||||||
|
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
||||||
CriteriaQuery<Long> criteriaQuery = criteriaBuilder.createQuery(Long.class);
|
CriteriaQuery<Long> criteriaQuery = criteriaBuilder.createQuery(Long.class);
|
||||||
|
@@ -17,9 +17,9 @@ import org.dspace.core.AbstractHibernateDAO;
|
|||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
import org.dspace.eperson.Group;
|
import org.dspace.eperson.Group;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.PoolTask;
|
import org.dspace.xmlworkflow.storedcomponents.PoolTask;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.PoolTask_;
|
import org.dspace.xmlworkflow.storedcomponents.PoolTask_;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.dao.PoolTaskDAO;
|
import org.dspace.xmlworkflow.storedcomponents.dao.PoolTaskDAO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -56,7 +56,7 @@ public class PoolTaskDAOImpl extends AbstractHibernateDAO<PoolTask> implements P
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PoolTask> findByWorkflowItem(Context context, XmlWorkflowItem workflowItem) throws SQLException {
|
public List<PoolTask> findByWorkflowItem(Context context, WorkflowItem workflowItem) throws SQLException {
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
||||||
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, PoolTask.class);
|
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, PoolTask.class);
|
||||||
Root<PoolTask> poolTaskRoot = criteriaQuery.from(PoolTask.class);
|
Root<PoolTask> poolTaskRoot = criteriaQuery.from(PoolTask.class);
|
||||||
@@ -66,7 +66,7 @@ public class PoolTaskDAOImpl extends AbstractHibernateDAO<PoolTask> implements P
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PoolTask findByWorkflowItemAndEPerson(Context context, XmlWorkflowItem workflowItem, EPerson ePerson)
|
public PoolTask findByWorkflowItemAndEPerson(Context context, WorkflowItem workflowItem, EPerson ePerson)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
||||||
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, PoolTask.class);
|
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, PoolTask.class);
|
||||||
@@ -81,7 +81,7 @@ public class PoolTaskDAOImpl extends AbstractHibernateDAO<PoolTask> implements P
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PoolTask findByWorkflowItemAndGroup(Context context, Group group, XmlWorkflowItem workflowItem)
|
public PoolTask findByWorkflowItemAndGroup(Context context, Group group, WorkflowItem workflowItem)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
||||||
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, PoolTask.class);
|
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, PoolTask.class);
|
||||||
|
@@ -0,0 +1,137 @@
|
|||||||
|
/**
|
||||||
|
* 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.xmlworkflow.storedcomponents.dao.impl;
|
||||||
|
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.List;
|
||||||
|
import javax.persistence.criteria.CriteriaBuilder;
|
||||||
|
import javax.persistence.criteria.CriteriaQuery;
|
||||||
|
import javax.persistence.criteria.Join;
|
||||||
|
import javax.persistence.criteria.Root;
|
||||||
|
|
||||||
|
import org.dspace.content.Collection;
|
||||||
|
import org.dspace.content.Item;
|
||||||
|
import org.dspace.content.Item_;
|
||||||
|
import org.dspace.core.AbstractHibernateDAO;
|
||||||
|
import org.dspace.core.Context;
|
||||||
|
import org.dspace.eperson.EPerson;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
|
import org.dspace.workflow.WorkflowItem_;
|
||||||
|
import org.dspace.xmlworkflow.storedcomponents.dao.WorkflowItemDAO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hibernate implementation of the Database Access Object interface class for the WorkflowItem object.
|
||||||
|
* This class is responsible for all database calls for the WorkflowItem object and is autowired by spring
|
||||||
|
* This class should never be accessed directly.
|
||||||
|
*
|
||||||
|
* @author kevinvandevelde at atmire.com
|
||||||
|
*/
|
||||||
|
public class WorkflowItemDAOImpl extends AbstractHibernateDAO<WorkflowItem> implements WorkflowItemDAO {
|
||||||
|
|
||||||
|
protected WorkflowItemDAOImpl() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<WorkflowItem> findAllInCollection(Context context, Integer offset,
|
||||||
|
Integer limit,
|
||||||
|
Collection collection) throws SQLException {
|
||||||
|
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
||||||
|
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, WorkflowItem.class);
|
||||||
|
Root<WorkflowItem> workflowItemRoot = criteriaQuery.from(WorkflowItem.class);
|
||||||
|
criteriaQuery.select(workflowItemRoot);
|
||||||
|
if (collection != null) {
|
||||||
|
criteriaQuery.where(criteriaBuilder.equal(workflowItemRoot.get(WorkflowItem_.collection),
|
||||||
|
collection));
|
||||||
|
}
|
||||||
|
if (offset == null) {
|
||||||
|
offset = -1;
|
||||||
|
}
|
||||||
|
if (limit == null) {
|
||||||
|
limit = -1;
|
||||||
|
}
|
||||||
|
criteriaQuery.orderBy(criteriaBuilder.asc(workflowItemRoot.get(WorkflowItem_.id)));
|
||||||
|
return list(context, criteriaQuery, false, WorkflowItem.class, limit, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int countAll(Context context) throws SQLException {
|
||||||
|
return countAllInCollection(context, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int countAllInCollection(Context context, Collection collection) throws SQLException {
|
||||||
|
|
||||||
|
|
||||||
|
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
||||||
|
CriteriaQuery<Long> criteriaQuery = criteriaBuilder.createQuery(Long.class);
|
||||||
|
|
||||||
|
Root<WorkflowItem> workflowItemRoot = criteriaQuery.from(WorkflowItem.class);
|
||||||
|
if (collection != null) {
|
||||||
|
criteriaQuery.where(criteriaBuilder.equal(workflowItemRoot.get(WorkflowItem_.collection),
|
||||||
|
collection));
|
||||||
|
}
|
||||||
|
return count(context, criteriaQuery, criteriaBuilder, workflowItemRoot);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<WorkflowItem> findBySubmitter(Context context, EPerson ep) throws SQLException {
|
||||||
|
return findBySubmitter(context, ep, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<WorkflowItem> findBySubmitter(Context context, EPerson ep, Integer offset, Integer limit)
|
||||||
|
throws SQLException {
|
||||||
|
if (offset == null) {
|
||||||
|
offset = -1;
|
||||||
|
}
|
||||||
|
if (limit == null) {
|
||||||
|
limit = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
||||||
|
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, WorkflowItem.class);
|
||||||
|
Root<WorkflowItem> workflowItemRoot = criteriaQuery.from(WorkflowItem.class);
|
||||||
|
Join<WorkflowItem, Item> join = workflowItemRoot.join("item");
|
||||||
|
criteriaQuery.select(workflowItemRoot);
|
||||||
|
criteriaQuery.where(criteriaBuilder.equal(join.get(Item_.submitter), ep));
|
||||||
|
criteriaQuery.orderBy(criteriaBuilder.asc(workflowItemRoot.get(WorkflowItem_.id)));
|
||||||
|
return list(context, criteriaQuery, false, WorkflowItem.class, limit, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int countBySubmitter(Context context, EPerson ep) throws SQLException {
|
||||||
|
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
||||||
|
CriteriaQuery<Long> criteriaQuery = criteriaBuilder.createQuery(Long.class);
|
||||||
|
Root<WorkflowItem> workflowItemRoot = criteriaQuery.from(WorkflowItem.class);
|
||||||
|
Join<WorkflowItem, Item> join = workflowItemRoot.join("item");
|
||||||
|
criteriaQuery.where(criteriaBuilder.equal(join.get(Item_.submitter), ep));
|
||||||
|
return count(context, criteriaQuery, criteriaBuilder, workflowItemRoot);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<WorkflowItem> findByCollection(Context context, Collection collection) throws SQLException {
|
||||||
|
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
||||||
|
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, WorkflowItem.class);
|
||||||
|
Root<WorkflowItem> workflowItemRoot = criteriaQuery.from(WorkflowItem.class);
|
||||||
|
criteriaQuery.select(workflowItemRoot);
|
||||||
|
criteriaQuery.where(criteriaBuilder.equal(workflowItemRoot.get(WorkflowItem_.collection), collection));
|
||||||
|
criteriaQuery.orderBy(criteriaBuilder.asc(workflowItemRoot.get(WorkflowItem_.id)));
|
||||||
|
return list(context, criteriaQuery, false, WorkflowItem.class, -1, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WorkflowItem findByItem(Context context, Item item) throws SQLException {
|
||||||
|
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
||||||
|
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, WorkflowItem.class);
|
||||||
|
Root<WorkflowItem> workflowItemRoot = criteriaQuery.from(WorkflowItem.class);
|
||||||
|
criteriaQuery.select(workflowItemRoot);
|
||||||
|
criteriaQuery.where(criteriaBuilder.equal(workflowItemRoot.get(WorkflowItem_.item), item));
|
||||||
|
return uniqueResult(context, criteriaQuery, false, WorkflowItem.class, -1, -1);
|
||||||
|
}
|
||||||
|
}
|
@@ -16,9 +16,9 @@ import javax.persistence.criteria.Root;
|
|||||||
import org.dspace.core.AbstractHibernateDAO;
|
import org.dspace.core.AbstractHibernateDAO;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.WorkflowItemRole;
|
import org.dspace.xmlworkflow.storedcomponents.WorkflowItemRole;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.WorkflowItemRole_;
|
import org.dspace.xmlworkflow.storedcomponents.WorkflowItemRole_;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.dao.WorkflowItemRoleDAO;
|
import org.dspace.xmlworkflow.storedcomponents.dao.WorkflowItemRoleDAO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -36,7 +36,7 @@ public class WorkflowItemRoleDAOImpl extends AbstractHibernateDAO<WorkflowItemRo
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<WorkflowItemRole> findByWorkflowItemAndRole(Context context,
|
public List<WorkflowItemRole> findByWorkflowItemAndRole(Context context,
|
||||||
XmlWorkflowItem workflowItem,
|
WorkflowItem workflowItem,
|
||||||
String role) throws SQLException {
|
String role) throws SQLException {
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
||||||
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, WorkflowItemRole.class);
|
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, WorkflowItemRole.class);
|
||||||
@@ -55,7 +55,7 @@ public class WorkflowItemRoleDAOImpl extends AbstractHibernateDAO<WorkflowItemRo
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<WorkflowItemRole> findByWorkflowItem(Context context,
|
public List<WorkflowItemRole> findByWorkflowItem(Context context,
|
||||||
XmlWorkflowItem workflowItem) throws SQLException {
|
WorkflowItem workflowItem) throws SQLException {
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
||||||
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, WorkflowItemRole.class);
|
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, WorkflowItemRole.class);
|
||||||
Root<WorkflowItemRole> workflowItemRoleRoot = criteriaQuery.from(WorkflowItemRole.class);
|
Root<WorkflowItemRole> workflowItemRoleRoot = criteriaQuery.from(WorkflowItemRole.class);
|
||||||
|
@@ -1,137 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.xmlworkflow.storedcomponents.dao.impl;
|
|
||||||
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.List;
|
|
||||||
import javax.persistence.criteria.CriteriaBuilder;
|
|
||||||
import javax.persistence.criteria.CriteriaQuery;
|
|
||||||
import javax.persistence.criteria.Join;
|
|
||||||
import javax.persistence.criteria.Root;
|
|
||||||
|
|
||||||
import org.dspace.content.Collection;
|
|
||||||
import org.dspace.content.Item;
|
|
||||||
import org.dspace.content.Item_;
|
|
||||||
import org.dspace.core.AbstractHibernateDAO;
|
|
||||||
import org.dspace.core.Context;
|
|
||||||
import org.dspace.eperson.EPerson;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem_;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.dao.XmlWorkflowItemDAO;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Hibernate implementation of the Database Access Object interface class for the XmlWorkflowItem object.
|
|
||||||
* This class is responsible for all database calls for the XmlWorkflowItem object and is autowired by spring
|
|
||||||
* This class should never be accessed directly.
|
|
||||||
*
|
|
||||||
* @author kevinvandevelde at atmire.com
|
|
||||||
*/
|
|
||||||
public class XmlWorkflowItemDAOImpl extends AbstractHibernateDAO<XmlWorkflowItem> implements XmlWorkflowItemDAO {
|
|
||||||
|
|
||||||
protected XmlWorkflowItemDAOImpl() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<XmlWorkflowItem> findAllInCollection(Context context, Integer offset,
|
|
||||||
Integer limit,
|
|
||||||
Collection collection) throws SQLException {
|
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
|
||||||
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, XmlWorkflowItem.class);
|
|
||||||
Root<XmlWorkflowItem> xmlWorkflowItemRoot = criteriaQuery.from(XmlWorkflowItem.class);
|
|
||||||
criteriaQuery.select(xmlWorkflowItemRoot);
|
|
||||||
if (collection != null) {
|
|
||||||
criteriaQuery.where(criteriaBuilder.equal(xmlWorkflowItemRoot.get(XmlWorkflowItem_.collection),
|
|
||||||
collection));
|
|
||||||
}
|
|
||||||
if (offset == null) {
|
|
||||||
offset = -1;
|
|
||||||
}
|
|
||||||
if (limit == null) {
|
|
||||||
limit = -1;
|
|
||||||
}
|
|
||||||
criteriaQuery.orderBy(criteriaBuilder.asc(xmlWorkflowItemRoot.get(XmlWorkflowItem_.id)));
|
|
||||||
return list(context, criteriaQuery, false, XmlWorkflowItem.class, limit, offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int countAll(Context context) throws SQLException {
|
|
||||||
return countAllInCollection(context, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int countAllInCollection(Context context, Collection collection) throws SQLException {
|
|
||||||
|
|
||||||
|
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
|
||||||
CriteriaQuery<Long> criteriaQuery = criteriaBuilder.createQuery(Long.class);
|
|
||||||
|
|
||||||
Root<XmlWorkflowItem> xmlWorkflowItemRoot = criteriaQuery.from(XmlWorkflowItem.class);
|
|
||||||
if (collection != null) {
|
|
||||||
criteriaQuery.where(criteriaBuilder.equal(xmlWorkflowItemRoot.get(XmlWorkflowItem_.collection),
|
|
||||||
collection));
|
|
||||||
}
|
|
||||||
return count(context, criteriaQuery, criteriaBuilder, xmlWorkflowItemRoot);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<XmlWorkflowItem> findBySubmitter(Context context, EPerson ep) throws SQLException {
|
|
||||||
return findBySubmitter(context, ep, null, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<XmlWorkflowItem> findBySubmitter(Context context, EPerson ep, Integer offset, Integer limit)
|
|
||||||
throws SQLException {
|
|
||||||
if (offset == null) {
|
|
||||||
offset = -1;
|
|
||||||
}
|
|
||||||
if (limit == null) {
|
|
||||||
limit = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
|
||||||
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, XmlWorkflowItem.class);
|
|
||||||
Root<XmlWorkflowItem> xmlWorkflowItemRoot = criteriaQuery.from(XmlWorkflowItem.class);
|
|
||||||
Join<XmlWorkflowItem, Item> join = xmlWorkflowItemRoot.join("item");
|
|
||||||
criteriaQuery.select(xmlWorkflowItemRoot);
|
|
||||||
criteriaQuery.where(criteriaBuilder.equal(join.get(Item_.submitter), ep));
|
|
||||||
criteriaQuery.orderBy(criteriaBuilder.asc(xmlWorkflowItemRoot.get(XmlWorkflowItem_.id)));
|
|
||||||
return list(context, criteriaQuery, false, XmlWorkflowItem.class, limit, offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int countBySubmitter(Context context, EPerson ep) throws SQLException {
|
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
|
||||||
CriteriaQuery<Long> criteriaQuery = criteriaBuilder.createQuery(Long.class);
|
|
||||||
Root<XmlWorkflowItem> xmlWorkflowItemRoot = criteriaQuery.from(XmlWorkflowItem.class);
|
|
||||||
Join<XmlWorkflowItem, Item> join = xmlWorkflowItemRoot.join("item");
|
|
||||||
criteriaQuery.where(criteriaBuilder.equal(join.get(Item_.submitter), ep));
|
|
||||||
return count(context, criteriaQuery, criteriaBuilder, xmlWorkflowItemRoot);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<XmlWorkflowItem> findByCollection(Context context, Collection collection) throws SQLException {
|
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
|
||||||
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, XmlWorkflowItem.class);
|
|
||||||
Root<XmlWorkflowItem> xmlWorkflowItemRoot = criteriaQuery.from(XmlWorkflowItem.class);
|
|
||||||
criteriaQuery.select(xmlWorkflowItemRoot);
|
|
||||||
criteriaQuery.where(criteriaBuilder.equal(xmlWorkflowItemRoot.get(XmlWorkflowItem_.collection), collection));
|
|
||||||
criteriaQuery.orderBy(criteriaBuilder.asc(xmlWorkflowItemRoot.get(XmlWorkflowItem_.id)));
|
|
||||||
return list(context, criteriaQuery, false, XmlWorkflowItem.class, -1, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public XmlWorkflowItem findByItem(Context context, Item item) throws SQLException {
|
|
||||||
CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context);
|
|
||||||
CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, XmlWorkflowItem.class);
|
|
||||||
Root<XmlWorkflowItem> xmlWorkflowItemRoot = criteriaQuery.from(XmlWorkflowItem.class);
|
|
||||||
criteriaQuery.select(xmlWorkflowItemRoot);
|
|
||||||
criteriaQuery.where(criteriaBuilder.equal(xmlWorkflowItemRoot.get(XmlWorkflowItem_.item), item));
|
|
||||||
return uniqueResult(context, criteriaQuery, false, XmlWorkflowItem.class, -1, -1);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -14,8 +14,8 @@ import org.dspace.authorize.AuthorizeException;
|
|||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
import org.dspace.service.DSpaceCRUDService;
|
import org.dspace.service.DSpaceCRUDService;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.ClaimedTask;
|
import org.dspace.xmlworkflow.storedcomponents.ClaimedTask;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service interface class for the ClaimedTask object.
|
* Service interface class for the ClaimedTask object.
|
||||||
@@ -26,26 +26,26 @@ import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|||||||
*/
|
*/
|
||||||
public interface ClaimedTaskService extends DSpaceCRUDService<ClaimedTask> {
|
public interface ClaimedTaskService extends DSpaceCRUDService<ClaimedTask> {
|
||||||
|
|
||||||
public List<ClaimedTask> findByWorkflowItem(Context context, XmlWorkflowItem workflowItem) throws SQLException;
|
public List<ClaimedTask> findByWorkflowItem(Context context, WorkflowItem workflowItem) throws SQLException;
|
||||||
|
|
||||||
public ClaimedTask findByWorkflowIdAndEPerson(Context context, XmlWorkflowItem workflowItem, EPerson ePerson)
|
public ClaimedTask findByWorkflowIdAndEPerson(Context context, WorkflowItem workflowItem, EPerson ePerson)
|
||||||
throws SQLException;
|
throws SQLException;
|
||||||
|
|
||||||
public List<ClaimedTask> findByEperson(Context context, EPerson ePerson) throws SQLException;
|
public List<ClaimedTask> findByEperson(Context context, EPerson ePerson) throws SQLException;
|
||||||
|
|
||||||
public List<ClaimedTask> find(Context context, XmlWorkflowItem workflowItem, String stepID) throws SQLException;
|
public List<ClaimedTask> find(Context context, WorkflowItem workflowItem, String stepID) throws SQLException;
|
||||||
|
|
||||||
public ClaimedTask find(Context context, EPerson ePerson, XmlWorkflowItem workflowItem, String stepID,
|
public ClaimedTask find(Context context, EPerson ePerson, WorkflowItem workflowItem, String stepID,
|
||||||
String actionID) throws SQLException;
|
String actionID) throws SQLException;
|
||||||
|
|
||||||
public List<ClaimedTask> find(Context context, XmlWorkflowItem workflowItem, String stepID, String actionID)
|
public List<ClaimedTask> find(Context context, WorkflowItem workflowItem, String stepID, String actionID)
|
||||||
throws SQLException;
|
throws SQLException;
|
||||||
|
|
||||||
public List<ClaimedTask> find(Context context, XmlWorkflowItem workflowItem) throws SQLException;
|
public List<ClaimedTask> find(Context context, WorkflowItem workflowItem) throws SQLException;
|
||||||
|
|
||||||
public List<ClaimedTask> findAllInStep(Context context, String stepID) throws SQLException;
|
public List<ClaimedTask> findAllInStep(Context context, String stepID) throws SQLException;
|
||||||
|
|
||||||
public void deleteByWorkflowItem(Context context, XmlWorkflowItem workflowItem)
|
public void deleteByWorkflowItem(Context context, WorkflowItem workflowItem)
|
||||||
throws SQLException, AuthorizeException;
|
throws SQLException, AuthorizeException;
|
||||||
|
|
||||||
List<ClaimedTask> findAll(Context context) throws SQLException;
|
List<ClaimedTask> findAll(Context context) throws SQLException;
|
||||||
|
@@ -13,8 +13,8 @@ import java.util.List;
|
|||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
import org.dspace.service.DSpaceCRUDService;
|
import org.dspace.service.DSpaceCRUDService;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.InProgressUser;
|
import org.dspace.xmlworkflow.storedcomponents.InProgressUser;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service interface class for the InProgressUser object.
|
* Service interface class for the InProgressUser object.
|
||||||
@@ -24,14 +24,14 @@ import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|||||||
* @author kevinvandevelde at atmire.com
|
* @author kevinvandevelde at atmire.com
|
||||||
*/
|
*/
|
||||||
public interface InProgressUserService extends DSpaceCRUDService<InProgressUser> {
|
public interface InProgressUserService extends DSpaceCRUDService<InProgressUser> {
|
||||||
public InProgressUser findByWorkflowItemAndEPerson(Context context, XmlWorkflowItem workflowItem, EPerson ePerson)
|
public InProgressUser findByWorkflowItemAndEPerson(Context context, WorkflowItem workflowItem, EPerson ePerson)
|
||||||
throws SQLException;
|
throws SQLException;
|
||||||
|
|
||||||
public List<InProgressUser> findByEperson(Context context, EPerson ePerson) throws SQLException;
|
public List<InProgressUser> findByEperson(Context context, EPerson ePerson) throws SQLException;
|
||||||
|
|
||||||
public List<InProgressUser> findByWorkflowItem(Context context, XmlWorkflowItem workflowItem) throws SQLException;
|
public List<InProgressUser> findByWorkflowItem(Context context, WorkflowItem workflowItem) throws SQLException;
|
||||||
|
|
||||||
public int getNumberOfInProgressUsers(Context context, XmlWorkflowItem workflowItem) throws SQLException;
|
public int getNumberOfInProgressUsers(Context context, WorkflowItem workflowItem) throws SQLException;
|
||||||
|
|
||||||
public int getNumberOfFinishedUsers(Context context, XmlWorkflowItem workflowItem) throws SQLException;
|
public int getNumberOfFinishedUsers(Context context, WorkflowItem workflowItem) throws SQLException;
|
||||||
}
|
}
|
||||||
|
@@ -16,8 +16,8 @@ import org.dspace.core.Context;
|
|||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
import org.dspace.eperson.Group;
|
import org.dspace.eperson.Group;
|
||||||
import org.dspace.service.DSpaceCRUDService;
|
import org.dspace.service.DSpaceCRUDService;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.PoolTask;
|
import org.dspace.xmlworkflow.storedcomponents.PoolTask;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service interface class for the PoolTask object.
|
* Service interface class for the PoolTask object.
|
||||||
@@ -33,12 +33,12 @@ public interface PoolTaskService extends DSpaceCRUDService<PoolTask> {
|
|||||||
public List<PoolTask> findByEperson(Context context, EPerson ePerson)
|
public List<PoolTask> findByEperson(Context context, EPerson ePerson)
|
||||||
throws SQLException, AuthorizeException, IOException;
|
throws SQLException, AuthorizeException, IOException;
|
||||||
|
|
||||||
public List<PoolTask> find(Context context, XmlWorkflowItem workflowItem) throws SQLException;
|
public List<PoolTask> find(Context context, WorkflowItem workflowItem) throws SQLException;
|
||||||
|
|
||||||
public PoolTask findByWorkflowIdAndEPerson(Context context, XmlWorkflowItem workflowItem, EPerson ePerson)
|
public PoolTask findByWorkflowIdAndEPerson(Context context, WorkflowItem workflowItem, EPerson ePerson)
|
||||||
throws SQLException, AuthorizeException, IOException;
|
throws SQLException, AuthorizeException, IOException;
|
||||||
|
|
||||||
public void deleteByWorkflowItem(Context context, XmlWorkflowItem xmlWorkflowItem)
|
public void deleteByWorkflowItem(Context context, WorkflowItem workflowItem)
|
||||||
throws SQLException, AuthorizeException;
|
throws SQLException, AuthorizeException;
|
||||||
|
|
||||||
public void deleteByEperson(Context context, EPerson ePerson) throws SQLException, AuthorizeException, IOException;
|
public void deleteByEperson(Context context, EPerson ePerson) throws SQLException, AuthorizeException, IOException;
|
||||||
|
@@ -14,8 +14,8 @@ import org.dspace.authorize.AuthorizeException;
|
|||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
import org.dspace.service.DSpaceCRUDService;
|
import org.dspace.service.DSpaceCRUDService;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.WorkflowItemRole;
|
import org.dspace.xmlworkflow.storedcomponents.WorkflowItemRole;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service interface class for the WorkflowItemRole object.
|
* Service interface class for the WorkflowItemRole object.
|
||||||
@@ -26,12 +26,12 @@ import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|||||||
*/
|
*/
|
||||||
public interface WorkflowItemRoleService extends DSpaceCRUDService<WorkflowItemRole> {
|
public interface WorkflowItemRoleService extends DSpaceCRUDService<WorkflowItemRole> {
|
||||||
|
|
||||||
public List<WorkflowItemRole> find(Context context, XmlWorkflowItem workflowItem, String role) throws SQLException;
|
public List<WorkflowItemRole> find(Context context, WorkflowItem workflowItem, String role) throws SQLException;
|
||||||
|
|
||||||
public List<WorkflowItemRole> findByWorkflowItem(Context context, XmlWorkflowItem xmlWorkflowItem)
|
public List<WorkflowItemRole> findByWorkflowItem(Context context, WorkflowItem workflowItem)
|
||||||
throws SQLException;
|
throws SQLException;
|
||||||
|
|
||||||
public void deleteForWorkflowItem(Context context, XmlWorkflowItem wfi) throws SQLException, AuthorizeException;
|
public void deleteForWorkflowItem(Context context, WorkflowItem wfi) throws SQLException, AuthorizeException;
|
||||||
|
|
||||||
public void deleteByEPerson(Context context, EPerson ePerson) throws SQLException, AuthorizeException;
|
public void deleteByEPerson(Context context, EPerson ePerson) throws SQLException, AuthorizeException;
|
||||||
|
|
||||||
|
@@ -1,100 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.xmlworkflow.storedcomponents.service;
|
|
||||||
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.dspace.content.Collection;
|
|
||||||
import org.dspace.core.Context;
|
|
||||||
import org.dspace.eperson.EPerson;
|
|
||||||
import org.dspace.workflow.WorkflowItemService;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Service interface class for the XmlWorkflowItem object.
|
|
||||||
* The implementation of this class is responsible for all business logic calls for the XmlWorkflowItem object and is
|
|
||||||
* autowired by spring
|
|
||||||
*
|
|
||||||
* @author kevinvandevelde at atmire.com
|
|
||||||
*/
|
|
||||||
public interface XmlWorkflowItemService extends WorkflowItemService<XmlWorkflowItem> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* return all workflowitems for a certain page
|
|
||||||
*
|
|
||||||
* @param context The relevant DSpace Context.
|
|
||||||
* @param page paging: page number
|
|
||||||
* @param pagesize paging: items per page
|
|
||||||
* @return WorkflowItem list of all the workflow items in system
|
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
|
||||||
*/
|
|
||||||
public List<XmlWorkflowItem> findAll(Context context, Integer page, Integer pagesize) throws SQLException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* return all workflowitems for a certain page with a certain collection
|
|
||||||
*
|
|
||||||
* @param context The relevant DSpace Context.
|
|
||||||
* @param page paging: page number
|
|
||||||
* @param pagesize paging: items per page
|
|
||||||
* @param collection restrict to this collection
|
|
||||||
* @return WorkflowItem list of all the workflow items in system
|
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
|
||||||
*/
|
|
||||||
public List<XmlWorkflowItem> findAllInCollection(Context context, Integer page, Integer pagesize,
|
|
||||||
Collection collection) throws SQLException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* return how many workflow items appear in the database
|
|
||||||
*
|
|
||||||
* @param context The relevant DSpace Context.
|
|
||||||
* @return the number of workflow items
|
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
|
||||||
*/
|
|
||||||
public int countAll(Context context) throws SQLException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* return how many workflow items that appear in the collection
|
|
||||||
*
|
|
||||||
* @param context The relevant DSpace Context.
|
|
||||||
* @param collection restrict to this collection
|
|
||||||
* @return the number of workflow items
|
|
||||||
* @throws SQLException An exception that provides information on a database access error or other errors.
|
|
||||||
*/
|
|
||||||
public int countAllInCollection(Context context, Collection collection) throws SQLException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return all the workflow items from a specific submitter respecting the pagination parameters
|
|
||||||
*
|
|
||||||
* @param context
|
|
||||||
* The relevant DSpace Context.
|
|
||||||
* @param ep
|
|
||||||
* the eperson that has submitted the item
|
|
||||||
* @param pageNumber
|
|
||||||
* paging: page number
|
|
||||||
* @param pageSize
|
|
||||||
* paging: items per page
|
|
||||||
* @return
|
|
||||||
* @throws SQLException
|
|
||||||
*/
|
|
||||||
public List<XmlWorkflowItem> findBySubmitter(Context context, EPerson ep, Integer pageNumber, Integer pageSize)
|
|
||||||
throws SQLException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Count the number of workflow items from a specific submitter
|
|
||||||
*
|
|
||||||
* @param context
|
|
||||||
* The relevant DSpace Context.
|
|
||||||
* @param ep
|
|
||||||
* the eperson that has submitted the item
|
|
||||||
* @return
|
|
||||||
* @throws SQLException
|
|
||||||
*/
|
|
||||||
public int countBySubmitter(Context context, EPerson ep) throws SQLException;
|
|
||||||
|
|
||||||
}
|
|
@@ -0,0 +1,17 @@
|
|||||||
|
--
|
||||||
|
-- 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/
|
||||||
|
--
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------
|
||||||
|
-- Drop the 'workflowitem' and 'tasklistitem' tables
|
||||||
|
-----------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
DROP TABLE workflowitem CASCADE CONSTRAINTS;
|
||||||
|
DROP TABLE tasklistitem CASCADE CONSTRAINTS;
|
||||||
|
|
||||||
|
DROP SEQUENCE workflowitem_seq;
|
||||||
|
DROP SEQUENCE tasklistitem_seq;
|
@@ -0,0 +1,17 @@
|
|||||||
|
--
|
||||||
|
-- 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/
|
||||||
|
--
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------
|
||||||
|
-- Drop the 'workflowitem' and 'tasklistitem' tables
|
||||||
|
-----------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
DROP TABLE workflowitem CASCADE CONSTRAINTS;
|
||||||
|
DROP TABLE tasklistitem CASCADE CONSTRAINTS;
|
||||||
|
|
||||||
|
DROP SEQUENCE workflowitem_seq;
|
||||||
|
DROP SEQUENCE tasklistitem_seq;
|
@@ -0,0 +1,17 @@
|
|||||||
|
--
|
||||||
|
-- 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/
|
||||||
|
--
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------
|
||||||
|
-- Drop the 'workflowitem' and 'tasklistitem' tables
|
||||||
|
-----------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
DROP TABLE workflowitem CASCADE;
|
||||||
|
DROP TABLE tasklistitem CASCADE;
|
||||||
|
|
||||||
|
DROP SEQUENCE workflowitem_seq;
|
||||||
|
DROP SEQUENCE tasklistitem_seq;
|
@@ -44,13 +44,13 @@ import org.dspace.scripts.service.ProcessService;
|
|||||||
import org.dspace.services.factory.DSpaceServicesFactory;
|
import org.dspace.services.factory.DSpaceServicesFactory;
|
||||||
import org.dspace.versioning.factory.VersionServiceFactory;
|
import org.dspace.versioning.factory.VersionServiceFactory;
|
||||||
import org.dspace.versioning.service.VersionHistoryService;
|
import org.dspace.versioning.service.VersionHistoryService;
|
||||||
import org.dspace.xmlworkflow.factory.XmlWorkflowServiceFactory;
|
import org.dspace.workflow.WorkflowItemService;
|
||||||
import org.dspace.xmlworkflow.service.XmlWorkflowService;
|
import org.dspace.workflow.WorkflowService;
|
||||||
|
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.InProgressUserService;
|
import org.dspace.xmlworkflow.storedcomponents.service.InProgressUserService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.WorkflowItemRoleService;
|
import org.dspace.xmlworkflow.storedcomponents.service.WorkflowItemRoleService;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.XmlWorkflowItemService;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract builder class that holds references to all available services
|
* Abstract builder class that holds references to all available services
|
||||||
@@ -66,8 +66,8 @@ public abstract class AbstractBuilder<T, S> {
|
|||||||
static ItemService itemService;
|
static ItemService itemService;
|
||||||
static InstallItemService installItemService;
|
static InstallItemService installItemService;
|
||||||
static WorkspaceItemService workspaceItemService;
|
static WorkspaceItemService workspaceItemService;
|
||||||
static XmlWorkflowItemService workflowItemService;
|
static WorkflowItemService workflowItemService;
|
||||||
static XmlWorkflowService workflowService;
|
static WorkflowService workflowService;
|
||||||
static EPersonService ePersonService;
|
static EPersonService ePersonService;
|
||||||
static GroupService groupService;
|
static GroupService groupService;
|
||||||
static BundleService bundleService;
|
static BundleService bundleService;
|
||||||
@@ -115,8 +115,8 @@ public abstract class AbstractBuilder<T, S> {
|
|||||||
itemService = ContentServiceFactory.getInstance().getItemService();
|
itemService = ContentServiceFactory.getInstance().getItemService();
|
||||||
installItemService = ContentServiceFactory.getInstance().getInstallItemService();
|
installItemService = ContentServiceFactory.getInstance().getInstallItemService();
|
||||||
workspaceItemService = ContentServiceFactory.getInstance().getWorkspaceItemService();
|
workspaceItemService = ContentServiceFactory.getInstance().getWorkspaceItemService();
|
||||||
workflowItemService = XmlWorkflowServiceFactory.getInstance().getXmlWorkflowItemService();
|
workflowItemService = WorkflowServiceFactory.getInstance().getWorkflowItemService();
|
||||||
workflowService = XmlWorkflowServiceFactory.getInstance().getXmlWorkflowService();
|
workflowService = WorkflowServiceFactory.getInstance().getWorkflowService();
|
||||||
ePersonService = EPersonServiceFactory.getInstance().getEPersonService();
|
ePersonService = EPersonServiceFactory.getInstance().getEPersonService();
|
||||||
groupService = EPersonServiceFactory.getInstance().getGroupService();
|
groupService = EPersonServiceFactory.getInstance().getGroupService();
|
||||||
bundleService = ContentServiceFactory.getInstance().getBundleService();
|
bundleService = ContentServiceFactory.getInstance().getBundleService();
|
||||||
@@ -138,10 +138,10 @@ public abstract class AbstractBuilder<T, S> {
|
|||||||
processService = ScriptServiceFactory.getInstance().getProcessService();
|
processService = ScriptServiceFactory.getInstance().getProcessService();
|
||||||
|
|
||||||
// Temporarily disabled
|
// Temporarily disabled
|
||||||
claimedTaskService = XmlWorkflowServiceFactory.getInstance().getClaimedTaskService();
|
claimedTaskService = WorkflowServiceFactory.getInstance().getClaimedTaskService();
|
||||||
inProgressUserService = XmlWorkflowServiceFactory.getInstance().getInProgressUserService();
|
inProgressUserService = WorkflowServiceFactory.getInstance().getInProgressUserService();
|
||||||
poolTaskService = XmlWorkflowServiceFactory.getInstance().getPoolTaskService();
|
poolTaskService = WorkflowServiceFactory.getInstance().getPoolTaskService();
|
||||||
workflowItemRoleService = XmlWorkflowServiceFactory.getInstance().getWorkflowItemRoleService();
|
workflowItemRoleService = WorkflowServiceFactory.getInstance().getWorkflowItemRoleService();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -20,13 +20,13 @@ import org.dspace.core.Constants;
|
|||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
import org.dspace.event.Event;
|
import org.dspace.event.Event;
|
||||||
import org.dspace.xmlworkflow.factory.XmlWorkflowServiceFactory;
|
import org.dspace.workflow.WorkflowItem;
|
||||||
|
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
||||||
import org.dspace.xmlworkflow.state.Step;
|
import org.dspace.xmlworkflow.state.Step;
|
||||||
import org.dspace.xmlworkflow.state.Workflow;
|
import org.dspace.xmlworkflow.state.Workflow;
|
||||||
import org.dspace.xmlworkflow.state.actions.WorkflowActionConfig;
|
import org.dspace.xmlworkflow.state.actions.WorkflowActionConfig;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.ClaimedTask;
|
import org.dspace.xmlworkflow.storedcomponents.ClaimedTask;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.PoolTask;
|
import org.dspace.xmlworkflow.storedcomponents.PoolTask;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -37,7 +37,7 @@ public class ClaimedTaskBuilder extends AbstractBuilder<ClaimedTask, ClaimedTask
|
|||||||
|
|
||||||
private WorkspaceItem workspaceItem;
|
private WorkspaceItem workspaceItem;
|
||||||
|
|
||||||
private XmlWorkflowItem workflowItem;
|
private WorkflowItem workflowItem;
|
||||||
|
|
||||||
private ClaimedTask claimedTask;
|
private ClaimedTask claimedTask;
|
||||||
|
|
||||||
@@ -88,7 +88,7 @@ public class ClaimedTaskBuilder extends AbstractBuilder<ClaimedTask, ClaimedTask
|
|||||||
// temporary switch to the wf user
|
// temporary switch to the wf user
|
||||||
EPerson submitter = context.getCurrentUser();
|
EPerson submitter = context.getCurrentUser();
|
||||||
context.setCurrentUser(user);
|
context.setCurrentUser(user);
|
||||||
XmlWorkflowServiceFactory factory = (XmlWorkflowServiceFactory) XmlWorkflowServiceFactory.getInstance();
|
WorkflowServiceFactory factory = WorkflowServiceFactory.getInstance();
|
||||||
Workflow workflow = factory.getWorkflowFactory().getWorkflow(task.getWorkflowItem().getCollection());
|
Workflow workflow = factory.getWorkflowFactory().getWorkflow(task.getWorkflowItem().getCollection());
|
||||||
Step step = workflow.getStep(task.getStepID());
|
Step step = workflow.getStep(task.getStepID());
|
||||||
WorkflowActionConfig currentActionConfig = step.getActionConfig(task.getActionID());
|
WorkflowActionConfig currentActionConfig = step.getActionConfig(task.getActionID());
|
||||||
@@ -138,7 +138,7 @@ public class ClaimedTaskBuilder extends AbstractBuilder<ClaimedTask, ClaimedTask
|
|||||||
if (workflowItem != null) {
|
if (workflowItem != null) {
|
||||||
// to delete the claimedtask keeping the system in a consistent state you need to delete the underline
|
// to delete the claimedtask keeping the system in a consistent state you need to delete the underline
|
||||||
// workflowitem
|
// workflowitem
|
||||||
WorkflowItemBuilder.deleteWorkflowItem(workflowItem.getID());
|
WorkflowItemBuilder.deleteWorkflowItem(workflowItem.getID());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -18,8 +18,8 @@ import org.dspace.content.MetadataSchemaEnum;
|
|||||||
import org.dspace.content.WorkspaceItem;
|
import org.dspace.content.WorkspaceItem;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.PoolTask;
|
import org.dspace.xmlworkflow.storedcomponents.PoolTask;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
import org.dspace.xmlworkflow.storedcomponents.service.PoolTaskService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -30,7 +30,7 @@ public class PoolTaskBuilder extends AbstractBuilder<PoolTask, PoolTaskService>
|
|||||||
|
|
||||||
private WorkspaceItem workspaceItem;
|
private WorkspaceItem workspaceItem;
|
||||||
|
|
||||||
private XmlWorkflowItem workflowItem;
|
private WorkflowItem workflowItem;
|
||||||
|
|
||||||
private PoolTask poolTask;
|
private PoolTask poolTask;
|
||||||
|
|
||||||
|
@@ -22,21 +22,21 @@ import org.dspace.content.WorkspaceItem;
|
|||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.discovery.SearchServiceException;
|
import org.dspace.discovery.SearchServiceException;
|
||||||
import org.dspace.eperson.EPerson;
|
import org.dspace.eperson.EPerson;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.XmlWorkflowItemService;
|
import org.dspace.workflow.WorkflowItemService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builder to construct WorkflowItem objects
|
* Builder to construct WorkflowItem objects
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
public class WorkflowItemBuilder extends AbstractBuilder<XmlWorkflowItem, XmlWorkflowItemService> {
|
public class WorkflowItemBuilder extends AbstractBuilder<WorkflowItem, WorkflowItemService> {
|
||||||
|
|
||||||
/** Keep a reference to the underlying Item for cleanup **/
|
/** Keep a reference to the underlying Item for cleanup **/
|
||||||
private Item item;
|
private Item item;
|
||||||
|
|
||||||
private WorkspaceItem workspaceItem;
|
private WorkspaceItem workspaceItem;
|
||||||
|
|
||||||
private XmlWorkflowItem workflowItem;
|
private WorkflowItem workflowItem;
|
||||||
|
|
||||||
protected WorkflowItemBuilder(Context context) {
|
protected WorkflowItemBuilder(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
@@ -72,7 +72,7 @@ public class WorkflowItemBuilder extends AbstractBuilder<XmlWorkflowItem, XmlWor
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public XmlWorkflowItem build() {
|
public WorkflowItem build() {
|
||||||
try {
|
try {
|
||||||
workflowItem = workflowService.start(context, workspaceItem);
|
workflowItem = workflowService.start(context, workspaceItem);
|
||||||
workspaceItem = null;
|
workspaceItem = null;
|
||||||
@@ -86,7 +86,7 @@ public class WorkflowItemBuilder extends AbstractBuilder<XmlWorkflowItem, XmlWor
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void delete(Context c, XmlWorkflowItem dso) throws Exception {
|
public void delete(Context c, WorkflowItem dso) throws Exception {
|
||||||
if (dso != null) {
|
if (dso != null) {
|
||||||
getService().delete(c, dso);
|
getService().delete(c, dso);
|
||||||
item = null;
|
item = null;
|
||||||
@@ -136,7 +136,7 @@ public class WorkflowItemBuilder extends AbstractBuilder<XmlWorkflowItem, XmlWor
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected XmlWorkflowItemService getService() {
|
protected WorkflowItemService getService() {
|
||||||
return workflowItemService;
|
return workflowItemService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -223,7 +223,7 @@ public class WorkflowItemBuilder extends AbstractBuilder<XmlWorkflowItem, XmlWor
|
|||||||
throws SQLException, IOException, SearchServiceException {
|
throws SQLException, IOException, SearchServiceException {
|
||||||
try (Context c = new Context()) {
|
try (Context c = new Context()) {
|
||||||
c.turnOffAuthorisationSystem();
|
c.turnOffAuthorisationSystem();
|
||||||
XmlWorkflowItem wi = workflowItemService.find(c, id);
|
WorkflowItem wi = workflowItemService.find(c, id);
|
||||||
if (wi != null) {
|
if (wi != null) {
|
||||||
try {
|
try {
|
||||||
workflowItemService.delete(c, wi);
|
workflowItemService.delete(c, wi);
|
||||||
|
@@ -36,13 +36,11 @@ import org.dspace.content.service.WorkspaceItemService;
|
|||||||
import org.dspace.eperson.factory.EPersonServiceFactory;
|
import org.dspace.eperson.factory.EPersonServiceFactory;
|
||||||
import org.dspace.eperson.service.EPersonService;
|
import org.dspace.eperson.service.EPersonService;
|
||||||
import org.dspace.eperson.service.GroupService;
|
import org.dspace.eperson.service.GroupService;
|
||||||
|
import org.dspace.workflow.WorkflowItem;
|
||||||
import org.dspace.workflow.WorkflowService;
|
import org.dspace.workflow.WorkflowService;
|
||||||
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
||||||
import org.dspace.xmlworkflow.factory.XmlWorkflowServiceFactory;
|
|
||||||
import org.dspace.xmlworkflow.service.XmlWorkflowService;
|
|
||||||
import org.dspace.xmlworkflow.state.Workflow;
|
import org.dspace.xmlworkflow.state.Workflow;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.CollectionRole;
|
import org.dspace.xmlworkflow.storedcomponents.CollectionRole;
|
||||||
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
|
|
||||||
import org.dspace.xmlworkflow.storedcomponents.service.CollectionRoleService;
|
import org.dspace.xmlworkflow.storedcomponents.service.CollectionRoleService;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -69,12 +67,11 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService();
|
protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService();
|
||||||
protected ItemService itemService = ContentServiceFactory.getInstance().getItemService();
|
protected ItemService itemService = ContentServiceFactory.getInstance().getItemService();
|
||||||
protected InstallItemService installItemService = ContentServiceFactory.getInstance().getInstallItemService();
|
protected InstallItemService installItemService = ContentServiceFactory.getInstance().getInstallItemService();
|
||||||
protected WorkflowService workflowService = WorkflowServiceFactory.getInstance().getWorkflowService();
|
|
||||||
protected WorkspaceItemService workspaceItemService = ContentServiceFactory.getInstance()
|
protected WorkspaceItemService workspaceItemService = ContentServiceFactory.getInstance()
|
||||||
.getWorkspaceItemService();
|
.getWorkspaceItemService();
|
||||||
protected XmlWorkflowService xmlWorkflowService = XmlWorkflowServiceFactory.getInstance().getXmlWorkflowService();
|
protected WorkflowService workflowService = WorkflowServiceFactory.getInstance().getWorkflowService();
|
||||||
protected CollectionRoleService collectionRoleService = XmlWorkflowServiceFactory.getInstance()
|
protected CollectionRoleService collectionRoleService = WorkflowServiceFactory.getInstance()
|
||||||
.getCollectionRoleService();
|
.getCollectionRoleService();
|
||||||
|
|
||||||
|
|
||||||
private EPerson workflowUserA;
|
private EPerson workflowUserA;
|
||||||
@@ -143,21 +140,21 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
Community parent = CommunityBuilder.createCommunity(context).build();
|
Community parent = CommunityBuilder.createCommunity(context).build();
|
||||||
Collection collection = CollectionBuilder.createCollection(context, parent)
|
Collection collection = CollectionBuilder.createCollection(context, parent)
|
||||||
.withWorkflowGroup(1, workflowUserB)
|
.withWorkflowGroup(1, workflowUserB)
|
||||||
.withWorkflowGroup(2, workflowUserC)
|
.withWorkflowGroup(2, workflowUserC)
|
||||||
.withWorkflowGroup(3, workflowUserB)
|
.withWorkflowGroup(3, workflowUserB)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
||||||
.withSubmitter(workflowUserA)
|
.withSubmitter(workflowUserA)
|
||||||
.withTitle("Test item full workflow")
|
.withTitle("Test item full workflow")
|
||||||
.withIssueDate("2019-03-06")
|
.withIssueDate("2019-03-06")
|
||||||
.withSubject("ExtraEntry")
|
.withSubject("ExtraEntry")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Workflow workflow = XmlWorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
Workflow workflow = WorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
||||||
|
|
||||||
XmlWorkflowItem workflowItem = xmlWorkflowService.startWithoutNotify(context, wsi);
|
WorkflowItem workflowItem = workflowService.startWithoutNotify(context, wsi);
|
||||||
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
||||||
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
||||||
|
|
||||||
@@ -216,21 +213,21 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
Community parent = CommunityBuilder.createCommunity(context).build();
|
Community parent = CommunityBuilder.createCommunity(context).build();
|
||||||
Collection collection = CollectionBuilder.createCollection(context, parent)
|
Collection collection = CollectionBuilder.createCollection(context, parent)
|
||||||
.withWorkflowGroup(1, workflowUserB)
|
.withWorkflowGroup(1, workflowUserB)
|
||||||
.withWorkflowGroup(2, workflowUserC)
|
.withWorkflowGroup(2, workflowUserC)
|
||||||
.withWorkflowGroup(3, workflowUserB)
|
.withWorkflowGroup(3, workflowUserB)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
||||||
.withSubmitter(workflowUserA)
|
.withSubmitter(workflowUserA)
|
||||||
.withTitle("Test item full workflow")
|
.withTitle("Test item full workflow")
|
||||||
.withIssueDate("2019-03-06")
|
.withIssueDate("2019-03-06")
|
||||||
.withSubject("ExtraEntry")
|
.withSubject("ExtraEntry")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Workflow workflow = XmlWorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
Workflow workflow = WorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
||||||
|
|
||||||
XmlWorkflowItem workflowItem = xmlWorkflowService.startWithoutNotify(context, wsi);
|
WorkflowItem workflowItem = workflowService.startWithoutNotify(context, wsi);
|
||||||
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
||||||
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
||||||
|
|
||||||
@@ -285,21 +282,21 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
Community parent = CommunityBuilder.createCommunity(context).build();
|
Community parent = CommunityBuilder.createCommunity(context).build();
|
||||||
Collection collection = CollectionBuilder.createCollection(context, parent)
|
Collection collection = CollectionBuilder.createCollection(context, parent)
|
||||||
.withWorkflowGroup(1, workflowUserB)
|
.withWorkflowGroup(1, workflowUserB)
|
||||||
.withWorkflowGroup(2, workflowUserC)
|
.withWorkflowGroup(2, workflowUserC)
|
||||||
.withWorkflowGroup(3, workflowUserB)
|
.withWorkflowGroup(3, workflowUserB)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
||||||
.withSubmitter(workflowUserA)
|
.withSubmitter(workflowUserA)
|
||||||
.withTitle("Test item full workflow")
|
.withTitle("Test item full workflow")
|
||||||
.withIssueDate("2019-03-06")
|
.withIssueDate("2019-03-06")
|
||||||
.withSubject("ExtraEntry")
|
.withSubject("ExtraEntry")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Workflow workflow = XmlWorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
Workflow workflow = WorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
||||||
|
|
||||||
XmlWorkflowItem workflowItem = xmlWorkflowService.startWithoutNotify(context, wsi);
|
WorkflowItem workflowItem = workflowService.startWithoutNotify(context, wsi);
|
||||||
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
||||||
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
||||||
|
|
||||||
@@ -313,9 +310,9 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, REVIEW_STEP, REVIEW_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, REVIEW_STEP, REVIEW_ACTION);
|
||||||
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
CLAIM_ACTION);
|
CLAIM_ACTION);
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
FINAL_EDIT_ACTION);
|
FINAL_EDIT_ACTION);
|
||||||
|
|
||||||
assertTrue(workflowItem.getItem().isArchived());
|
assertTrue(workflowItem.getItem().isArchived());
|
||||||
|
|
||||||
@@ -357,21 +354,21 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
Community parent = CommunityBuilder.createCommunity(context).build();
|
Community parent = CommunityBuilder.createCommunity(context).build();
|
||||||
Collection collection = CollectionBuilder.createCollection(context, parent)
|
Collection collection = CollectionBuilder.createCollection(context, parent)
|
||||||
.withWorkflowGroup(1, workflowUserB)
|
.withWorkflowGroup(1, workflowUserB)
|
||||||
.withWorkflowGroup(2, workflowUserC)
|
.withWorkflowGroup(2, workflowUserC)
|
||||||
.withWorkflowGroup(3, workflowUserB)
|
.withWorkflowGroup(3, workflowUserB)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
||||||
.withSubmitter(workflowUserA)
|
.withSubmitter(workflowUserA)
|
||||||
.withTitle("Test item full workflow")
|
.withTitle("Test item full workflow")
|
||||||
.withIssueDate("2019-03-06")
|
.withIssueDate("2019-03-06")
|
||||||
.withSubject("ExtraEntry")
|
.withSubject("ExtraEntry")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Workflow workflow = XmlWorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
Workflow workflow = WorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
||||||
|
|
||||||
XmlWorkflowItem workflowItem = xmlWorkflowService.startWithoutNotify(context, wsi);
|
WorkflowItem workflowItem = workflowService.startWithoutNotify(context, wsi);
|
||||||
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
||||||
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
||||||
|
|
||||||
@@ -379,14 +376,15 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, REVIEW_STEP, REVIEW_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, REVIEW_STEP, REVIEW_ACTION);
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, CLAIM_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, CLAIM_ACTION);
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP, CLAIM_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
|
CLAIM_ACTION);
|
||||||
|
|
||||||
assertDeletionOfEperson(workflowUserB, false);
|
assertDeletionOfEperson(workflowUserB, false);
|
||||||
assertRemovalOfEpersonFromWorkflowGroup(workflowUserB, collection, REVIEW_ROLE, true);
|
assertRemovalOfEpersonFromWorkflowGroup(workflowUserB, collection, REVIEW_ROLE, true);
|
||||||
assertRemovalOfEpersonFromWorkflowGroup(workflowUserB, collection, FINAL_EDIT_ROLE, false);
|
assertRemovalOfEpersonFromWorkflowGroup(workflowUserB, collection, FINAL_EDIT_ROLE, false);
|
||||||
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
FINAL_EDIT_ACTION);
|
FINAL_EDIT_ACTION);
|
||||||
|
|
||||||
assertRemovalOfEpersonFromWorkflowGroup(workflowUserB, collection, FINAL_EDIT_ROLE, true);
|
assertRemovalOfEpersonFromWorkflowGroup(workflowUserB, collection, FINAL_EDIT_ROLE, true);
|
||||||
assertDeletionOfEperson(workflowUserB, true);
|
assertDeletionOfEperson(workflowUserB, true);
|
||||||
@@ -400,7 +398,7 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
* tasks currently assigned to it. This test verifies a user can't be removed from a workflow step they have claimed
|
* tasks currently assigned to it. This test verifies a user can't be removed from a workflow step they have claimed
|
||||||
* items for that task. This test also verifies that this verification is using both the step and the collection
|
* items for that task. This test also verifies that this verification is using both the step and the collection
|
||||||
* to determine whether the user can be removed from a workflow group. This test also verifies that after user has
|
* to determine whether the user can be removed from a workflow group. This test also verifies that after user has
|
||||||
* been removed from the workflow group and the task has been passed, the EPerson can be removed.
|
* been removed from the workflow group and the task has been passed, the EPerson can be removed.
|
||||||
*
|
*
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
@@ -436,25 +434,25 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
Community parent = CommunityBuilder.createCommunity(context).build();
|
Community parent = CommunityBuilder.createCommunity(context).build();
|
||||||
Collection collectionA = CollectionBuilder.createCollection(context, parent)
|
Collection collectionA = CollectionBuilder.createCollection(context, parent)
|
||||||
.withWorkflowGroup(1, workflowUserB)
|
.withWorkflowGroup(1, workflowUserB)
|
||||||
.withWorkflowGroup(2, workflowUserC)
|
.withWorkflowGroup(2, workflowUserC)
|
||||||
.withWorkflowGroup(3, workflowUserB)
|
.withWorkflowGroup(3, workflowUserB)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Collection collectionB = CollectionBuilder.createCollection(context, parent)
|
Collection collectionB = CollectionBuilder.createCollection(context, parent)
|
||||||
.withWorkflowGroup(1, workflowUserB)
|
.withWorkflowGroup(1, workflowUserB)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collectionA)
|
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collectionA)
|
||||||
.withSubmitter(workflowUserA)
|
.withSubmitter(workflowUserA)
|
||||||
.withTitle("Test item full workflow")
|
.withTitle("Test item full workflow")
|
||||||
.withIssueDate("2019-03-06")
|
.withIssueDate("2019-03-06")
|
||||||
.withSubject("ExtraEntry")
|
.withSubject("ExtraEntry")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Workflow workflow = XmlWorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collectionA);
|
Workflow workflow = WorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collectionA);
|
||||||
|
|
||||||
XmlWorkflowItem workflowItem = xmlWorkflowService.startWithoutNotify(context, wsi);
|
WorkflowItem workflowItem = workflowService.startWithoutNotify(context, wsi);
|
||||||
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
||||||
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
||||||
|
|
||||||
@@ -506,21 +504,21 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
Community parent = CommunityBuilder.createCommunity(context).build();
|
Community parent = CommunityBuilder.createCommunity(context).build();
|
||||||
Collection collection = CollectionBuilder.createCollection(context, parent)
|
Collection collection = CollectionBuilder.createCollection(context, parent)
|
||||||
.withWorkflowGroup(1, workflowUserB)
|
.withWorkflowGroup(1, workflowUserB)
|
||||||
.withWorkflowGroup(2, workflowUserC)
|
.withWorkflowGroup(2, workflowUserC)
|
||||||
.withWorkflowGroup(3, workflowUserB)
|
.withWorkflowGroup(3, workflowUserB)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
||||||
.withSubmitter(workflowUserA)
|
.withSubmitter(workflowUserA)
|
||||||
.withTitle("Test item full workflow")
|
.withTitle("Test item full workflow")
|
||||||
.withIssueDate("2019-03-06")
|
.withIssueDate("2019-03-06")
|
||||||
.withSubject("ExtraEntry")
|
.withSubject("ExtraEntry")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Workflow workflow = XmlWorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
Workflow workflow = WorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
||||||
|
|
||||||
XmlWorkflowItem workflowItem = xmlWorkflowService.startWithoutNotify(context, wsi);
|
WorkflowItem workflowItem = workflowService.startWithoutNotify(context, wsi);
|
||||||
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
||||||
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
||||||
|
|
||||||
@@ -532,9 +530,10 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, CLAIM_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, CLAIM_ACTION);
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
||||||
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP, CLAIM_ACTION);
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
FINAL_EDIT_ACTION);
|
CLAIM_ACTION);
|
||||||
|
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
|
FINAL_EDIT_ACTION);
|
||||||
|
|
||||||
assertTrue(workflowItem.getItem().isArchived());
|
assertTrue(workflowItem.getItem().isArchived());
|
||||||
|
|
||||||
@@ -545,8 +544,8 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
* tasks currently assigned to it. This test also verifies the user can't be removed from a step with a pooled
|
* tasks currently assigned to it. This test also verifies the user can't be removed from a step with a pooled
|
||||||
* task if they are the only member. This test also verifies the user can be removed from a step with no tasks
|
* task if they are the only member. This test also verifies the user can be removed from a step with no tasks
|
||||||
* even if they are the only member. This test also verifies that after the task has been passed and the user has
|
* even if they are the only member. This test also verifies that after the task has been passed and the user has
|
||||||
* been removed from the workflow, the EPerson can be removed. This test also verifies that an item is correctly
|
* been removed from the workflow, the EPerson can be removed. This test also verifies that an item is correctly
|
||||||
* arhived if the last step has no members left.
|
* arhived if the last step has no members left.
|
||||||
*
|
*
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
@@ -578,21 +577,21 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
Community parent = CommunityBuilder.createCommunity(context).build();
|
Community parent = CommunityBuilder.createCommunity(context).build();
|
||||||
Collection collection = CollectionBuilder.createCollection(context, parent)
|
Collection collection = CollectionBuilder.createCollection(context, parent)
|
||||||
.withWorkflowGroup(1, workflowUserB)
|
.withWorkflowGroup(1, workflowUserB)
|
||||||
.withWorkflowGroup(2, workflowUserC)
|
.withWorkflowGroup(2, workflowUserC)
|
||||||
.withWorkflowGroup(3, workflowUserB)
|
.withWorkflowGroup(3, workflowUserB)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
||||||
.withSubmitter(workflowUserA)
|
.withSubmitter(workflowUserA)
|
||||||
.withTitle("Test item full workflow")
|
.withTitle("Test item full workflow")
|
||||||
.withIssueDate("2019-03-06")
|
.withIssueDate("2019-03-06")
|
||||||
.withSubject("ExtraEntry")
|
.withSubject("ExtraEntry")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Workflow workflow = XmlWorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
Workflow workflow = WorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
||||||
|
|
||||||
XmlWorkflowItem workflowItem = xmlWorkflowService.startWithoutNotify(context, wsi);
|
WorkflowItem workflowItem = workflowService.startWithoutNotify(context, wsi);
|
||||||
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
||||||
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
||||||
|
|
||||||
@@ -650,21 +649,21 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
Community parent = CommunityBuilder.createCommunity(context).build();
|
Community parent = CommunityBuilder.createCommunity(context).build();
|
||||||
Collection collection = CollectionBuilder.createCollection(context, parent)
|
Collection collection = CollectionBuilder.createCollection(context, parent)
|
||||||
.withWorkflowGroup(1, workflowUserB)
|
.withWorkflowGroup(1, workflowUserB)
|
||||||
.withWorkflowGroup(2, workflowUserC)
|
.withWorkflowGroup(2, workflowUserC)
|
||||||
.withWorkflowGroup(3, workflowUserB)
|
.withWorkflowGroup(3, workflowUserB)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
||||||
.withSubmitter(workflowUserA)
|
.withSubmitter(workflowUserA)
|
||||||
.withTitle("Test item full workflow")
|
.withTitle("Test item full workflow")
|
||||||
.withIssueDate("2019-03-06")
|
.withIssueDate("2019-03-06")
|
||||||
.withSubject("ExtraEntry")
|
.withSubject("ExtraEntry")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Workflow workflow = XmlWorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
Workflow workflow = WorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
||||||
|
|
||||||
XmlWorkflowItem workflowItem = xmlWorkflowService.startWithoutNotify(context, wsi);
|
WorkflowItem workflowItem = workflowService.startWithoutNotify(context, wsi);
|
||||||
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
||||||
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
||||||
|
|
||||||
@@ -683,9 +682,10 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
assertDeletionOfEperson(workflowUserB, true);
|
assertDeletionOfEperson(workflowUserB, true);
|
||||||
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP, CLAIM_ACTION);
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
FINAL_EDIT_ACTION);
|
CLAIM_ACTION);
|
||||||
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
|
FINAL_EDIT_ACTION);
|
||||||
|
|
||||||
assertTrue(workflowItem.getItem().isArchived());
|
assertTrue(workflowItem.getItem().isArchived());
|
||||||
|
|
||||||
@@ -726,21 +726,21 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
Community parent = CommunityBuilder.createCommunity(context).build();
|
Community parent = CommunityBuilder.createCommunity(context).build();
|
||||||
Collection collection = CollectionBuilder.createCollection(context, parent)
|
Collection collection = CollectionBuilder.createCollection(context, parent)
|
||||||
.withWorkflowGroup(1, workflowUserB)
|
.withWorkflowGroup(1, workflowUserB)
|
||||||
.withWorkflowGroup(2, workflowUserC)
|
.withWorkflowGroup(2, workflowUserC)
|
||||||
.withWorkflowGroup(3, workflowUserB)
|
.withWorkflowGroup(3, workflowUserB)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
||||||
.withSubmitter(workflowUserA)
|
.withSubmitter(workflowUserA)
|
||||||
.withTitle("Test item full workflow")
|
.withTitle("Test item full workflow")
|
||||||
.withIssueDate("2019-03-06")
|
.withIssueDate("2019-03-06")
|
||||||
.withSubject("ExtraEntry")
|
.withSubject("ExtraEntry")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Workflow workflow = XmlWorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
Workflow workflow = WorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
||||||
|
|
||||||
XmlWorkflowItem workflowItem = xmlWorkflowService.startWithoutNotify(context, wsi);
|
WorkflowItem workflowItem = workflowService.startWithoutNotify(context, wsi);
|
||||||
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
||||||
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
||||||
|
|
||||||
@@ -756,9 +756,10 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, CLAIM_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, CLAIM_ACTION);
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
||||||
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP, CLAIM_ACTION);
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
FINAL_EDIT_ACTION);
|
CLAIM_ACTION);
|
||||||
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
|
FINAL_EDIT_ACTION);
|
||||||
|
|
||||||
assertTrue(workflowItem.getItem().isArchived());
|
assertTrue(workflowItem.getItem().isArchived());
|
||||||
|
|
||||||
@@ -799,21 +800,21 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
Community parent = CommunityBuilder.createCommunity(context).build();
|
Community parent = CommunityBuilder.createCommunity(context).build();
|
||||||
Collection collection = CollectionBuilder.createCollection(context, parent)
|
Collection collection = CollectionBuilder.createCollection(context, parent)
|
||||||
.withWorkflowGroup(1, workflowUserB)
|
.withWorkflowGroup(1, workflowUserB)
|
||||||
.withWorkflowGroup(2, workflowUserC)
|
.withWorkflowGroup(2, workflowUserC)
|
||||||
.withWorkflowGroup(3, workflowUserB)
|
.withWorkflowGroup(3, workflowUserB)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
||||||
.withSubmitter(workflowUserA)
|
.withSubmitter(workflowUserA)
|
||||||
.withTitle("Test item full workflow")
|
.withTitle("Test item full workflow")
|
||||||
.withIssueDate("2019-03-06")
|
.withIssueDate("2019-03-06")
|
||||||
.withSubject("ExtraEntry")
|
.withSubject("ExtraEntry")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Workflow workflow = XmlWorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
Workflow workflow = WorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
||||||
|
|
||||||
XmlWorkflowItem workflowItem = xmlWorkflowService.startWithoutNotify(context, wsi);
|
WorkflowItem workflowItem = workflowService.startWithoutNotify(context, wsi);
|
||||||
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
||||||
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
||||||
|
|
||||||
@@ -828,9 +829,10 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, EDIT_STEP, CLAIM_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, EDIT_STEP, CLAIM_ACTION);
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
||||||
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP, CLAIM_ACTION);
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
FINAL_EDIT_ACTION);
|
CLAIM_ACTION);
|
||||||
|
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
|
FINAL_EDIT_ACTION);
|
||||||
|
|
||||||
assertTrue(workflowItem.getItem().isArchived());
|
assertTrue(workflowItem.getItem().isArchived());
|
||||||
|
|
||||||
@@ -876,21 +878,21 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
Community parent = CommunityBuilder.createCommunity(context).build();
|
Community parent = CommunityBuilder.createCommunity(context).build();
|
||||||
Collection collection = CollectionBuilder.createCollection(context, parent)
|
Collection collection = CollectionBuilder.createCollection(context, parent)
|
||||||
.withWorkflowGroup(1, workflowUserB)
|
.withWorkflowGroup(1, workflowUserB)
|
||||||
.withWorkflowGroup(2, workflowUserC)
|
.withWorkflowGroup(2, workflowUserC)
|
||||||
.withWorkflowGroup(3, workflowUserB)
|
.withWorkflowGroup(3, workflowUserB)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
||||||
.withSubmitter(workflowUserA)
|
.withSubmitter(workflowUserA)
|
||||||
.withTitle("Test item full workflow")
|
.withTitle("Test item full workflow")
|
||||||
.withIssueDate("2019-03-06")
|
.withIssueDate("2019-03-06")
|
||||||
.withSubject("ExtraEntry")
|
.withSubject("ExtraEntry")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Workflow workflow = XmlWorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
Workflow workflow = WorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
||||||
|
|
||||||
XmlWorkflowItem workflowItem = xmlWorkflowService.startWithoutNotify(context, wsi);
|
WorkflowItem workflowItem = workflowService.startWithoutNotify(context, wsi);
|
||||||
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
||||||
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
||||||
|
|
||||||
@@ -908,9 +910,10 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, CLAIM_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, CLAIM_ACTION);
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
||||||
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP, CLAIM_ACTION);
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
FINAL_EDIT_ACTION);
|
CLAIM_ACTION);
|
||||||
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
|
FINAL_EDIT_ACTION);
|
||||||
|
|
||||||
assertTrue(workflowItem.getItem().isArchived());
|
assertTrue(workflowItem.getItem().isArchived());
|
||||||
|
|
||||||
@@ -954,21 +957,21 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
Community parent = CommunityBuilder.createCommunity(context).build();
|
Community parent = CommunityBuilder.createCommunity(context).build();
|
||||||
Collection collection = CollectionBuilder.createCollection(context, parent)
|
Collection collection = CollectionBuilder.createCollection(context, parent)
|
||||||
.withWorkflowGroup(1, workflowUserB)
|
.withWorkflowGroup(1, workflowUserB)
|
||||||
.withWorkflowGroup(2, workflowUserC)
|
.withWorkflowGroup(2, workflowUserC)
|
||||||
.withWorkflowGroup(3, workflowUserB)
|
.withWorkflowGroup(3, workflowUserB)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
||||||
.withSubmitter(workflowUserA)
|
.withSubmitter(workflowUserA)
|
||||||
.withTitle("Test item full workflow")
|
.withTitle("Test item full workflow")
|
||||||
.withIssueDate("2019-03-06")
|
.withIssueDate("2019-03-06")
|
||||||
.withSubject("ExtraEntry")
|
.withSubject("ExtraEntry")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Workflow workflow = XmlWorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
Workflow workflow = WorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
||||||
|
|
||||||
XmlWorkflowItem workflowItem = xmlWorkflowService.startWithoutNotify(context, wsi);
|
WorkflowItem workflowItem = workflowService.startWithoutNotify(context, wsi);
|
||||||
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
||||||
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
||||||
|
|
||||||
@@ -984,9 +987,10 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, EDIT_STEP, CLAIM_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, EDIT_STEP, CLAIM_ACTION);
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
||||||
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP, CLAIM_ACTION);
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
FINAL_EDIT_ACTION);
|
CLAIM_ACTION);
|
||||||
|
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
|
FINAL_EDIT_ACTION);
|
||||||
|
|
||||||
assertTrue(workflowItem.getItem().isArchived());
|
assertTrue(workflowItem.getItem().isArchived());
|
||||||
|
|
||||||
@@ -1030,21 +1034,21 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
Community parent = CommunityBuilder.createCommunity(context).build();
|
Community parent = CommunityBuilder.createCommunity(context).build();
|
||||||
Collection collection = CollectionBuilder.createCollection(context, parent)
|
Collection collection = CollectionBuilder.createCollection(context, parent)
|
||||||
.withWorkflowGroup(1, workflowUserB)
|
.withWorkflowGroup(1, workflowUserB)
|
||||||
.withWorkflowGroup(2, workflowUserC)
|
.withWorkflowGroup(2, workflowUserC)
|
||||||
.withWorkflowGroup(3, workflowUserB)
|
.withWorkflowGroup(3, workflowUserB)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
||||||
.withSubmitter(workflowUserA)
|
.withSubmitter(workflowUserA)
|
||||||
.withTitle("Test item full workflow")
|
.withTitle("Test item full workflow")
|
||||||
.withIssueDate("2019-03-06")
|
.withIssueDate("2019-03-06")
|
||||||
.withSubject("ExtraEntry")
|
.withSubject("ExtraEntry")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Workflow workflow = XmlWorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
Workflow workflow = WorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
||||||
|
|
||||||
XmlWorkflowItem workflowItem = xmlWorkflowService.startWithoutNotify(context, wsi);
|
WorkflowItem workflowItem = workflowService.startWithoutNotify(context, wsi);
|
||||||
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
||||||
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
||||||
|
|
||||||
@@ -1060,9 +1064,10 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
assertDeletionOfEperson(workflowUserB, true);
|
assertDeletionOfEperson(workflowUserB, true);
|
||||||
|
|
||||||
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP, CLAIM_ACTION);
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
FINAL_EDIT_ACTION);
|
CLAIM_ACTION);
|
||||||
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
|
FINAL_EDIT_ACTION);
|
||||||
|
|
||||||
assertTrue(workflowItem.getItem().isArchived());
|
assertTrue(workflowItem.getItem().isArchived());
|
||||||
|
|
||||||
@@ -1097,21 +1102,21 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
Community parent = CommunityBuilder.createCommunity(context).build();
|
Community parent = CommunityBuilder.createCommunity(context).build();
|
||||||
Collection collection = CollectionBuilder.createCollection(context, parent)
|
Collection collection = CollectionBuilder.createCollection(context, parent)
|
||||||
.withWorkflowGroup(1, workflowUserB, workflowUserD)
|
.withWorkflowGroup(1, workflowUserB, workflowUserD)
|
||||||
.withWorkflowGroup(2, workflowUserC, workflowUserD)
|
.withWorkflowGroup(2, workflowUserC, workflowUserD)
|
||||||
.withWorkflowGroup(3, workflowUserB, workflowUserD)
|
.withWorkflowGroup(3, workflowUserB, workflowUserD)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
||||||
.withSubmitter(workflowUserA)
|
.withSubmitter(workflowUserA)
|
||||||
.withTitle("Test item full workflow")
|
.withTitle("Test item full workflow")
|
||||||
.withIssueDate("2019-03-06")
|
.withIssueDate("2019-03-06")
|
||||||
.withSubject("ExtraEntry")
|
.withSubject("ExtraEntry")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Workflow workflow = XmlWorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
Workflow workflow = WorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
||||||
|
|
||||||
XmlWorkflowItem workflowItem = xmlWorkflowService.startWithoutNotify(context, wsi);
|
WorkflowItem workflowItem = workflowService.startWithoutNotify(context, wsi);
|
||||||
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
||||||
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
||||||
|
|
||||||
@@ -1123,9 +1128,10 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
assertDeletionOfEperson(workflowUserB, true);
|
assertDeletionOfEperson(workflowUserB, true);
|
||||||
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP, CLAIM_ACTION);
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
FINAL_EDIT_ACTION);
|
CLAIM_ACTION);
|
||||||
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
|
FINAL_EDIT_ACTION);
|
||||||
|
|
||||||
assertTrue(workflowItem.getItem().isArchived());
|
assertTrue(workflowItem.getItem().isArchived());
|
||||||
|
|
||||||
@@ -1162,21 +1168,21 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
Community parent = CommunityBuilder.createCommunity(context).build();
|
Community parent = CommunityBuilder.createCommunity(context).build();
|
||||||
Collection collection = CollectionBuilder.createCollection(context, parent)
|
Collection collection = CollectionBuilder.createCollection(context, parent)
|
||||||
.withWorkflowGroup(1, workflowUserB, workflowUserD)
|
.withWorkflowGroup(1, workflowUserB, workflowUserD)
|
||||||
.withWorkflowGroup(2, workflowUserC, workflowUserD)
|
.withWorkflowGroup(2, workflowUserC, workflowUserD)
|
||||||
.withWorkflowGroup(3, workflowUserB, workflowUserD)
|
.withWorkflowGroup(3, workflowUserB, workflowUserD)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
||||||
.withSubmitter(workflowUserA)
|
.withSubmitter(workflowUserA)
|
||||||
.withTitle("Test item full workflow")
|
.withTitle("Test item full workflow")
|
||||||
.withIssueDate("2019-03-06")
|
.withIssueDate("2019-03-06")
|
||||||
.withSubject("ExtraEntry")
|
.withSubject("ExtraEntry")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Workflow workflow = XmlWorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
Workflow workflow = WorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
||||||
|
|
||||||
XmlWorkflowItem workflowItem = xmlWorkflowService.startWithoutNotify(context, wsi);
|
WorkflowItem workflowItem = workflowService.startWithoutNotify(context, wsi);
|
||||||
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
||||||
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
||||||
|
|
||||||
@@ -1189,9 +1195,10 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
||||||
|
|
||||||
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP, CLAIM_ACTION);
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
FINAL_EDIT_ACTION);
|
CLAIM_ACTION);
|
||||||
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
|
FINAL_EDIT_ACTION);
|
||||||
|
|
||||||
assertTrue(workflowItem.getItem().isArchived());
|
assertTrue(workflowItem.getItem().isArchived());
|
||||||
|
|
||||||
@@ -1227,21 +1234,21 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
Community parent = CommunityBuilder.createCommunity(context).build();
|
Community parent = CommunityBuilder.createCommunity(context).build();
|
||||||
Collection collection = CollectionBuilder.createCollection(context, parent)
|
Collection collection = CollectionBuilder.createCollection(context, parent)
|
||||||
.withWorkflowGroup(1, workflowUserB, workflowUserD)
|
.withWorkflowGroup(1, workflowUserB, workflowUserD)
|
||||||
.withWorkflowGroup(2, workflowUserC, workflowUserD)
|
.withWorkflowGroup(2, workflowUserC, workflowUserD)
|
||||||
.withWorkflowGroup(3, workflowUserB, workflowUserD)
|
.withWorkflowGroup(3, workflowUserB, workflowUserD)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
||||||
.withSubmitter(workflowUserA)
|
.withSubmitter(workflowUserA)
|
||||||
.withTitle("Test item full workflow")
|
.withTitle("Test item full workflow")
|
||||||
.withIssueDate("2019-03-06")
|
.withIssueDate("2019-03-06")
|
||||||
.withSubject("ExtraEntry")
|
.withSubject("ExtraEntry")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Workflow workflow = XmlWorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
Workflow workflow = WorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
||||||
|
|
||||||
XmlWorkflowItem workflowItem = xmlWorkflowService.startWithoutNotify(context, wsi);
|
WorkflowItem workflowItem = workflowService.startWithoutNotify(context, wsi);
|
||||||
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
||||||
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
||||||
|
|
||||||
@@ -1254,9 +1261,10 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
||||||
|
|
||||||
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP, CLAIM_ACTION);
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
FINAL_EDIT_ACTION);
|
CLAIM_ACTION);
|
||||||
|
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
|
FINAL_EDIT_ACTION);
|
||||||
|
|
||||||
assertTrue(workflowItem.getItem().isArchived());
|
assertTrue(workflowItem.getItem().isArchived());
|
||||||
|
|
||||||
@@ -1295,21 +1303,21 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
Community parent = CommunityBuilder.createCommunity(context).build();
|
Community parent = CommunityBuilder.createCommunity(context).build();
|
||||||
Collection collection = CollectionBuilder.createCollection(context, parent)
|
Collection collection = CollectionBuilder.createCollection(context, parent)
|
||||||
.withWorkflowGroup(1, workflowUserB, workflowUserD)
|
.withWorkflowGroup(1, workflowUserB, workflowUserD)
|
||||||
.withWorkflowGroup(2, workflowUserC, workflowUserD)
|
.withWorkflowGroup(2, workflowUserC, workflowUserD)
|
||||||
.withWorkflowGroup(3, workflowUserB, workflowUserD)
|
.withWorkflowGroup(3, workflowUserB, workflowUserD)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
||||||
.withSubmitter(workflowUserA)
|
.withSubmitter(workflowUserA)
|
||||||
.withTitle("Test item full workflow")
|
.withTitle("Test item full workflow")
|
||||||
.withIssueDate("2019-03-06")
|
.withIssueDate("2019-03-06")
|
||||||
.withSubject("ExtraEntry")
|
.withSubject("ExtraEntry")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Workflow workflow = XmlWorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
Workflow workflow = WorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
||||||
|
|
||||||
XmlWorkflowItem workflowItem = xmlWorkflowService.startWithoutNotify(context, wsi);
|
WorkflowItem workflowItem = workflowService.startWithoutNotify(context, wsi);
|
||||||
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
||||||
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
||||||
|
|
||||||
@@ -1324,9 +1332,10 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
||||||
|
|
||||||
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP, CLAIM_ACTION);
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
FINAL_EDIT_ACTION);
|
CLAIM_ACTION);
|
||||||
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
|
FINAL_EDIT_ACTION);
|
||||||
|
|
||||||
assertTrue(workflowItem.getItem().isArchived());
|
assertTrue(workflowItem.getItem().isArchived());
|
||||||
|
|
||||||
@@ -1365,21 +1374,21 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
Community parent = CommunityBuilder.createCommunity(context).build();
|
Community parent = CommunityBuilder.createCommunity(context).build();
|
||||||
Collection collection = CollectionBuilder.createCollection(context, parent)
|
Collection collection = CollectionBuilder.createCollection(context, parent)
|
||||||
.withWorkflowGroup(1, workflowUserB, workflowUserD)
|
.withWorkflowGroup(1, workflowUserB, workflowUserD)
|
||||||
.withWorkflowGroup(2, workflowUserC, workflowUserD)
|
.withWorkflowGroup(2, workflowUserC, workflowUserD)
|
||||||
.withWorkflowGroup(3, workflowUserB, workflowUserD)
|
.withWorkflowGroup(3, workflowUserB, workflowUserD)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
||||||
.withSubmitter(workflowUserA)
|
.withSubmitter(workflowUserA)
|
||||||
.withTitle("Test item full workflow")
|
.withTitle("Test item full workflow")
|
||||||
.withIssueDate("2019-03-06")
|
.withIssueDate("2019-03-06")
|
||||||
.withSubject("ExtraEntry")
|
.withSubject("ExtraEntry")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Workflow workflow = XmlWorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
Workflow workflow = WorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
||||||
|
|
||||||
XmlWorkflowItem workflowItem = xmlWorkflowService.startWithoutNotify(context, wsi);
|
WorkflowItem workflowItem = workflowService.startWithoutNotify(context, wsi);
|
||||||
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
||||||
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
||||||
|
|
||||||
@@ -1393,9 +1402,10 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
||||||
|
|
||||||
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP, CLAIM_ACTION);
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
FINAL_EDIT_ACTION);
|
CLAIM_ACTION);
|
||||||
|
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
|
FINAL_EDIT_ACTION);
|
||||||
|
|
||||||
assertTrue(workflowItem.getItem().isArchived());
|
assertTrue(workflowItem.getItem().isArchived());
|
||||||
|
|
||||||
@@ -1434,21 +1444,21 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
|
|
||||||
Community parent = CommunityBuilder.createCommunity(context).build();
|
Community parent = CommunityBuilder.createCommunity(context).build();
|
||||||
Collection collection = CollectionBuilder.createCollection(context, parent)
|
Collection collection = CollectionBuilder.createCollection(context, parent)
|
||||||
.withWorkflowGroup(1, workflowUserB, workflowUserD)
|
.withWorkflowGroup(1, workflowUserB, workflowUserD)
|
||||||
.withWorkflowGroup(2, workflowUserC, workflowUserD)
|
.withWorkflowGroup(2, workflowUserC, workflowUserD)
|
||||||
.withWorkflowGroup(3, workflowUserB, workflowUserD)
|
.withWorkflowGroup(3, workflowUserB, workflowUserD)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
WorkspaceItem wsi = WorkspaceItemBuilder.createWorkspaceItem(context, collection)
|
||||||
.withSubmitter(workflowUserA)
|
.withSubmitter(workflowUserA)
|
||||||
.withTitle("Test item full workflow")
|
.withTitle("Test item full workflow")
|
||||||
.withIssueDate("2019-03-06")
|
.withIssueDate("2019-03-06")
|
||||||
.withSubject("ExtraEntry")
|
.withSubject("ExtraEntry")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Workflow workflow = XmlWorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
Workflow workflow = WorkflowServiceFactory.getInstance().getWorkflowFactory().getWorkflow(collection);
|
||||||
|
|
||||||
XmlWorkflowItem workflowItem = xmlWorkflowService.startWithoutNotify(context, wsi);
|
WorkflowItem workflowItem = workflowService.startWithoutNotify(context, wsi);
|
||||||
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
MockHttpServletRequest httpServletRequest = new MockHttpServletRequest();
|
||||||
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
httpServletRequest.setParameter("submit_approve", "submit_approve");
|
||||||
|
|
||||||
@@ -1460,12 +1470,14 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserC, workflow, workflowItem, EDIT_STEP, EDIT_ACTION);
|
||||||
|
|
||||||
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP, CLAIM_ACTION);
|
executeWorkflowAction(httpServletRequest, workflowUserB, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
|
CLAIM_ACTION);
|
||||||
assertDeletionOfEperson(workflowUserB, true);
|
assertDeletionOfEperson(workflowUserB, true);
|
||||||
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP, CLAIM_ACTION);
|
|
||||||
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
FINAL_EDIT_ACTION);
|
CLAIM_ACTION);
|
||||||
|
executeWorkflowAction(httpServletRequest, workflowUserD, workflow, workflowItem, FINAL_EDIT_STEP,
|
||||||
|
FINAL_EDIT_ACTION);
|
||||||
|
|
||||||
assertTrue(workflowItem.getItem().isArchived());
|
assertTrue(workflowItem.getItem().isArchived());
|
||||||
|
|
||||||
@@ -1484,11 +1496,12 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void executeWorkflowAction(HttpServletRequest httpServletRequest, EPerson user,
|
private void executeWorkflowAction(HttpServletRequest httpServletRequest, EPerson user,
|
||||||
Workflow workflow, XmlWorkflowItem workflowItem, String stepId, String actionId)
|
Workflow workflow, WorkflowItem workflowItem, String stepId,
|
||||||
|
String actionId)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
context.setCurrentUser(user);
|
context.setCurrentUser(user);
|
||||||
xmlWorkflowService.doState(context, user, httpServletRequest, workflowItem.getID(), workflow,
|
workflowService.doState(context, user, httpServletRequest, workflowItem.getID(), workflow,
|
||||||
workflow.getStep(stepId).getActionConfig(actionId));
|
workflow.getStep(stepId).getActionConfig(actionId));
|
||||||
context.setCurrentUser(null);
|
context.setCurrentUser(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1514,7 +1527,7 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
deleteSuccess = false;
|
deleteSuccess = false;
|
||||||
log.error("Caught an Exception while deleting an EPerson. " + ex.getClass().getName() + ": ", ex);
|
log.error("Caught an Exception while deleting an EPerson. " + ex.getClass().getName() + ": ", ex);
|
||||||
fail("Caught an Exception while deleting an EPerson. " + ex.getClass().getName() +
|
fail("Caught an Exception while deleting an EPerson. " + ex.getClass().getName() +
|
||||||
": " + ex.getMessage());
|
": " + ex.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (shouldSucceed) {
|
if (shouldSucceed) {
|
||||||
@@ -1540,7 +1553,7 @@ public class EPersonInWorkflowIT extends AbstractIntegrationTestWithDatabase {
|
|||||||
deleteSuccess = false;
|
deleteSuccess = false;
|
||||||
log.error("Caught an Exception while deleting an EPerson. " + ex.getClass().getName() + ": ", ex);
|
log.error("Caught an Exception while deleting an EPerson. " + ex.getClass().getName() + ": ", ex);
|
||||||
fail("Caught an Exception while deleting an EPerson. " + ex.getClass().getName() +
|
fail("Caught an Exception while deleting an EPerson. " + ex.getClass().getName() +
|
||||||
": " + ex.getMessage());
|
": " + ex.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,386 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.workflowbasic;
|
|
||||||
|
|
||||||
import static org.hamcrest.MatcherAssert.assertThat;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
|
|
||||||
import org.apache.logging.log4j.Logger;
|
|
||||||
import org.dspace.AbstractDSpaceTest;
|
|
||||||
import org.dspace.AbstractIntegrationTest;
|
|
||||||
import org.dspace.authorize.AuthorizeException;
|
|
||||||
import org.dspace.content.Bitstream;
|
|
||||||
import org.dspace.content.Bundle;
|
|
||||||
import org.dspace.content.Collection;
|
|
||||||
import org.dspace.content.Community;
|
|
||||||
import org.dspace.content.Item;
|
|
||||||
import org.dspace.content.WorkspaceItem;
|
|
||||||
import org.dspace.content.factory.ContentServiceFactory;
|
|
||||||
import org.dspace.content.service.BitstreamService;
|
|
||||||
import org.dspace.content.service.BundleService;
|
|
||||||
import org.dspace.content.service.CollectionService;
|
|
||||||
import org.dspace.content.service.CommunityService;
|
|
||||||
import org.dspace.content.service.InstallItemService;
|
|
||||||
import org.dspace.content.service.ItemService;
|
|
||||||
import org.dspace.content.service.WorkspaceItemService;
|
|
||||||
import org.dspace.core.Constants;
|
|
||||||
import org.dspace.core.Context;
|
|
||||||
import org.dspace.eperson.EPerson;
|
|
||||||
import org.dspace.eperson.Group;
|
|
||||||
import org.dspace.eperson.factory.EPersonServiceFactory;
|
|
||||||
import org.dspace.eperson.service.EPersonService;
|
|
||||||
import org.dspace.eperson.service.GroupService;
|
|
||||||
import org.dspace.services.ConfigurationService;
|
|
||||||
import org.dspace.services.factory.DSpaceServicesFactory;
|
|
||||||
import org.dspace.workflow.WorkflowException;
|
|
||||||
import org.dspace.workflowbasic.factory.BasicWorkflowServiceFactory;
|
|
||||||
import org.dspace.workflowbasic.service.BasicWorkflowItemService;
|
|
||||||
import org.dspace.workflowbasic.service.BasicWorkflowService;
|
|
||||||
import org.hamcrest.CoreMatchers;
|
|
||||||
import org.junit.After;
|
|
||||||
import org.junit.Assert;
|
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Ignore;
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is an integration test to ensure that the basic workflow system
|
|
||||||
* -including methods of the collection service dealing with it- works properly
|
|
||||||
* together with the authorization service.
|
|
||||||
*
|
|
||||||
* @author Pascal-Nicolas Becker
|
|
||||||
* @author Terry Brady
|
|
||||||
*/
|
|
||||||
@Ignore
|
|
||||||
public class BasicWorkflowAuthorizationIT
|
|
||||||
extends AbstractIntegrationTest {
|
|
||||||
/**
|
|
||||||
* log4j category
|
|
||||||
*/
|
|
||||||
private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(BasicWorkflowAuthorizationIT.class);
|
|
||||||
|
|
||||||
protected CommunityService communityService = ContentServiceFactory.getInstance().getCommunityService();
|
|
||||||
protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService();
|
|
||||||
protected ItemService itemService = ContentServiceFactory.getInstance().getItemService();
|
|
||||||
protected InstallItemService installItemService = ContentServiceFactory.getInstance().getInstallItemService();
|
|
||||||
protected WorkspaceItemService workspaceItemService = ContentServiceFactory.getInstance().getWorkspaceItemService();
|
|
||||||
protected BasicWorkflowItemService basicWorkflowItemService =
|
|
||||||
BasicWorkflowServiceFactory.getInstance().getBasicWorkflowItemService();
|
|
||||||
protected BasicWorkflowService basicWorkflowService = BasicWorkflowServiceFactory.getInstance()
|
|
||||||
.getBasicWorkflowService();
|
|
||||||
protected EPersonService ePersonService = EPersonServiceFactory.getInstance().getEPersonService();
|
|
||||||
protected GroupService groupService = EPersonServiceFactory.getInstance().getGroupService();
|
|
||||||
protected BundleService bundleService = ContentServiceFactory.getInstance().getBundleService();
|
|
||||||
protected BitstreamService bitstreamService = ContentServiceFactory.getInstance().getBitstreamService();
|
|
||||||
protected ConfigurationService configurationService = DSpaceServicesFactory.getInstance().getConfigurationService();
|
|
||||||
|
|
||||||
protected Community owningCommunity;
|
|
||||||
protected Collection collection;
|
|
||||||
protected Group group;
|
|
||||||
protected EPerson member;
|
|
||||||
|
|
||||||
public BasicWorkflowAuthorizationIT() {
|
|
||||||
owningCommunity = null;
|
|
||||||
collection = null;
|
|
||||||
group = null;
|
|
||||||
member = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method will be run before every test as per @Before. It will
|
|
||||||
* initialize resources required for the tests.
|
|
||||||
*
|
|
||||||
* Other methods can be annotated with @Before here or in subclasses
|
|
||||||
* but no execution order is guaranteed
|
|
||||||
*/
|
|
||||||
@Before
|
|
||||||
@Override
|
|
||||||
public void init() {
|
|
||||||
super.init();
|
|
||||||
|
|
||||||
try {
|
|
||||||
//we have to create a new community in the database
|
|
||||||
configurationService.setProperty("workflow.notify.returned.tasks", false);
|
|
||||||
context.turnOffAuthorisationSystem();
|
|
||||||
|
|
||||||
this.owningCommunity = communityService.create(null, context);
|
|
||||||
this.collection = collectionService.create(context, owningCommunity);
|
|
||||||
this.member = ePersonService.create(context);
|
|
||||||
this.group = groupService.create(context);
|
|
||||||
groupService.addMember(context, group, member);
|
|
||||||
groupService.update(context, group);
|
|
||||||
} catch (AuthorizeException ex) {
|
|
||||||
log.error("Authorization Error in init", ex);
|
|
||||||
Assert.fail("Authorization Error in init: " + ex.getMessage());
|
|
||||||
} catch (SQLException ex) {
|
|
||||||
log.error("SQL Error in init", ex);
|
|
||||||
Assert.fail("SQL Error in init: " + ex.getMessage());
|
|
||||||
} finally {
|
|
||||||
// restore the authorization system as tests expect it to be in place
|
|
||||||
context.restoreAuthSystemState();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method will be run after every test as per @After. It will
|
|
||||||
* clean resources initialized by the @Before methods.
|
|
||||||
*
|
|
||||||
* Other methods can be annotated with @After here or in subclasses
|
|
||||||
* but no execution order is guaranteed
|
|
||||||
*/
|
|
||||||
@After
|
|
||||||
@Override
|
|
||||||
public void destroy() {
|
|
||||||
try {
|
|
||||||
context.turnOffAuthorisationSystem();
|
|
||||||
|
|
||||||
// reload collection, community, group and eperson
|
|
||||||
if (collection != null) {
|
|
||||||
try {
|
|
||||||
collectionService.delete(context, collection);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("deleting collection", e);
|
|
||||||
}
|
|
||||||
collection = null;
|
|
||||||
}
|
|
||||||
if (owningCommunity != null) {
|
|
||||||
try {
|
|
||||||
communityService.delete(context, owningCommunity);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("deleting community", e);
|
|
||||||
}
|
|
||||||
owningCommunity = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (member != null) {
|
|
||||||
if (group != null) {
|
|
||||||
try {
|
|
||||||
groupService.removeMember(context, group, member);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("detaching group relationship", e);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
groupService.delete(context, group);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("detaching group relationship", e);
|
|
||||||
}
|
|
||||||
group = null;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
ePersonService.delete(context, member);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("deleting user", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
// restore the authorization system
|
|
||||||
context.restoreAuthSystemState();
|
|
||||||
}
|
|
||||||
super.destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void setWorkflowGroup(Collection collection, Context context, int step, Group group)
|
|
||||||
throws SQLException, AuthorizeException {
|
|
||||||
collection.setWorkflowGroup(context, step, group);
|
|
||||||
//collection.setWorkflowGroup(step, group);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test if setWorkflowGroup method sets the appropriate policies for the
|
|
||||||
* new workflow group.
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void testsetWorkflowGroupSetsPermission() throws SQLException, AuthorizeException {
|
|
||||||
int step = 1;
|
|
||||||
try {
|
|
||||||
context.turnOffAuthorisationSystem();
|
|
||||||
setWorkflowGroup(collection, context, step, group);
|
|
||||||
collectionService.update(context, collection);
|
|
||||||
} finally {
|
|
||||||
context.restoreAuthSystemState();
|
|
||||||
}
|
|
||||||
assertThat("testsetWorkflowGroupSetsPermission 0",
|
|
||||||
collectionService.getWorkflowGroup(context, collection, step),
|
|
||||||
CoreMatchers.equalTo(group));
|
|
||||||
Assert.assertTrue(groupService.isDirectMember(group, member));
|
|
||||||
Assert.assertTrue("testsetWorkflowGroupSetsPermission 1", authorizeService
|
|
||||||
.authorizeActionBoolean(context, member, collection, Constants.WORKFLOW_STEP_1, true));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test if setWorkflowGroup method revokes policies when a workflow group
|
|
||||||
* is removed.
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void testsetWorkflowGroupRevokesPermission() throws SQLException, AuthorizeException {
|
|
||||||
int step = 1;
|
|
||||||
try {
|
|
||||||
context.turnOffAuthorisationSystem();
|
|
||||||
setWorkflowGroup(collection, context, step, group);
|
|
||||||
collectionService.update(context, collection);
|
|
||||||
} finally {
|
|
||||||
context.restoreAuthSystemState();
|
|
||||||
}
|
|
||||||
assertThat("testsetWorkflowGroupRevokesPermission 0",
|
|
||||||
collectionService.getWorkflowGroup(context, collection, step),
|
|
||||||
CoreMatchers
|
|
||||||
.equalTo(group));
|
|
||||||
Assert.assertTrue("testsetWorkflowGroupRevokesPermission 1", authorizeService
|
|
||||||
.authorizeActionBoolean(context, member, collection, Constants.WORKFLOW_STEP_1, true));
|
|
||||||
try {
|
|
||||||
context.turnOffAuthorisationSystem();
|
|
||||||
setWorkflowGroup(collection, context, step, null);
|
|
||||||
collectionService.update(context, collection);
|
|
||||||
} finally {
|
|
||||||
context.restoreAuthSystemState();
|
|
||||||
}
|
|
||||||
assertThat("testsetWorkflowGroupRevokesPermission 2",
|
|
||||||
collectionService.getWorkflowGroup(context, collection, step),
|
|
||||||
CoreMatchers
|
|
||||||
.nullValue());
|
|
||||||
Assert.assertFalse("testsetWorkflowGroupRevokesPermission 3", authorizeService
|
|
||||||
.authorizeActionBoolean(context, member, collection, Constants.WORKFLOW_STEP_1, true));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test that a member of a workflow step group can claim a task and get the
|
|
||||||
* appropriate policies.
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void testReviewerPermissions()
|
|
||||||
throws SQLException, AuthorizeException, IOException, WorkflowException {
|
|
||||||
BasicWorkflowItem wfi = null;
|
|
||||||
try {
|
|
||||||
// prepare a task to claim
|
|
||||||
// turn of the authorization system to be able to create the task
|
|
||||||
context.turnOffAuthorisationSystem();
|
|
||||||
setWorkflowGroup(collection, context, 1, group);
|
|
||||||
collectionService.update(context, collection);
|
|
||||||
WorkspaceItem wsi = workspaceItemService.create(context, collection, false);
|
|
||||||
Item item = wsi.getItem();
|
|
||||||
Bundle bundle = bundleService.create(context, item, "ORIGINAL");
|
|
||||||
File f = new File(AbstractDSpaceTest.testProps.get("test.bitstream").toString());
|
|
||||||
bitstreamService.create(context, bundle, new FileInputStream(f));
|
|
||||||
bundleService.update(context, bundle);
|
|
||||||
itemService.update(context, item);
|
|
||||||
workspaceItemService.update(context, wsi);
|
|
||||||
|
|
||||||
wfi = basicWorkflowService.startWithoutNotify(context, wsi);
|
|
||||||
basicWorkflowItemService.update(context, wfi);
|
|
||||||
} finally {
|
|
||||||
// restore the authorization system to perform our tests
|
|
||||||
context.restoreAuthSystemState();
|
|
||||||
}
|
|
||||||
|
|
||||||
wfi = basicWorkflowItemService.find(context, wfi.getID());
|
|
||||||
basicWorkflowService.claim(context, wfi, member);
|
|
||||||
Item item = wfi.getItem();
|
|
||||||
|
|
||||||
int i = 0;
|
|
||||||
// check item policies
|
|
||||||
for (int action : new int[] {Constants.READ, Constants.WRITE, Constants.ADD, Constants.REMOVE,
|
|
||||||
Constants.DELETE}) {
|
|
||||||
Assert.assertTrue("testReviewerPermissions 1-" + i++,
|
|
||||||
authorizeService.authorizeActionBoolean(context, member, item, action, false));
|
|
||||||
}
|
|
||||||
|
|
||||||
// ensure we can read the original bundle and its bitstream
|
|
||||||
Bundle bundle = itemService.getBundles(item, "ORIGINAL").get(0);
|
|
||||||
Bitstream bitstream = bundle.getBitstreams().get(0);
|
|
||||||
Assert.assertTrue("testReviewerPermissions 2-1",
|
|
||||||
authorizeService.authorizeActionBoolean(context, member, bundle, Constants.READ, false));
|
|
||||||
Assert.assertTrue("testReviewerPermissions 2-2" + i++,
|
|
||||||
authorizeService.authorizeActionBoolean(context, member, bitstream, Constants.READ, false));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test that a eperson not a member of a workflow step group can't claim a task.
|
|
||||||
*/
|
|
||||||
@Test(expected = AuthorizeException.class)
|
|
||||||
public void testNonWorkflowGroupMemberCannotClaimTask()
|
|
||||||
throws SQLException, AuthorizeException, IOException, WorkflowException {
|
|
||||||
BasicWorkflowItem wfi = null;
|
|
||||||
EPerson someone = null;
|
|
||||||
try {
|
|
||||||
// prepare a task to claim
|
|
||||||
// turn of the authorization system to be able to create the task
|
|
||||||
context.turnOffAuthorisationSystem();
|
|
||||||
someone = ePersonService.create(context);
|
|
||||||
setWorkflowGroup(collection, context, 1, group);
|
|
||||||
collectionService.update(context, collection);
|
|
||||||
WorkspaceItem wsi = workspaceItemService.create(context, collection, false);
|
|
||||||
Item item = wsi.getItem();
|
|
||||||
Bundle bundle = bundleService.create(context, item, "ORIGINAL");
|
|
||||||
File f = new File(AbstractDSpaceTest.testProps.get("test.bitstream").toString());
|
|
||||||
bitstreamService.create(context, bundle, new FileInputStream(f));
|
|
||||||
bundleService.update(context, bundle);
|
|
||||||
itemService.update(context, item);
|
|
||||||
workspaceItemService.update(context, wsi);
|
|
||||||
|
|
||||||
wfi = basicWorkflowService.startWithoutNotify(context, wsi);
|
|
||||||
basicWorkflowItemService.update(context, wfi);
|
|
||||||
} finally {
|
|
||||||
// restore the authorization system to perform our tests
|
|
||||||
context.restoreAuthSystemState();
|
|
||||||
}
|
|
||||||
|
|
||||||
wfi = basicWorkflowItemService.find(context, wfi.getID());
|
|
||||||
basicWorkflowService.claim(context, wfi, someone);
|
|
||||||
Assert.fail("Someone, not part of a workflow step group was able to claim a "
|
|
||||||
+ "task without an AUthorizeException.");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test that the submitter of an item who is not member of the appropriate
|
|
||||||
* workflow step group cannot claim the task of his/her own submission.
|
|
||||||
* Submitter habe special permissions on Workflow and Workspace items, so we
|
|
||||||
* need to test that they are still not able to claim tasks for there own
|
|
||||||
* items.
|
|
||||||
*/
|
|
||||||
@Test(expected = AuthorizeException.class)
|
|
||||||
public void testNonWorkflowGroupSubmitterCannotClaimTask()
|
|
||||||
throws SQLException, AuthorizeException, IOException, WorkflowException {
|
|
||||||
BasicWorkflowItem wfi = null;
|
|
||||||
EPerson submitter = null;
|
|
||||||
try {
|
|
||||||
// prepare a task to claim
|
|
||||||
// turn of the authorization system to be able to create the task
|
|
||||||
context.turnOffAuthorisationSystem();
|
|
||||||
submitter = ePersonService.create(context);
|
|
||||||
setWorkflowGroup(collection, context, 1, group);
|
|
||||||
collectionService.update(context, collection);
|
|
||||||
WorkspaceItem wsi = workspaceItemService.create(context, collection, false);
|
|
||||||
Item item = wsi.getItem();
|
|
||||||
item.setSubmitter(submitter);
|
|
||||||
Bundle bundle = bundleService.create(context, item, "ORIGINAL");
|
|
||||||
File f = new File(AbstractDSpaceTest.testProps.get("test.bitstream").toString());
|
|
||||||
bitstreamService.create(context, bundle, new FileInputStream(f));
|
|
||||||
bundleService.update(context, bundle);
|
|
||||||
itemService.update(context, item);
|
|
||||||
workspaceItemService.update(context, wsi);
|
|
||||||
|
|
||||||
wfi = basicWorkflowService.startWithoutNotify(context, wsi);
|
|
||||||
basicWorkflowItemService.update(context, wfi);
|
|
||||||
} finally {
|
|
||||||
// restore the authorization system to perform our tests
|
|
||||||
context.restoreAuthSystemState();
|
|
||||||
}
|
|
||||||
|
|
||||||
wfi = basicWorkflowItemService.find(context, wfi.getID());
|
|
||||||
basicWorkflowService.claim(context, wfi, submitter);
|
|
||||||
Assert.fail("A submitter was able to claim a task without being a member of the "
|
|
||||||
+ "appropriate workflow step group. Expected: AuthorizeException.");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
@@ -23,6 +23,7 @@ import org.dspace.content.factory.ContentServiceFactory;
|
|||||||
import org.dspace.content.service.CollectionService;
|
import org.dspace.content.service.CollectionService;
|
||||||
import org.dspace.content.service.CommunityService;
|
import org.dspace.content.service.CommunityService;
|
||||||
import org.dspace.utils.DSpace;
|
import org.dspace.utils.DSpace;
|
||||||
|
import org.dspace.workflow.factory.WorkflowServiceFactoryImpl;
|
||||||
import org.dspace.xmlworkflow.factory.XmlWorkflowFactory;
|
import org.dspace.xmlworkflow.factory.XmlWorkflowFactory;
|
||||||
import org.dspace.xmlworkflow.state.Workflow;
|
import org.dspace.xmlworkflow.state.Workflow;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
@@ -30,7 +31,7 @@ import org.junit.Before;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests that check that the spring bean {@link org.dspace.xmlworkflow.factory.XmlWorkflowServiceFactoryImpl}
|
* Tests that check that the spring bean {@link WorkflowServiceFactoryImpl}
|
||||||
* in workflow.xml gets created correctly
|
* in workflow.xml gets created correctly
|
||||||
*
|
*
|
||||||
* @author Maria Verdonck (Atmire) on 19/12/2019
|
* @author Maria Verdonck (Atmire) on 19/12/2019
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user