public void doOkay() {
      UserAccount userAccount = null;
      final UserAccountPreferencesPanel panel = dialog.getPanel();
      String userName = panel.getLoginTextField().getText();
      String pwd1 = new String(panel.getPasswordField1().getPassword());
      String pwd2 = new String(panel.getPasswordField2().getPassword());

      exit:
      {
        if (pwd1.equals(pwd2)) {
          UserAccountDAO userAccountDAO = miscDAOFactory.newUserAccountDAO();

          userAccountDAO.startTransaction();

          try {
            userAccount = userAccountDAO.findByUserName(userName);
          } catch (Exception ex) {
            getMessageLabel().setText("An error occured while connecting to the database");
            log.warn("An error occured while looking up " + userName, ex);

            return;
          }

          if (userAccount != null) {
            getMessageLabel()
                .setText("The login, ' " + userName + "', already exists in the database");

            break exit;
          } else {
            userAccount = miscFactory.newUserAccount();
            userAccount.setUserName(userName);
            userAccount.setPassword(pwd1);
            // TODO Check if this is causing reset ROLE issue
            userAccount.setRole(UserAccountRoles.READONLY.toString());
            userAccount.setEmail(panel.getEmailTextField().getText());
            userAccount.setAffiliation(panel.getAffiliationTextField().getText());
            userAccount.setFirstName(panel.getFirstNameTextField().getText());
            userAccount.setLastName(panel.getLastNameTextField().getText());

            try {
              userAccountDAO.persist(userAccount);
              setVisible(false);
              dialog.getPanel().reset();
            } catch (Exception ex) {
              getMessageLabel()
                  .setText(
                      "A database error occurred. Unable to insert a new user into the database");
              log.warn("An error occured while inserting " + userName + " into the database", ex);

              break exit;
            }
          }

          userAccountDAO.endTransaction();
          userAccountDAO.close();
          setReturnValue(userAccount);
        } else {
          getMessageLabel().setText("The passwords do not match");
        }
      }
    }
 public void doCancel() {
   dialog.setReturnValue(null);
   dialog.setVisible(false);
   dialog.getPanel().reset(); // removes text from the textfields
   dialog.dispose();
 }