public UserVO createUser(UserVO vo) throws MSMApplicationException { UserVO newUser = null; NdgUser userPending = findNdgUserByName(vo.getUsername()); UserVO userByEmail = getUserByEmail(vo.getEmail()); if (userPending != null) { throw new UserAlreadyExistException(); } else if (userByEmail != null) { throw new EmailAlreadyExistException(); } else { userPending = new NdgUser(); try { userPending.setPassword(MD5.createMD5(vo.getPassword())); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } userPending.setUsername(vo.getUsername()); userPending.setFirstName(vo.getFirstName()); userPending.setLastName(vo.getLastName()); userPending.setEmail(vo.getEmail()); userPending.setPhoneNumber(vo.getPhoneNumber()); userPending.setAreaCode(vo.getAreaCode()); userPending.setCountryCode(vo.getCountryCode()); NdgRole role = findNdgRoleByName(vo.getRole().getName()); if (role != null) { userPending.setRole(role); } NdgUser userAdmin = findNdgUserByName(vo.getUserAdmin()); if (userPending != null) { userPending.setUserAdmin(userAdmin.getUsername()); userPending.setCompany(userAdmin.getCompany()); userPending.setEmailPreferences(userAdmin.getEmailPreferences()); userPending.setWhoUseIt(userAdmin.getWhoUseIt()); } userPending.setValidationKey(generateValidationKey(vo.getEmail())); userPending.setHasFullPermissions(vo.getHasFullPermissions()); userPending.setUserValidated('Y'); userPending.setHowDoYouPlanUseNdg(""); userPending.setFirstTimeUse('Y'); manager.persist(userPending); newUser = userPojoToVo(userPending); } return newUser; }