/**
* 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.content.service.ItemService;
import org.dspace.core.Context;
import org.dspace.xmlworkflow.state.actions.Action;
import org.dspace.xmlworkflow.storedcomponents.*;
import org.dspace.xmlworkflow.storedcomponents.service.ClaimedTaskService;
import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.http.HttpServletRequest;
import java.sql.SQLException;
/**
* A class that that extends the action to support the common
* isAuthorized method
*
* @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 abstract class ProcessingAction extends Action {
@Autowired(required = true)
protected ClaimedTaskService claimedTaskService;
@Autowired(required = true)
protected ItemService itemService;
@Override
public boolean isAuthorized(Context context, HttpServletRequest request, XmlWorkflowItem wfi) throws SQLException {
ClaimedTask task = null;
if(context.getCurrentUser() != null)
task = claimedTaskService.findByWorkflowIdAndEPerson(context, wfi, context.getCurrentUser());
//Check if we have claimed the current task
return task != null &&
task.getWorkflowID().equals(getParent().getStep().getWorkflow().getID()) &&
task.getStepID().equals(getParent().getStep().getId()) &&
task.getActionID().equals(getParent().getId());
}
}