+ // Trace message
+ //* NOISY-DEBUG: */ System.out.println("UserWebBean:afterRegistration: EXIT!"); //NOI18N
+ }
+
+ @Override
+ public String deleteUserData (final User user) {
+ // Is the user instance valid and CONFIRMED?
+ if (null == user) {
+ // Throw NPE
+ throw new NullPointerException("user is null"); //NOI18N
+ } else if (user.getUserId() == null) {
+ // Throw again
+ throw new NullPointerException("user.userId is null"); //NOI18N
+ } else if (user.getUserId() < 1) {
+ // Invalid id number
+ throw new IllegalArgumentException(MessageFormat.format("user.userId={0} is not valid", user.getUserId())); //NOI18N
+ }
+
+ try {
+ // All fine, delete it
+ this.adminUserBean.deleteUser(user, this.getUserDeleteReason());
+ } catch (final UserNotFoundException ex) {
+ // Should not happen, so throw again
+ throw new FaceletException(ex);
+ }
+
+ // Fire event
+ this.deleteUserEvent.fire(new AdminDeletedUserEvent(user, this.getUserDeleteReason()));
+
+ // Redirect
+ return "admin_list_user"; //NOI18N
+ }
+
+ @Override
+ public String editUserData () {
+ // Get user instance
+ User user = this.beanHelper.getUser();
+
+ // Null password means not setting it
+ String encryptedPassword = null;
+
+ // Check if user instance is in helper and valid
+ if (null == user) {
+ // Throw NPE
+ throw new NullPointerException("beanHelper.user is null"); //NOI18N
+ } else if (user.getUserId() == null) {
+ // Throw NPE again
+ throw new NullPointerException("beanHelper.user.userId is null"); //NOI18N
+ } else if (user.getUserId() < 1) {
+ // Invalid id
+ throw new IllegalStateException(MessageFormat.format("beanHelper.user.userId={0} is invalid", user.getUserId())); //NOI18N
+ } else if (this.getUserName() == null) {
+ // Not all required fields are set
+ throw new NullPointerException("this.userName is null"); //NOI18N
+ } else if (this.getUserName().isEmpty()) {
+ // Not all required fields are set
+ throw new IllegalArgumentException("this.userName is empty"); //NOI18N
+ } else if (((!this.getUserPassword().isEmpty()) || (!this.getUserPasswordRepeat().isEmpty())) && (!this.isSamePasswordEntered())) {
+ // Clear password fields
+ this.setUserPassword(null);
+ this.setUserPasswordRepeat(null);
+
+ // Not same password entered
+ this.showFacesMessage("form_edit_user:userPassword", "ADMIN_USER_PASSWORD_REPEAT_DIFFERENT"); //NOI18N
+ return ""; //NOI18N
+ } else if ((!Objects.equals(user.getUserName(), this.getUserName())) && (this.userBean.ifUserNameExists(this.getUserName()))) {
+ // Clear all fields
+ this.clear();
+
+ // User name already exists
+ this.showFacesMessage("form_edit_user:userName", "ADMIN_USER_NAME_ALREADY_EXISTS"); //NOI18N
+ return ""; //NOI18N
+ } else if (this.isSamePasswordEntered()) {
+ // Same password entered, create container
+ if ((Objects.equals(user.getUserMustChangePassword(), this.getUserMustChangePassword())) && (UserUtils.ifPasswordMatches(new UserLoginContainer(user, this.getUserPassword())))) {
+ // Clear password fields
+ this.setUserPassword(null);
+ this.setUserPasswordRepeat(null);
+
+ // Same password entered
+ this.showFacesMessage("form_edit_user:userPassword", "ADMIN_USER_ENTERED_SAME_AS_OLD_PASSWORD"); //NOI18N
+ return ""; //NOI18N
+ }
+
+ // Encrypt password
+ encryptedPassword = UserUtils.encryptPassword(this.getUserPassword());
+ }
+
+ // Set user name and flag
+ user.setUserName(this.getUserName());
+ user.setUserMustChangePassword(this.getUserMustChangePassword());
+
+ // Is a password set?
+ if (encryptedPassword != null) {
+ // Set it as well
+ user.setUserEncryptedPassword(encryptedPassword);
+ }
+
+ // Call EJB for updating user data
+ User updatedUser = this.userBean.updateUserData(user);
+
+ // Fire event
+ this.updatedUserDataEvent.fire(new AdminUpdatedUserDataEvent(updatedUser));
+
+ // Return to user list (for now)
+ return "admin_list_user"; //NOI18N
+ }
+
+ @Override
+ public String getUserDeleteReason () {
+ return this.userDeleteReason;
+ }
+
+ @Override
+ public void setUserDeleteReason (final String userDeleteReason) {
+ this.userDeleteReason = userDeleteReason;
+ }
+
+ @Override
+ public String getUserLockReason () {
+ return this.userLockReason;
+ }
+
+ @Override
+ public void setUserLockReason (final String userLockReason) {
+ this.userLockReason = userLockReason;
+ }
+
+ @Override
+ public Boolean getUserMustChangePassword () {
+ return this.userMustChangePassword;