/** * 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 ClaimedTask { /** 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 */ ClaimedTask(Context context, TableRow row) { myContext = context; myRow = row; } public static ClaimedTask find(Context context, int id) throws SQLException { TableRow row = DatabaseManager.find(context, "cwf_claimtask", id); if (row == null) { return null; } else { return new ClaimedTask(context, row); } } public static List<ClaimedTask> findByWorkflowId(Context context, int workflowID) throws SQLException { TableRowIterator tri = DatabaseManager.queryTable(context,"cwf_claimtask", "SELECT * FROM cwf_claimtask WHERE workflowitem_id= "+workflowID); List<ClaimedTask> list = new ArrayList<ClaimedTask>(); while(tri.hasNext()) { TableRow row = tri.next(); list.add(new ClaimedTask(context, row)); } return list; } public static ClaimedTask findByWorkflowIdAndEPerson(Context context, int workflowID, int epersonID) throws SQLException { TableRow row = DatabaseManager.querySingleTable(context,"cwf_claimtask", "SELECT * FROM cwf_claimtask WHERE workflowitem_id= ? AND owner_id= ?", workflowID, epersonID); if(row == null) return null; else return new ClaimedTask(context, row); } public static List<ClaimedTask> findByEperson(Context context, int epersonID) throws SQLException { TableRowIterator tri = DatabaseManager.queryTable(context,"cwf_claimtask", "SELECT * FROM cwf_claimtask WHERE owner_id= "+epersonID); List<ClaimedTask> list = new ArrayList<ClaimedTask>(); while(tri.hasNext()) { TableRow row = tri.next(); list.add(new ClaimedTask(context, row)); } return list; } public static List<ClaimedTask> find(Context c, int wfiID, String stepID) throws SQLException { TableRowIterator tri = DatabaseManager.queryTable(c,"cwf_claimtask", "SELECT * FROM cwf_claimtask WHERE workflowitem_id="+wfiID+" AND step_id= ?", stepID); List<ClaimedTask> list = new ArrayList<ClaimedTask>(); while(tri.hasNext()) { TableRow row = tri.next(); list.add(new ClaimedTask(c, row)); } return list; } public static ClaimedTask find(Context c, int epersonID, int wfiID, String stepID, String actionID) throws SQLException { TableRow row = DatabaseManager.querySingleTable(c,"cwf_claimtask", "SELECT * FROM cwf_claimtask WHERE workflowitem_id="+wfiID+" AND owner_id= "+epersonID+" AND action_id= ? AND step_id= ?",actionID, stepID); return new ClaimedTask(c, row); } public static List<ClaimedTask> find(Context c, int wfiID, String stepID, String actionID) throws SQLException { TableRowIterator tri = DatabaseManager.queryTable(c,"cwf_claimtask", "SELECT * FROM cwf_claimtask WHERE workflowitem_id="+wfiID+" AND step_id= ? AND action_id=?", stepID, actionID); List<ClaimedTask> list = new ArrayList<ClaimedTask>(); while(tri.hasNext()) { TableRow row = tri.next(); list.add(new ClaimedTask(c, row)); } return list; } public static List<ClaimedTask> find(Context c, XmlWorkflowItem workflowItem) throws SQLException { TableRowIterator tri = DatabaseManager.queryTable(c,"cwf_claimtask", "SELECT * FROM cwf_claimtask WHERE workflowitem_id="+workflowItem.getID()); List<ClaimedTask> list = new ArrayList<ClaimedTask>(); while(tri.hasNext()) { TableRow row = tri.next(); list.add(new ClaimedTask(c, row)); } return list; } public static List<ClaimedTask> findAllInStep(Context c, String stepID) throws SQLException { TableRowIterator tri = DatabaseManager.queryTable(c,"cwf_claimtask", "SELECT * FROM cwf_claimtask WHERE step_id= ?", stepID); List<ClaimedTask> list = new ArrayList<ClaimedTask>(); while(tri.hasNext()) { TableRow row = tri.next(); list.add(new ClaimedTask(c, row)); } return list; } public static ClaimedTask create(Context context) throws SQLException { TableRow row = DatabaseManager.create(context, "cwf_claimtask"); return new ClaimedTask(context, row); } public void delete() throws SQLException { DatabaseManager.delete(myContext, myRow); } public void update() throws SQLException { DatabaseManager.update(myContext, myRow); } public void setOwnerID(int ownerID){ myRow.setColumn("owner_id", ownerID); } public int getOwnerID(){ return myRow.getIntColumn("owner_id"); } public void setWorkflowItemID(int workflowItemID){ myRow.setColumn("workflowitem_id", workflowItemID); } public int getWorkflowItemID(){ return myRow.getIntColumn("workflowitem_id"); } public void setActionID(String actionID){ myRow.setColumn("action_id", actionID); } public String getActionID(){ return myRow.getStringColumn("action_id"); } public void setStepID(String stepID){ myRow.setColumn("step_id", stepID); } public String getStepID(){ return myRow.getStringColumn("step_id"); } public void setWorkflowID(String workflowID){ myRow.setColumn("workflow_id", workflowID); } public String getWorkflowID(){ return myRow.getStringColumn("workflow_id"); } }