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"); } } }