@Override
  public void claim(Context context, BasicWorkflowItem workflowItem, EPerson e)
      throws SQLException, IOException, AuthorizeException {
    int taskstate = workflowItem.getState();

    switch (taskstate) {
      case WFSTATE_STEP1POOL:

        // authorize DSpaceActions.SUBMIT_REVIEW
        doState(context, workflowItem, WFSTATE_STEP1, e);

        break;

      case WFSTATE_STEP2POOL:

        // authorize DSpaceActions.SUBMIT_STEP2
        doState(context, workflowItem, WFSTATE_STEP2, e);

        break;

      case WFSTATE_STEP3POOL:

        // authorize DSpaceActions.SUBMIT_STEP3
        doState(context, workflowItem, WFSTATE_STEP3, e);

        break;

        // if we got here, we weren't pooled... error?
        // FIXME - log the error?
    }

    log.info(
        LogManager.getHeader(
            context,
            "claim_task",
            "workflow_item_id="
                + workflowItem.getID()
                + "item_id="
                + workflowItem.getItem().getID()
                + "collection_id="
                + workflowItem.getCollection().getID()
                + "newowner_id="
                + workflowItem.getOwner().getID()
                + "old_state="
                + taskstate
                + "new_state="
                + workflowItem.getState()));
  }