@Override
  protected ModelAndView processFinish(
      HttpServletRequest request,
      HttpServletResponse response,
      Object command,
      BindException errors)
      throws Exception {
    log.debug("processFinish: Save the Rx content item.");
    String contentid = request.getParameter(IPSHtmlParameters.SYS_CONTENTID);
    log.debug("processFinish: content id is " + contentid);
    String folderid = request.getParameter(IPSHtmlParameters.SYS_FOLDERID);
    log.debug("processFinish: folder id is " + folderid);
    String actionParam = request.getParameter("action");
    log.debug("processFinish: action is " + actionParam);

    Boolean closeWindow = new Boolean(false);

    UserSessionData usd = getUserSessionData(request);
    MasterImageMetaData mimd = usd.getMimd();

    String user = RxRequestUtils.getUserName(request);
    log.debug("processFinish: user is " + user);
    String session = RxRequestUtils.getSessionId(request);
    log.debug("processFinish: session is " + session);

    // remove any empty images (this can happen if the user
    // presses "finish" part way through the process).
    Map<String, SizedImageMetaData> sized = mimd.getSizedImages();
    mimd.setSizedImages(cleanEmptySizedImages(sized));

    if (StringUtils.isNotBlank(contentid)) {
      imagePersistenceManager.UpdateImage(mimd, contentid, null, session, user);
      log.debug("processFinish: mimd persisted to existing Rx item: " + contentid);
    } else {
      if (StringUtils.isBlank(folderid)) folderid = null;

      contentid = imagePersistenceManager.CreateImage(mimd, folderid, false, session, user);
      log.debug("processFinish: the contentid of the new item is: " + contentid);
    }
    // everything is saved now...
    usd.setDirty(false);
    String redirectUrl = "imageeditor?sys_contentid=" + contentid + "&sys_folderid=" + folderid;
    ModelAndView mav = new ModelAndView("results");
    mav.addObject("image", command);
    if (actionParam.equalsIgnoreCase("close")) {
      log.debug("processFinish: closing window");
      redirectUrl = "";
      closeWindow = new Boolean(true);
    }
    mav.addObject("redirectUrl", redirectUrl);
    mav.addObject("closeWindow", closeWindow);
    mav.addObject("contentid", contentid);
    return mav;
  }