/**
* 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.state.actions.processingaction;
import org.dspace.app.util.Util;
import org.dspace.authorize.AuthorizeException;
import org.dspace.core.Context;
import org.dspace.eperson.EPerson;
import org.dspace.xmlworkflow.WorkflowException;
import org.dspace.xmlworkflow.state.Step;
import org.dspace.xmlworkflow.state.actions.ActionResult;
import org.dspace.xmlworkflow.storedcomponents.WorkflowItemRole;
import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.sql.SQLException;
/**
* Processing class for an action where an assigned user can
* assign another user to review the item
*
* @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 class SelectReviewerAction extends ProcessingAction{
public static final int MAIN_PAGE = 0;
public static final int SEARCH_RESULTS_PAGE = 1;
public static final int RESULTS_PER_PAGE = 5;
private String roleId;
@Override
public void activate(Context c, XmlWorkflowItem wf) throws SQLException, IOException, AuthorizeException, WorkflowException {
}
@Override
public ActionResult execute(Context c, XmlWorkflowItem wfi, Step step, HttpServletRequest request) throws SQLException, AuthorizeException, IOException, WorkflowException {
String submitButton = Util.getSubmitButton(request, "submit_cancel");
//Check if our user has pressed cancel
if(submitButton.equals("submit_cancel")){
//Send us back to the submissions page
return new ActionResult(ActionResult.TYPE.TYPE_CANCEL);
}else
if(submitButton.equals("submit_search")){
//Perform the search
String query = request.getParameter("query");
int page = Util.getIntParameter(request, "result-page");
if(page == -1){
page = 0;
}
int resultCount = EPerson.searchResultCount(c, query);
EPerson[] epeople = EPerson.search(c, query, page*RESULTS_PER_PAGE, RESULTS_PER_PAGE);
request.setAttribute("eperson-result-count", resultCount);
request.setAttribute("eperson-results", epeople);
request.setAttribute("result-page", page);
request.setAttribute("page", SEARCH_RESULTS_PAGE);
return new ActionResult(ActionResult.TYPE.TYPE_PAGE, SEARCH_RESULTS_PAGE);
}else
if(submitButton.startsWith("submit_select_reviewer_")){
//Retrieve the identifier of the eperson which will do the reviewing
int reviewerId = Integer.parseInt(submitButton.substring(submitButton.lastIndexOf("_") + 1));
EPerson reviewer = EPerson.find(c, reviewerId);
//We have a reviewer, assign him, the workflowitemrole will be translated into a task in the autoassign
WorkflowItemRole workflowItemRole = WorkflowItemRole.create(c);
workflowItemRole.setEPerson(reviewer);
workflowItemRole.setRoleId(getRoleId());
workflowItemRole.setWorkflowItemId(wfi.getID());
workflowItemRole.update();
return new ActionResult(ActionResult.TYPE.TYPE_OUTCOME, ActionResult.OUTCOME_COMPLETE);
}
//There are only 2 active buttons on this page, so if anything else happens just return an error
return new ActionResult(ActionResult.TYPE.TYPE_ERROR);
}
public String getRoleId() {
return roleId;
}
public void setRoleId(String roleId) {
this.roleId = roleId;
}
}