/**
   * Handles the model processing required for the submissions page. - Workflow tasks owned by user
   * - Workflow tasks available in pool - Unfinished submissions - Archived submissions
   *
   * <p>TODO: Need to perform auth check
   */
  @RequestMapping("/submissions/**")
  protected String displaySubmissions(
      @RequestAttribute Context context, ModelMap model, HttpServletRequest request)
      throws Exception {
    List<WorkflowItem> ownedItems =
        WorkflowManager.getOwnedTasks(context, context.getCurrentUser());
    model.addAttribute("ownedItems", ownedItems);

    List<WorkflowItem> pooledItems =
        WorkflowManager.getPooledTasks(context, context.getCurrentUser());
    model.addAttribute("pooledItems", pooledItems);

    WorkspaceItem[] unfinishedItems =
        WorkspaceItem.findByEPerson(context, context.getCurrentUser());
    model.addAttribute("unfinishedItems", unfinishedItems);

    SupervisedItem[] supervisedItems =
        SupervisedItem.findbyEPerson(context, context.getCurrentUser());
    model.addAttribute("supervisedItems", supervisedItems);

    WorkflowItem[] inprogressItems = WorkflowItem.findByEPerson(context, context.getCurrentUser());
    model.addAttribute("inprogressItems", inprogressItems);

    ItemIterator submittedItemsIterator = Item.findBySubmitter(context, context.getCurrentUser());
    // Converting ItemIterator into something easier to digest
    List<Item> submittedItems = new LinkedList<Item>();
    try {
      while (submittedItemsIterator.hasNext()) {
        submittedItems.add(submittedItemsIterator.next());
      }
    } finally {
      if (submittedItemsIterator != null) {
        submittedItemsIterator.close();
      }
    }
    model.addAttribute("submittedItems", submittedItems);

    return "pages/submissions";
  }