/**
* 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 org.dspace.core.Context;
import org.dspace.eperson.EPerson;
import org.dspace.storage.rdbms.TableRow;
import org.dspace.storage.rdbms.DatabaseManager;
import org.dspace.storage.rdbms.TableRowIterator;
import org.dspace.authorize.AuthorizeException;
import org.dspace.eperson.Group;
import java.sql.SQLException;
import java.util.ArrayList;
/**
* Represents a workflow assignments database representation.
* These assignments describe roles and the groups connected
* to these roles for each collection
*
* @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 WorkflowItemRole {
/** Our context */
private Context myContext;
/** The row in the table representing this object */
private TableRow myRow;
/**
* Construct an ResourcePolicy
*
* @param context
* the context this object exists in
* @param row
* the corresponding row in the table
*/
WorkflowItemRole(Context context, TableRow row)
{
myContext = context;
myRow = row;
}
public static WorkflowItemRole find(Context context, int id)
throws SQLException
{
TableRow row = DatabaseManager.find(context, "cwf_workflowitemrole", id);
if (row == null)
{
return null;
}
else
{
return new WorkflowItemRole(context, row);
}
}
public static WorkflowItemRole[] find(Context context, int workflowItemId, String role) throws SQLException {
TableRowIterator tri = DatabaseManager.queryTable(context,"cwf_workflowitemrole",
"SELECT * FROM cwf_workflowitemrole WHERE workflowitem_id= ? AND role_id= ? ",
workflowItemId, role);
ArrayList<WorkflowItemRole> roles = new ArrayList<WorkflowItemRole>();
while(tri.hasNext()){
roles.add(new WorkflowItemRole(context, tri.next()));
}
return roles.toArray(new WorkflowItemRole[roles.size()]);
}
public static WorkflowItemRole[] findAllForItem(Context context, int workflowItemId) throws SQLException {
TableRowIterator tri = DatabaseManager.queryTable(context,"cwf_workflowitemrole",
"SELECT * FROM cwf_workflowitemrole WHERE workflowitem_id= ? ",
workflowItemId);
ArrayList<WorkflowItemRole> roles = new ArrayList<WorkflowItemRole>();
while(tri.hasNext()){
roles.add(new WorkflowItemRole(context, tri.next()));
}
return roles.toArray(new WorkflowItemRole[roles.size()]);
}
public static WorkflowItemRole create(Context context) throws SQLException,
AuthorizeException {
TableRow row = DatabaseManager.create(context, "cwf_workflowitemrole");
return new WorkflowItemRole(context, row);
}
public void delete() throws SQLException
{
DatabaseManager.delete(myContext, myRow);
}
public void update() throws SQLException
{
DatabaseManager.update(myContext, myRow);
}
public void setRoleId(String id){
myRow.setColumn("role_id",id);
}
public String getRoleId(){
return myRow.getStringColumn("role_id");
}
public void setWorkflowItemId(int id){
myRow.setColumn("workflowitem_id", id);
}
public int getWorkflowItemId(){
return myRow.getIntColumn("workflowitem_id");
}
public void setEPerson(EPerson eperson){
myRow.setColumn("eperson_id", eperson.getID());
}
public EPerson getEPerson() throws SQLException {
return EPerson.find(myContext, myRow.getIntColumn("eperson_id"));
}
public void setGroup(Group group){
myRow.setColumn("group_id", group.getID());
}
public Group getGroup() throws SQLException {
return Group.find(myContext, myRow.getIntColumn("group_id"));
}
}