/** * 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.storage.rdbms.DatabaseManager; import org.dspace.storage.rdbms.TableRow; import org.dspace.storage.rdbms.TableRowIterator; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; /** * Claimed task representing the database representation of an action claimed by an eperson * * @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 InProgressUser { /** Our context */ private Context myContext; /** The row in the table representing this object */ private TableRow myRow; /** * Construct an Claimed Task * * @param context * the context this object exists in * @param row * the corresponding row in the table */ InProgressUser(Context context, TableRow row) { myContext = context; myRow = row; } public static InProgressUser find(Context context, int id) throws SQLException { TableRow row = DatabaseManager.find(context, "cwf_in_progress_user", id); if (row == null) { return null; } else { return new InProgressUser(context, row); } } public static InProgressUser findByWorkflowItemAndEPerson(Context context, int wfiID, int epersonID) throws SQLException { TableRow row = DatabaseManager.querySingleTable(context,"cwf_in_progress_user", "SELECT * FROM cwf_in_progress_user WHERE workflowitem_id= ? AND user_id= ?", wfiID, epersonID); if(row == null) return null; else return new InProgressUser(context, row); } public static List<InProgressUser> findByEperson(Context context, int epersonID) throws SQLException { TableRowIterator tri = DatabaseManager.queryTable(context,"cwf_in_progress_user", "SELECT * FROM cwf_in_progress_user WHERE user_id = "+epersonID); List<InProgressUser> list = new ArrayList<InProgressUser>(); while(tri.hasNext()) { TableRow row = tri.next(); list.add(new InProgressUser(context, row)); } return list; } public static List<InProgressUser> findByWorkflowItem(Context c, int wfiID) throws SQLException { TableRowIterator tri = DatabaseManager.queryTable(c,"cwf_in_progress_user", "SELECT * FROM cwf_in_progress_user WHERE workflowitem_id="+wfiID); List<InProgressUser> list = new ArrayList<InProgressUser>(); while(tri.hasNext()) { TableRow row = tri.next(); list.add(new InProgressUser(c, row)); } return list; } public static int getNumberOfInProgressUsers(Context c, int wfiID) throws SQLException { TableRowIterator tri = DatabaseManager.queryTable(c,"cwf_in_progress_user", "SELECT * FROM cwf_in_progress_user WHERE workflowitem_id="+wfiID+" AND finished= '0'"); return tri.toList().size(); } public static int getNumberOfFinishedUsers(Context c, int wfiID) throws SQLException { TableRowIterator tri = DatabaseManager.queryTable(c,"cwf_in_progress_user", "SELECT * FROM cwf_in_progress_user WHERE workflowitem_id="+wfiID+" AND finished= '1'"); return tri.toList().size(); } public static InProgressUser create(Context context) throws SQLException { TableRow row = DatabaseManager.create(context, "cwf_in_progress_user"); return new InProgressUser(context, row); } public void delete() throws SQLException { DatabaseManager.delete(myContext, myRow); } public void update() throws SQLException { DatabaseManager.update(myContext, myRow); } public void setUserID(int userID){ myRow.setColumn("user_id", userID); } public int getUserID(){ return myRow.getIntColumn("user_id"); } public void setWorkflowItemID(int workflowItemID){ myRow.setColumn("workflowitem_id", workflowItemID); } public int getWorkflowItemID(){ return myRow.getIntColumn("workflowitem_id"); } public String getActionID(){ return myRow.getStringColumn("action_id"); } public void setWorkflowID(String workflowID){ myRow.setColumn("workflow_id", workflowID); } public String getWorkflowID(){ return myRow.getStringColumn("workflow_id"); } public boolean isFinished(){ return myRow.getBooleanColumn("finished"); } public void setFinished(boolean finished){ myRow.setColumn("finished", finished); } }