From 401f4e980968567f4052626b1c83e3ef53baee4e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Fri, 10 Apr 2020 21:38:06 +0200 Subject: [PATCH] Please cherry-pick: - WIP: rewrote admin-list-users view into ViewScoped - added missing "global search" to it - added initial p:dialog box to it - also output userLastLock[Reason] and userMustChangePassword - added/removed/renamed some i18n strings - rewrote cache initialization to avoid a local List copy MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Roland Häder --- .../list/JobsBasicDataListWebViewBean.java | 5 +- .../list/JobsBranchOfficeListWebViewBean.java | 5 +- .../list/JobsDepartmentListWebViewBean.java | 5 +- .../employee/JobsEmployeeWebRequestBean.java | 5 +- .../list/JobsHeadquarterListWebViewBean.java | 5 +- .../JobsOpeningTimeWebRequestBean.java | 5 +- .../JobsAdminContactWebRequestBean.java | 2 +- .../contact/JobsContactWebRequestBean.java | 6 +- .../list/JobsContactListWebViewBean.java | 13 +- .../JobsContactListWebViewController.java | 2 +- .../JobsAdminContactPhoneWebRequestBean.java | 4 +- .../phone/JobsContactPhoneWebRequestBean.java | 10 +- .../list/JobsUserListWebViewController.java | 94 +++ .../phone/list/JobsUserListWebViewtBean.java | 588 +++++++++++++++++ .../list/JobsCountryListWebViewBean.java | 5 +- .../beans/helper/JobsWebViewHelperBean.java | 4 +- .../JobsLocalizationSessionBean.java | 10 +- .../JobsLocalizationSessionController.java | 8 + .../JobsMobileProviderWebRequestBean.java | 5 +- .../beans/phone/JobsPhoneWebRequestBean.java | 31 +- .../JobsUserProfileWebRequestBean.java | 6 +- .../user/JobsAdminUserWebRequestBean.java | 10 +- .../beans/user/JobsUserWebRequestBean.java | 590 +----------------- .../user/JobsUserWebRequestController.java | 75 --- .../JobsUserActivityWebRequestBean.java | 27 +- .../JobsConfirmationLinkWebRequestBean.java | 12 +- .../JobsUserRegisterWebRequestBean.java | 10 +- .../JobsResendLinkWebRequestBean.java | 52 +- .../converter/user/JobsUserConverter.java | 8 +- .../validator/user/JobsUserIdValidator.java | 8 +- .../localization/generic_de_DE.properties | 12 +- .../localization/generic_en_US.properties | 11 +- .../basic_data/admin_form_basic_data.tpl | 2 +- .../admin_form_branch_office_data.tpl | 2 +- .../department/admin_form_department_data.tpl | 2 +- .../employee/admin_form_employee_data.tpl | 2 +- .../headquarter/admin_form_headquarter.tpl | 2 +- .../admin/user/admin_show_user_data.tpl | 8 +- .../admin/user/admin_show_user_data_mini.tpl | 4 +- .../basic_data/admin_basic_data_list.xhtml | 2 +- .../admin_branch_office_list.xhtml | 2 +- .../department/admin_department_list.xhtml | 2 +- web/admin/employee/admin_employee_list.xhtml | 2 +- .../headquarter/admin_headquarter_list.xhtml | 2 +- web/admin/user/admin_user_activity_log.xhtml | 4 +- web/admin/user/admin_user_export.xhtml | 2 +- web/admin/user/admin_user_list.xhtml | 132 +++- web/admin/user/admin_user_unlock.xhtml | 4 +- web/guest/user/user_list.xhtml | 2 +- 49 files changed, 942 insertions(+), 867 deletions(-) create mode 100644 src/java/org/mxchange/jjobs/beans/contact/phone/list/JobsUserListWebViewController.java create mode 100644 src/java/org/mxchange/jjobs/beans/contact/phone/list/JobsUserListWebViewtBean.java diff --git a/src/java/org/mxchange/jjobs/beans/business/basicdata/list/JobsBasicDataListWebViewBean.java b/src/java/org/mxchange/jjobs/beans/business/basicdata/list/JobsBasicDataListWebViewBean.java index 026cf1f5..8a46d65b 100644 --- a/src/java/org/mxchange/jjobs/beans/business/basicdata/list/JobsBasicDataListWebViewBean.java +++ b/src/java/org/mxchange/jjobs/beans/business/basicdata/list/JobsBasicDataListWebViewBean.java @@ -197,11 +197,8 @@ public class JobsBasicDataListWebViewBean extends BaseJobsBean implements JobsBa public void initializeList () { // Is cache there? if (!this.basicDataCache.iterator().hasNext()) { - // Get whole list from EJB - final List basicDatas = this.basicDataBean.allBusinessBasicData(); - // Add all - for (final BasicData basicData : basicDatas) { + for (final BasicData basicData : this.basicDataBean.allBusinessBasicData()) { // Add it to cache this.basicDataCache.put(basicData.getBasicDataId(), basicData); } diff --git a/src/java/org/mxchange/jjobs/beans/business/branchoffice/list/JobsBranchOfficeListWebViewBean.java b/src/java/org/mxchange/jjobs/beans/business/branchoffice/list/JobsBranchOfficeListWebViewBean.java index fdd1a08b..aea07075 100644 --- a/src/java/org/mxchange/jjobs/beans/business/branchoffice/list/JobsBranchOfficeListWebViewBean.java +++ b/src/java/org/mxchange/jjobs/beans/business/branchoffice/list/JobsBranchOfficeListWebViewBean.java @@ -190,11 +190,8 @@ public class JobsBranchOfficeListWebViewBean extends BaseJobsBean implements Job public void initializeList () { // Is cache there? if (!this.branchOfficeCache.iterator().hasNext()) { - // Get whole list from EJB - final List branchOffices = this.branchOfficeBean.allBranchOffices(); - // Add all - for (final BranchOffice branchOffice : branchOffices) { + for (final BranchOffice branchOffice : this.branchOfficeBean.allBranchOffices()) { // Add it to cache this.branchOfficeCache.put(branchOffice.getBranchId(), branchOffice); } diff --git a/src/java/org/mxchange/jjobs/beans/business/department/list/JobsDepartmentListWebViewBean.java b/src/java/org/mxchange/jjobs/beans/business/department/list/JobsDepartmentListWebViewBean.java index dec8346a..4e309da2 100644 --- a/src/java/org/mxchange/jjobs/beans/business/department/list/JobsDepartmentListWebViewBean.java +++ b/src/java/org/mxchange/jjobs/beans/business/department/list/JobsDepartmentListWebViewBean.java @@ -194,11 +194,8 @@ public class JobsDepartmentListWebViewBean extends BaseJobsBean implements JobsD public void initializeList () { // Is cache there? if (!this.departmentCache.iterator().hasNext()) { - // Get whole list from EJB - final List departments = this.departmentBean.allDepartments(); - // Add all - for (final Department department : departments) { + for (final Department department : this.departmentBean.allDepartments()) { // Add it to cache this.departmentCache.put(department.getDepartmentId(), department); } diff --git a/src/java/org/mxchange/jjobs/beans/business/employee/JobsEmployeeWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/business/employee/JobsEmployeeWebRequestBean.java index 275fb527..e6cddb5b 100644 --- a/src/java/org/mxchange/jjobs/beans/business/employee/JobsEmployeeWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/business/employee/JobsEmployeeWebRequestBean.java @@ -163,11 +163,8 @@ public class JobsEmployeeWebRequestBean extends BaseJobsBean implements JobsEmpl public void init () { // Is cache there? if (!this.employeeCache.iterator().hasNext()) { - // Get whole list from EJB - final List employees = this.employeeBean.allEmployees(); - // Add all - for (final Employable employee : employees) { + for (final Employable employee : this.employeeBean.allEmployees()) { // Add it to cache this.employeeCache.put(employee.getEmployeeId(), employee); } diff --git a/src/java/org/mxchange/jjobs/beans/business/headquarter/list/JobsHeadquarterListWebViewBean.java b/src/java/org/mxchange/jjobs/beans/business/headquarter/list/JobsHeadquarterListWebViewBean.java index 8d79b441..0c106562 100644 --- a/src/java/org/mxchange/jjobs/beans/business/headquarter/list/JobsHeadquarterListWebViewBean.java +++ b/src/java/org/mxchange/jjobs/beans/business/headquarter/list/JobsHeadquarterListWebViewBean.java @@ -191,11 +191,8 @@ public class JobsHeadquarterListWebViewBean extends BaseJobsBean implements Jobs public void initializeList () { // Is cache there? if (!this.headquarterCache.iterator().hasNext()) { - // Get whole list from EJB - final List Headquarter = this.headquarterBean.allHeadquarters(); - // Add all - for (final Headquarter headquarter : Headquarter) { + for (final Headquarter headquarter : this.headquarterBean.allHeadquarters()) { // Add it to cache this.headquarterCache.put(headquarter.getHeadquarterId(), headquarter); } diff --git a/src/java/org/mxchange/jjobs/beans/business/opening_time/JobsOpeningTimeWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/business/opening_time/JobsOpeningTimeWebRequestBean.java index cfd1a053..94a490e1 100644 --- a/src/java/org/mxchange/jjobs/beans/business/opening_time/JobsOpeningTimeWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/business/opening_time/JobsOpeningTimeWebRequestBean.java @@ -162,11 +162,8 @@ public class JobsOpeningTimeWebRequestBean extends BaseJobsBean implements JobsO public void initializeList () { // Is cache there? if (!this.openingTimesCache.iterator().hasNext()) { - // Get whole list from EJB - final List openingTimes = this.openingTimesBean.allOpeningTimes(); - // Add all - for (final OpeningTime openingTime : openingTimes) { + for (final OpeningTime openingTime : this.openingTimesBean.allOpeningTimes()) { // Add it to cache this.openingTimesCache.put(openingTime.getOpeningId(), openingTime); } diff --git a/src/java/org/mxchange/jjobs/beans/contact/JobsAdminContactWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/contact/JobsAdminContactWebRequestBean.java index 67efcd33..85fab507 100644 --- a/src/java/org/mxchange/jjobs/beans/contact/JobsAdminContactWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/contact/JobsAdminContactWebRequestBean.java @@ -277,7 +277,7 @@ public class JobsAdminContactWebRequestBean extends BaseJobsBean implements Jobs final Contact contact = this.createContactInstance(); // Default is not same contact - if (this.contactListController.isSameContactFound(contact)) { + if (this.contactListController.isContactFound(contact)) { // Already registered throw new FaceletException(new ContactAlreadyAddedException(contact)); } diff --git a/src/java/org/mxchange/jjobs/beans/contact/JobsContactWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/contact/JobsContactWebRequestBean.java index 1407ed67..8617ab39 100644 --- a/src/java/org/mxchange/jjobs/beans/contact/JobsContactWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/contact/JobsContactWebRequestBean.java @@ -217,7 +217,7 @@ public class JobsContactWebRequestBean extends BaseJobsBean implements JobsConta * @param event Event being fired */ public void afterAdminAddedUserEvent (@Observes final ObservableAdminAddedUserEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -243,7 +243,7 @@ public class JobsContactWebRequestBean extends BaseJobsBean implements JobsConta * @param event Event being fired */ public void afterAdminLinkedUserEvent (@Observes final ObservableAdminLinkedUserEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -271,7 +271,7 @@ public class JobsContactWebRequestBean extends BaseJobsBean implements JobsConta * @param event Event instance */ public void afterUserLoginEvent (@Observes final ObservableUserLoggedInEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N diff --git a/src/java/org/mxchange/jjobs/beans/contact/list/JobsContactListWebViewBean.java b/src/java/org/mxchange/jjobs/beans/contact/list/JobsContactListWebViewBean.java index c1d06c93..b46f0eab 100644 --- a/src/java/org/mxchange/jjobs/beans/contact/list/JobsContactListWebViewBean.java +++ b/src/java/org/mxchange/jjobs/beans/contact/list/JobsContactListWebViewBean.java @@ -126,7 +126,7 @@ public class JobsContactListWebViewBean extends BaseJobsBean implements JobsCont * @param event Updated contact data event */ public void afterAdminUpdatedContactDataEvent (@Observes final ObservableAdminUpdatedContactEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -151,7 +151,7 @@ public class JobsContactListWebViewBean extends BaseJobsBean implements JobsCont * @param event Event being fired */ public void afterUserConfirmedAccount (@Observes final ObservableUserConfirmedAccountEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -176,7 +176,7 @@ public class JobsContactListWebViewBean extends BaseJobsBean implements JobsCont * @param event User registration event */ public void afterUserRegistrationEvent (@Observes final ObservableUserRegisteredEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -323,11 +323,8 @@ public class JobsContactListWebViewBean extends BaseJobsBean implements JobsCont public void initializeList () { // Is cache there? if (!this.contactCache.iterator().hasNext()) { - // Get whole list from EJB - final List contacts = this.contactBean.allContacts(); - // Add all - for (final Contact contact : contacts) { + for (final Contact contact : this.contactBean.allContacts()) { // Add it to cache this.contactCache.put(contact.getContactId(), contact); } @@ -355,7 +352,7 @@ public class JobsContactListWebViewBean extends BaseJobsBean implements JobsCont } @Override - public boolean isSameContactFound (final Contact contact) { + public boolean isContactFound (final Contact contact) { // Default is not found boolean IsFound = false; diff --git a/src/java/org/mxchange/jjobs/beans/contact/list/JobsContactListWebViewController.java b/src/java/org/mxchange/jjobs/beans/contact/list/JobsContactListWebViewController.java index 3b9925dc..881d3105 100644 --- a/src/java/org/mxchange/jjobs/beans/contact/list/JobsContactListWebViewController.java +++ b/src/java/org/mxchange/jjobs/beans/contact/list/JobsContactListWebViewController.java @@ -46,7 +46,7 @@ public interface JobsContactListWebViewController extends Serializable { * * @return Whether contact has been found */ - boolean isSameContactFound (final Contact contact); + boolean isContactFound (final Contact contact); /** * Getter for all contacts diff --git a/src/java/org/mxchange/jjobs/beans/contact/phone/JobsAdminContactPhoneWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/contact/phone/JobsAdminContactPhoneWebRequestBean.java index 33f9048e..f411c9e2 100644 --- a/src/java/org/mxchange/jjobs/beans/contact/phone/JobsAdminContactPhoneWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/contact/phone/JobsAdminContactPhoneWebRequestBean.java @@ -236,7 +236,7 @@ public class JobsAdminContactPhoneWebRequestBean extends BaseJobsBean implements * @param event Event being fired */ public void afterAdminAddedUserEvent (@Observes final ObservableAdminAddedUserEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -261,7 +261,7 @@ public class JobsAdminContactPhoneWebRequestBean extends BaseJobsBean implements * @param event Updated contact data event */ public void afterAdminUpdatedContactDataEvent (@Observes final ObservableAdminUpdatedContactEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N diff --git a/src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebRequestBean.java index e7b76a52..b2f8a75b 100644 --- a/src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebRequestBean.java @@ -127,7 +127,7 @@ public class JobsContactPhoneWebRequestBean extends BaseJobsBean implements Jobs * @param event Event being fired */ public void afterAdminAddedUserEvent (@Observes final ObservableAdminAddedUserEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -152,7 +152,7 @@ public class JobsContactPhoneWebRequestBean extends BaseJobsBean implements Jobs * @param event Unlinked fax contact event */ public void afterAdminUnlinkedFaxContactDataEvent (@Observes final ObservableAdminUnlinkedFaxNumberEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -180,7 +180,7 @@ public class JobsContactPhoneWebRequestBean extends BaseJobsBean implements Jobs * @param event Unlinked land-line contact event */ public void afterAdminUnlinkedLandLineContactDataEvent (@Observes final ObservableAdminUnlinkedLandLineNumberEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -208,7 +208,7 @@ public class JobsContactPhoneWebRequestBean extends BaseJobsBean implements Jobs * @param event Unlinked mobile contact event */ public void afterAdminUnlinkedMobileContactDataEvent (@Observes final ObservableAdminUnlinkedMobileNumberEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -236,7 +236,7 @@ public class JobsContactPhoneWebRequestBean extends BaseJobsBean implements Jobs * @param event Updated contact data event */ public void afterAdminUpdatedContactDataEvent (@Observes final ObservableAdminUpdatedContactEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N diff --git a/src/java/org/mxchange/jjobs/beans/contact/phone/list/JobsUserListWebViewController.java b/src/java/org/mxchange/jjobs/beans/contact/phone/list/JobsUserListWebViewController.java new file mode 100644 index 00000000..82ef7df7 --- /dev/null +++ b/src/java/org/mxchange/jjobs/beans/contact/phone/list/JobsUserListWebViewController.java @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2016 - 2020 Free Software Foundation + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package org.mxchange.jfinancials.beans.user.list; + +import java.io.Serializable; +import java.util.List; +import org.mxchange.jusercore.exceptions.UserEmailAddressNotFoundException; +import org.mxchange.jusercore.exceptions.UserNotFoundException; +import org.mxchange.jusercore.model.user.User; + +/** + * An interface for user beans + *

+ * @author Roland Häder + */ +public interface JobsUserListWebViewController extends Serializable { + + /** + * Returns a user instance by given primary key. If not found, a proper + * exception is thrown. + *

+ * @param userId User id + *

+ * @return User instance + *

+ * @throws UserNotFoundException If the user is not found + */ + User findUserById (final Long userId) throws UserNotFoundException; + + /** + * All users + *

+ * @return A list of all public user profiles + */ + List getAllUsers (); + + /** + * Checks if given user id exists + *

+ * @param userId User id to check + *

+ * @return Whether the user id exists + */ + boolean ifUserIdExists (final Long userId); + + /** + * Checks whether given user instance name is used + *

+ * @param user User instance name to check + *

+ * @return Whether it is already used + */ + boolean isUserNameRegistered (final User user); + + /** + * Tries to lookup user by given id number. If the user is not found or the + * account status is not CONFIRMED proper exceptions are thrown. + *

+ * @param userId User id + *

+ * @return User instance + *

+ * @throws UserNotFoundException If the user is not found + */ + User lookupUserById (final Long userId) throws UserNotFoundException; + + /** + * Tries to lookup user by given email address. If the user is not found a + * proper exceptions is thrown. + *

+ * @param emailAddress Email address + *

+ * @return User instance + *

+ * @throws UserEmailAddressNotFoundException If the user's email address is + * not found + */ + User lookupUserByEmailAddress (final String emailAddress) throws UserEmailAddressNotFoundException; + +} diff --git a/src/java/org/mxchange/jjobs/beans/contact/phone/list/JobsUserListWebViewtBean.java b/src/java/org/mxchange/jjobs/beans/contact/phone/list/JobsUserListWebViewtBean.java new file mode 100644 index 00000000..4a44547f --- /dev/null +++ b/src/java/org/mxchange/jjobs/beans/contact/phone/list/JobsUserListWebViewtBean.java @@ -0,0 +1,588 @@ +/* + * Copyright (C) 2016 - 2020 Free Software Foundation + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package org.mxchange.jfinancials.beans.user.list; + +import fish.payara.cdi.jsr107.impl.NamedCache; +import java.text.MessageFormat; +import java.util.Comparator; +import java.util.LinkedList; +import java.util.List; +import java.util.Objects; +import javax.annotation.PostConstruct; +import javax.cache.Cache; +import javax.ejb.EJB; +import javax.enterprise.event.Observes; +import javax.faces.view.ViewScoped; +import javax.inject.Inject; +import javax.inject.Named; +import org.mxchange.jfinancials.beans.BaseJobsBean; +import org.mxchange.jusercore.events.user.add.ObservableAdminAddedUserEvent; +import org.mxchange.jusercore.events.user.delete.ObservableAdminDeletedUserEvent; +import org.mxchange.jusercore.events.user.linked.ObservableAdminLinkedUserEvent; +import org.mxchange.jusercore.events.user.locked.ObservableAdminLockedUserEvent; +import org.mxchange.jusercore.events.user.unlocked.ObservableAdminUnlockedUserEvent; +import org.mxchange.jusercore.events.user.update.ObservableAdminUpdatedUserDataEvent; +import org.mxchange.jusercore.events.user.update.ObservableUpdatedUserPersonalDataEvent; +import org.mxchange.jusercore.exceptions.UserEmailAddressNotFoundException; +import org.mxchange.jusercore.exceptions.UserNotFoundException; +import org.mxchange.jusercore.model.user.User; +import org.mxchange.jusercore.model.user.UserSessionBeanRemote; +import org.mxchange.juserlogincore.events.confirmation.ObservableUserConfirmedAccountEvent; +import org.mxchange.juserlogincore.events.registration.ObservableUserRegisteredEvent; +import org.mxchange.juserlogincore.events.user.password_change.ObservableUpdatedUserPasswordEvent; + +/** + * A user list bean (controller) + *

+ * @author Roland Häder + */ +@Named ("userListController") +@ViewScoped +public class JobsUserListWebViewtBean extends BaseJobsBean implements JobsUserListWebViewController { + + /** + * Serial number + */ + private static final long serialVersionUID = 542_145_347_918L; + + /** + * List of all users + */ + private final List allUsers; + + /** + * List of filtered users + */ + private List filteredUsers; + + /** + * Selected user instance + */ + private User selectedUser; + + /** + * Remote user bean + */ + @EJB (lookup = "java:global/jfinancials-ejb/user!org.mxchange.jusercore.model.user.UserSessionBeanRemote") + private UserSessionBeanRemote userBean; + + /** + * A list of all user profiles + */ + @Inject + @NamedCache (cacheName = "userCache") + private transient Cache userCache; + + /** + * Default constructor + */ + public JobsUserListWebViewtBean () { + // Call super constructor + super(); + + // Init list + this.allUsers = new LinkedList<>(); + } + + /** + * Event observer for newly added users by administrator + *

+ * @param event Event being fired + */ + public void afterAdminAddedUserEvent (@Observes final ObservableAdminAddedUserEvent event) { + // Event and contained entity instance should not be null + if (null == event) { + // Throw NPE + throw new NullPointerException("event is null"); //NOI18N + } else if (event.getAddedUser() == null) { + // Throw NPE again + throw new NullPointerException("event.addedUser is null"); //NOI18N + } else if (event.getAddedUser().getUserId() == null) { + // userId is null + throw new NullPointerException("event.addedUser.userId is null"); //NOI18N + } else if (event.getAddedUser().getUserId() < 1) { + // Not avalid id + throw new IllegalArgumentException(MessageFormat.format("userId of user={0} is not valid: {1}", event.getAddedUser(), event.getAddedUser().getUserId())); //NOI18N + } + + // Update user list + this.updateList(event.getAddedUser()); + } + + /** + * Event observer for deleted user accounts (by administrator) + *

+ * @param event Event being fired + */ + public void afterAdminDeletedUserEvent (@Observes final ObservableAdminDeletedUserEvent event) { + // Event and contained entity instance should not be null + if (null == event) { + // Throw NPE + throw new NullPointerException("event is null"); //NOI18N + } else if (event.getDeletedUser() == null) { + // Throw NPE again + throw new NullPointerException("event.deletedUser is null"); //NOI18N + } else if (event.getDeletedUser().getUserId() == null) { + // userId is null + throw new NullPointerException("event.deletedUser.userId is null"); //NOI18N + } else if (event.getDeletedUser().getUserId() < 1) { + // Not avalid id + throw new IllegalArgumentException(MessageFormat.format("userId of user={0} is not valid: {1}", event.getDeletedUser(), event.getDeletedUser().getUserId())); //NOI18N + } + + // Update user list + this.removeFromList(event.getDeletedUser()); + } + + /** + * Event observer for linked users with existing contact data + *

+ * @param event Event being fired + */ + public void afterAdminLinkedUserEvent (@Observes final ObservableAdminLinkedUserEvent event) { + // Event and contained entity instance should not be null + if (null == event) { + // Throw NPE + throw new NullPointerException("event is null"); //NOI18N + } else if (event.getLinkedUser() == null) { + // Throw NPE again + throw new NullPointerException("event.linkedUser is null"); //NOI18N + } else if (event.getLinkedUser().getUserId() == null) { + // userId is null + throw new NullPointerException("event.linkedUser.userId is null"); //NOI18N + } else if (event.getLinkedUser().getUserId() < 1) { + // Not avalid id + throw new IllegalArgumentException(MessageFormat.format("userId of user={0} is not valid: {1}", event.getLinkedUser(), event.getLinkedUser().getUserId())); //NOI18N + } + + // Update user list + this.updateList(event.getLinkedUser()); + } + + /** + * Event observer for locked users + *

+ * @param event Event being fired + */ + public void afterAdminLockedUserEvent (@Observes final ObservableAdminLockedUserEvent event) { + // Event and contained entity instance should not be null + if (null == event) { + // Throw NPE + throw new NullPointerException("event is null"); //NOI18N + } else if (event.getLockedUser() == null) { + // Throw NPE again + throw new NullPointerException("event.lockedUser is null"); //NOI18N + } else if (event.getLockedUser().getUserId() == null) { + // userId is null + throw new NullPointerException("event.lockedUser.userId is null"); //NOI18N + } else if (event.getLockedUser().getUserId() < 1) { + // Not avalid id + throw new IllegalArgumentException(MessageFormat.format("userId of user={0} is not valid: {1}", event.getLockedUser(), event.getLockedUser().getUserId())); //NOI18N + } + + // Update user list + this.updateList(event.getLockedUser()); + } + + /** + * Event observer for unlocked users + *

+ * @param event Event being fired + */ + public void afterAdminUnlockedUserEvent (@Observes final ObservableAdminUnlockedUserEvent event) { + // Event and contained entity instance should not be null + if (null == event) { + // Throw NPE + throw new NullPointerException("event is null"); //NOI18N + } else if (event.getUnlockedUser() == null) { + // Throw NPE again + throw new NullPointerException("event.unlockedUser is null"); //NOI18N + } else if (event.getUnlockedUser().getUserId() == null) { + // userId is null + throw new NullPointerException("event.unlockedUser.userId is null"); //NOI18N + } else if (event.getUnlockedUser().getUserId() < 1) { + // Not avalid id + throw new IllegalArgumentException(MessageFormat.format("userId of user={0} is not valid: {1}", event.getUnlockedUser(), event.getUnlockedUser().getUserId())); //NOI18N + } + + // Update user list + this.updateList(event.getUnlockedUser()); + } + + /** + * Event observer for updated user data by administrator + *

+ * @param event Event being updated + */ + public void afterAdminUpdatedUserDataEvent (@Observes final ObservableAdminUpdatedUserDataEvent event) { + // Event and contained entity instance should not be null + if (null == event) { + // Throw NPE + throw new NullPointerException("event is null"); //NOI18N + } else if (event.getUpdatedUser() == null) { + // Throw NPE again + throw new NullPointerException("event.updatedUser is null"); //NOI18N + } else if (event.getUpdatedUser().getUserId() == null) { + // userId is null + throw new NullPointerException("event.updatedUser.userId is null"); //NOI18N + } else if (event.getUpdatedUser().getUserId() < 1) { + // Not avalid id + throw new IllegalArgumentException(MessageFormat.format("userId of user={0} is not valid: {1}", event.getUpdatedUser(), event.getUpdatedUser().getUserId())); //NOI18N + } + + // Update user list + this.updateList(event.getUpdatedUser()); + } + + /** + * Event observer when user confirmed account. + *

+ * @param event Event being fired + */ + public void afterUserConfirmedAccountEvent (@Observes final ObservableUserConfirmedAccountEvent event) { + // Event and contained entity instance should not be null + if (null == event) { + // Throw NPE + throw new NullPointerException("event is null"); //NOI18N + } else if (event.getConfirmedUser() == null) { + // Throw NPE again + throw new NullPointerException("event.confirmedUser is null"); //NOI18N + } else if (event.getConfirmedUser().getUserId() == null) { + // userId is null + throw new NullPointerException("event.confirmedUser.userId is null"); //NOI18N + } else if (event.getConfirmedUser().getUserId() < 1) { + // Not avalid id + throw new IllegalArgumentException(MessageFormat.format("userId of user={0} is not valid: {1}", event.getConfirmedUser(), event.getConfirmedUser().getUserId())); //NOI18N + } + + // Update user list + this.updateList(event.getConfirmedUser()); + } + + /** + * Event observer for new user registrations + *

+ * @param event User registration event + */ + public void afterUserRegistrationEvent (@Observes final ObservableUserRegisteredEvent event) { + // Event and contained entity instance should not be null + if (null == event) { + // Throw NPE + throw new NullPointerException("event is null"); //NOI18N + } else if (event.getRegisteredUser() == null) { + // Throw NPE again + throw new NullPointerException("event.registeredUser is null"); //NOI18N + } else if (event.getRegisteredUser().getUserId() == null) { + // userId is null + throw new NullPointerException("event.registeredUser.userId is null"); //NOI18N + } else if (event.getRegisteredUser().getUserId() < 1) { + // Not avalid id + throw new IllegalArgumentException(MessageFormat.format("userId of user={0} is not valid: {1}", event.getRegisteredUser(), event.getRegisteredUser().getUserId())); //NOI18N + } + + // Update user list + this.updateList(event.getRegisteredUser()); + } + + /** + * Method being call after user's password has been updated (and history + * entry has been created). + *

+ * @param event Event being observed + */ + public void afterUserUpdatedPasswordEvent (@Observes final ObservableUpdatedUserPasswordEvent event) { + // Check parameter + if (null == event) { + // Throw NPE + throw new NullPointerException("event is null"); //NOI18N + } else if (event.getPasswordHistory() == null) { + // Throw NPE again + throw new NullPointerException("event.passwordHistory is null"); //NOI18N + } else if (event.getPasswordHistory().getUserPasswordHistoryId() == null) { + // ... and again + throw new NullPointerException("event.passwordHistory.userPasswordHistoryId is null"); //NOI18N + } else if (event.getPasswordHistory().getUserPasswordHistoryId() < 1) { + // Invalid value + throw new IllegalArgumentException(MessageFormat.format("event.passwordHistory.userPasswordHistoryId={0} is in valid", event.getPasswordHistory().getUserPasswordHistoryId())); //NOI18N + } + + // Update user list + this.updateList(event.getPasswordHistory().getUserPasswordHistoryUser()); + } + + /** + * Listens to fired event when user updated personal data + *

+ * @param event Event being fired + */ + public void afterUserUpdatedPersonalDataEvent (@Observes final ObservableUpdatedUserPersonalDataEvent event) { + // Check parameter + if (null == event) { + // Throw NPE + throw new NullPointerException("event is null"); //NOI18N + } else if (event.getUpdatedUser() == null) { + // Throw NPE again + throw new NullPointerException("event.updatedUser is null"); //NOI18N + } else if (event.getUpdatedUser().getUserId() == null) { + // ... and again + throw new NullPointerException("event.updatedUser.userId is null"); //NOI18N + } else if (event.getUpdatedUser().getUserId() < 1) { + // Invalid value + throw new IllegalArgumentException(MessageFormat.format("event.updatedUser.userId={0} is in valid", event.getUpdatedUser().getUserId())); //NOI18N + } + + // Update user list + this.updateList(event.getUpdatedUser()); + } + + @Override + public User findUserById (final Long userId) throws UserNotFoundException { + // Validate parameter + if (null == userId) { + // Throw NPE + throw new NullPointerException("userId is null"); //NOI18N + } else if (userId < 1) { + // Throw IAE + throw new IllegalArgumentException("userId=" + userId + " is invalid."); //NOI18N + } else if (!this.userCache.containsKey(userId)) { + // Not found + throw new UserNotFoundException(userId); + } + + // Get it from cache + final User user = this.userCache.get(userId); + + // Return it + return user; + } + + @Override + @SuppressWarnings ("ReturnOfCollectionOrArrayField") + public List getAllUsers () { + return this.allUsers; + } + + /** + * Getter for filtered users list + *

+ * @return Filtered users list + */ + @SuppressWarnings ("ReturnOfCollectionOrArrayField") + public List getFilteredUsers () { + return this.filteredUsers; + } + + /** + * Setter for filtered users list + *

+ * @param filteredUsers Filtered users list + */ + @SuppressWarnings ("AssignmentToCollectionOrArrayFieldFromParameter") + public void setFilteredUsers (final List filteredUsers) { + this.filteredUsers = filteredUsers; + } + + /** + * Getter for selected user instance + *

+ * @return Selected user instance + */ + public User getSelectedUser () { + return this.selectedUser; + } + + /** + * Setter for selected user instance + *

+ * @param selectedUser Selected user instance + */ + public void setSelectedUser (final User selectedUser) { + this.selectedUser = selectedUser; + } + + @Override + public boolean ifUserIdExists (final Long userId) { + // Validate parameter + if (null == userId) { + // Throw NPE + throw new NullPointerException("userId is null"); //NOI18N + } else if (userId < 1) { + // Throw IAE + throw new IllegalArgumentException("userId=" + userId + " is invalid."); //NOI18N + } + + // Check if key is there + boolean isFound = this.userCache.containsKey(userId); + + // Return flag + return isFound; + } + + /** + * Post-initialization of this class + */ + @PostConstruct + public void initializeList () { + // Is cache there? + if (!this.userCache.iterator().hasNext()) { + // Add all + for (final User user : this.userBean.allUsers()) { + // Add it to cache + this.userCache.put(user.getUserId(), user); + } + } + + // Is cache filled and list is empty + if ((this.userCache.iterator().hasNext()) && (this.getAllUsers().isEmpty())) { + // Build up list + for (final Cache.Entry currentEntry : this.userCache) { + // Add to list + this.getAllUsers().add(currentEntry.getValue()); + } + + // Sort list + this.getAllUsers().sort(new Comparator() { + @Override + public int compare (final User user1, final User user2) { + return user1.getUserId() > user2.getUserId() ? 1 : user1.getUserId() < user2.getUserId() ? -1 : 0; + } + }); + + // Set full list + this.setFilteredUsers(this.getAllUsers()); + } + } + + @Override + public boolean isUserNameRegistered (final User user) { + // Default is not found + boolean isFound = false; + + // Determine it + for (final User currentUser : this.getAllUsers()) { + // Is same name found? + if (Objects.equals(user.getUserName(), currentUser.getUserName())) { + // Yes, then set flag and abort loop + isFound = true; + break; + } + } + + // Return flag + return isFound; + } + + @Override + public User lookupUserByEmailAddress (final String emailAddress) throws UserEmailAddressNotFoundException { + // Parameter must be valid + if (null == emailAddress) { + // Throw NPE + throw new NullPointerException("emailAddress is null"); //NOI18N + } else if (emailAddress.isEmpty()) { + // Not valid + throw new IllegalArgumentException("emailAddress is empty"); //NOI18N + } + + // Init variable + User user = null; + + // Try to lookup it in visible user list + for (final Cache.Entry currentUser : this.userCache) { + // Contact should be set + if (currentUser.getValue().getUserContact() == null) { + // Contact is null + throw new NullPointerException(MessageFormat.format("currentUser.userContact is null for user id {0}", currentUser.getKey())); //NOI18N + } else if (currentUser.getValue().getUserContact().getContactEmailAddress() == null) { + // Email address should be set + throw new NullPointerException(MessageFormat.format("currentUser.userContact.contactEmailAddress is null for user id {0}", currentUser.getKey())); //NOI18N + } + + // Is the email address found? + if (Objects.equals(currentUser.getValue().getUserContact().getContactEmailAddress(), emailAddress)) { + // Copy to other variable + user = currentUser.getValue(); + break; + } + } + + // Is it still null? + if (null == user) { + // Not visible for the current user + throw new UserEmailAddressNotFoundException(emailAddress); + } + + // Return it + return user; + } + + @Override + public User lookupUserById (final Long userId) throws UserNotFoundException { + // Parameter must be valid + if (null == userId) { + // Throw NPE + throw new NullPointerException("userId is null"); //NOI18N + } else if (userId < 1) { + // Not valid + throw new IllegalArgumentException(MessageFormat.format("userId={0} is not valid.", userId)); //NOI18N + } + + // Init variable + User user = null; + + // Try to lookup it in visible user list + for (final Cache.Entry currentUser : this.userCache) { + // Is the user id found? + if (Objects.equals(currentUser.getKey(), userId)) { + // Copy to other variable + user = currentUser.getValue(); + break; + } + } + + // Is it still null? + if (null == user) { + // Not visible for the current user + throw new UserNotFoundException(userId); + } + + // Return it + return user; + } + + /** + * Removes user from all lists + *

+ * @param user User to remove + */ + private void removeFromList (final User user) { + // Remove it from lists + this.getAllUsers().remove(user); + this.userCache.remove(user.getUserId()); + } + + /** + * Updates list with given user instance + *

+ * @param user User instance + */ + private void updateList (final User user) { + // Add/update user + this.userCache.put(user.getUserId(), user); + this.getAllUsers().add(user); + } + +} diff --git a/src/java/org/mxchange/jjobs/beans/country/list/JobsCountryListWebViewBean.java b/src/java/org/mxchange/jjobs/beans/country/list/JobsCountryListWebViewBean.java index 2467e57f..b41c00b0 100644 --- a/src/java/org/mxchange/jjobs/beans/country/list/JobsCountryListWebViewBean.java +++ b/src/java/org/mxchange/jjobs/beans/country/list/JobsCountryListWebViewBean.java @@ -185,11 +185,8 @@ public class JobsCountryListWebViewBean extends BaseJobsBean implements JobsCoun public void initializeList () { // Is cache there? if (!this.countryCache.iterator().hasNext()) { - // Get whole list from EJB - final List countrys = this.countryBean.allCountries(); - // Add all - for (final Country country : countrys) { + for (final Country country : this.countryBean.allCountries()) { // Add it to cache this.countryCache.put(country.getCountryId(), country); } diff --git a/src/java/org/mxchange/jjobs/beans/helper/JobsWebViewHelperBean.java b/src/java/org/mxchange/jjobs/beans/helper/JobsWebViewHelperBean.java index 2f196d51..ba985837 100644 --- a/src/java/org/mxchange/jjobs/beans/helper/JobsWebViewHelperBean.java +++ b/src/java/org/mxchange/jjobs/beans/helper/JobsWebViewHelperBean.java @@ -125,7 +125,7 @@ public class JobsWebViewHelperBean extends BaseJobsBean implements JobsWebViewHe * Regular user controller */ @Inject - private JobsUserWebRequestController userController; + private JobsUserWebRequestController userListController; /** * Event for when a user instance was created @@ -185,7 +185,7 @@ public class JobsWebViewHelperBean extends BaseJobsBean implements JobsWebViewHe String messageKey = "CONTACT_IS_UNUSED"; //NOI18N // Check user first - if (this.userController.isContactFound(contact)) { + if (this.contactListController.isContactFound(contact)) { // Only user messageKey = "CONTACT_IS_USER"; //NOI18N } diff --git a/src/java/org/mxchange/jjobs/beans/localization/JobsLocalizationSessionBean.java b/src/java/org/mxchange/jjobs/beans/localization/JobsLocalizationSessionBean.java index 92eb4605..2737bc22 100644 --- a/src/java/org/mxchange/jjobs/beans/localization/JobsLocalizationSessionBean.java +++ b/src/java/org/mxchange/jjobs/beans/localization/JobsLocalizationSessionBean.java @@ -98,7 +98,7 @@ public class JobsLocalizationSessionBean extends BaseJobsBean implements JobsLoc * @param event Event instance */ public void afterUserLoginEvent (@Observes final ObservableUserLoggedInEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -129,7 +129,7 @@ public class JobsLocalizationSessionBean extends BaseJobsBean implements JobsLoc * @param event Event instance */ public void afterUserLogoutEvent (@Observes final ObservableUserLogoutEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -198,11 +198,7 @@ public class JobsLocalizationSessionBean extends BaseJobsBean implements JobsLoc return NUMBER_FORMAT.format(amount); } - /** - * Getter for locale - *

- * @return Locale - */ + @Override public Locale getLocale () { return this.locale; } diff --git a/src/java/org/mxchange/jjobs/beans/localization/JobsLocalizationSessionController.java b/src/java/org/mxchange/jjobs/beans/localization/JobsLocalizationSessionController.java index d9e473a8..5dead2fe 100644 --- a/src/java/org/mxchange/jjobs/beans/localization/JobsLocalizationSessionController.java +++ b/src/java/org/mxchange/jjobs/beans/localization/JobsLocalizationSessionController.java @@ -17,6 +17,7 @@ package org.mxchange.jjobs.beans.localization; import java.io.Serializable; +import java.util.Locale; /** * An interface for localization change beans @@ -34,4 +35,11 @@ public interface JobsLocalizationSessionController extends Serializable { */ String formatCurrency (final Float amount); + /** + * Getter for locale + *

+ * @return Locale + */ + Locale getLocale (); + } diff --git a/src/java/org/mxchange/jjobs/beans/mobileprovider/JobsMobileProviderWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/mobileprovider/JobsMobileProviderWebRequestBean.java index ca1c32e9..fb8ca25a 100644 --- a/src/java/org/mxchange/jjobs/beans/mobileprovider/JobsMobileProviderWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/mobileprovider/JobsMobileProviderWebRequestBean.java @@ -164,11 +164,8 @@ public class JobsMobileProviderWebRequestBean extends BaseJobsBean implements Jo public void initCache () { // Is cache there? if (!this.mobileProviderCache.iterator().hasNext()) { - // Get whole list from EJB - final List mobileProviders = this.mobileProviderBean.allMobileProviders(); - // Add all - for (final MobileProvider mobileProvider : mobileProviders) { + for (final MobileProvider mobileProvider : this.mobileProviderBean.allMobileProviders()) { // Add it to cache this.mobileProviderCache.put(mobileProvider.getProviderId(), mobileProvider); } diff --git a/src/java/org/mxchange/jjobs/beans/phone/JobsPhoneWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/phone/JobsPhoneWebRequestBean.java index 5ee30477..c1006edf 100644 --- a/src/java/org/mxchange/jjobs/beans/phone/JobsPhoneWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/phone/JobsPhoneWebRequestBean.java @@ -132,7 +132,7 @@ public class JobsPhoneWebRequestBean extends BaseJobsBean implements JobsPhoneWe * @param event Event being fired */ public void afterAdminAddedUserEvent (@Observes final ObservableAdminAddedUserEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -161,7 +161,7 @@ public class JobsPhoneWebRequestBean extends BaseJobsBean implements JobsPhoneWe * @param event Event being fired */ public void afterAdminDeletedFaxNumberEvent (@Observes final AdminDeletedFaxNumberEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -190,7 +190,7 @@ public class JobsPhoneWebRequestBean extends BaseJobsBean implements JobsPhoneWe * @param event Event being fired */ public void afterAdminDeletedLandLineNumberEvent (@Observes final AdminDeletedLandLineNumberEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -219,7 +219,7 @@ public class JobsPhoneWebRequestBean extends BaseJobsBean implements JobsPhoneWe * @param event Event being fired */ public void afterAdminDeletedMobileNumberEvent (@Observes final AdminDeletedMobileNumberEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -371,7 +371,7 @@ public class JobsPhoneWebRequestBean extends BaseJobsBean implements JobsPhoneWe * @param event Event being fired */ public void afterAdminUpdatedContactDataEvent (@Observes final ObservableAdminUpdatedContactEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -400,7 +400,7 @@ public class JobsPhoneWebRequestBean extends BaseJobsBean implements JobsPhoneWe * @param event Event being fired */ public void afterAdminUpdatedFaxNumberEvent (@Observes final AdminUpdatedFaxNumberEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -429,7 +429,7 @@ public class JobsPhoneWebRequestBean extends BaseJobsBean implements JobsPhoneWe * @param event Event being fired */ public void afterAdminUpdatedLandLineNumberEvent (@Observes final AdminUpdatedLandLineNumberEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -458,7 +458,7 @@ public class JobsPhoneWebRequestBean extends BaseJobsBean implements JobsPhoneWe * @param event Event being fired */ public void afterAdminUpdatedMobileNumberEvent (@Observes final AdminUpdatedMobileNumberEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -598,11 +598,8 @@ public class JobsPhoneWebRequestBean extends BaseJobsBean implements JobsPhoneWe public void init () { // Is cache there? if (!this.faxNumberCache.iterator().hasNext()) { - // Get whole list from EJB - final List faxNumbers = this.phoneBean.allFaxNumbers(); - // Add all - for (final DialableFaxNumber faxNumber : faxNumbers) { + for (final DialableFaxNumber faxNumber : this.phoneBean.allFaxNumbers()) { // Add it to cache this.faxNumberCache.put(faxNumber.getPhoneId(), faxNumber); } @@ -610,11 +607,8 @@ public class JobsPhoneWebRequestBean extends BaseJobsBean implements JobsPhoneWe // Is cache there? if (!this.landLineNumberCache.iterator().hasNext()) { - // Get whole list from EJB - final List lineNumbers = this.phoneBean.allLandLineNumbers(); - // Add all - for (final DialableLandLineNumber lineNumber : lineNumbers) { + for (final DialableLandLineNumber lineNumber : this.phoneBean.allLandLineNumbers()) { // Add it to cache this.landLineNumberCache.put(lineNumber.getPhoneId(), lineNumber); } @@ -622,11 +616,8 @@ public class JobsPhoneWebRequestBean extends BaseJobsBean implements JobsPhoneWe // Is cache there? if (!this.mobileNumberCache.iterator().hasNext()) { - // Get whole list from EJB - final List mobileNumbers = this.phoneBean.allMobileNumbers(); - // Add all - for (final DialableMobileNumber mobileNumber : mobileNumbers) { + for (final DialableMobileNumber mobileNumber : this.phoneBean.allMobileNumbers()) { // Add it to cache this.mobileNumberCache.put(mobileNumber.getPhoneId(), mobileNumber); } diff --git a/src/java/org/mxchange/jjobs/beans/profile/JobsUserProfileWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/profile/JobsUserProfileWebRequestBean.java index 45d14f21..affc3e8d 100644 --- a/src/java/org/mxchange/jjobs/beans/profile/JobsUserProfileWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/profile/JobsUserProfileWebRequestBean.java @@ -43,10 +43,10 @@ public class JobsUserProfileWebRequestBean extends BaseJobsBean implements JobsU private static final long serialVersionUID = 187_687_145_286_710L; /** - * User controller + * User list controller */ @Inject - private JobsUserWebRequestController userController; + private JobsUserWebRequestController userListController; /** * Login controller @@ -69,7 +69,7 @@ public class JobsUserProfileWebRequestBean extends BaseJobsBean implements JobsU try { // Try to get it - user = this.userController.lookupUserById(userId); + user = this.userListController.lookupUserById(userId); } catch (final UserNotFoundException ex) { // Throw again throw new FaceletException(ex); diff --git a/src/java/org/mxchange/jjobs/beans/user/JobsAdminUserWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/user/JobsAdminUserWebRequestBean.java index b25488b5..9d2fe7f5 100644 --- a/src/java/org/mxchange/jjobs/beans/user/JobsAdminUserWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/user/JobsAdminUserWebRequestBean.java @@ -160,6 +160,12 @@ public class JobsAdminUserWebRequestBean extends BaseJobsBean implements JobsAdm @Any private Event userLinkedEvent; + /** + * Regular user controller + */ + @Inject + private JobsUserListWebViewController userListController; + /** * User lock reason */ @@ -236,7 +242,7 @@ public class JobsAdminUserWebRequestBean extends BaseJobsBean implements JobsAdm // Is the user name or email address used already? // @TODO Add password length check - if ((this.featureController.isFeatureEnabled("user_login_require_user_name")) && (this.userController.isUserNameRegistered(newUser))) { + if ((this.featureController.isFeatureEnabled("user_login_require_user_name")) && (this.userListController.isUserNameRegistered(newUser))) { // User name is already used throw new FaceletException(new UserNameAlreadyRegisteredException(newUser)); } else if ((this.getContact() == null) && (this.contactController.isEmailAddressRegistered(newUser.getUserContact()))) { @@ -311,7 +317,7 @@ public class JobsAdminUserWebRequestBean extends BaseJobsBean implements JobsAdm * @param event User registration event */ public void afterUserRegistrationEvent (@Observes final ObservableUserRegisteredEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N diff --git a/src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestBean.java index 49165b43..9a082abb 100644 --- a/src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestBean.java @@ -16,15 +16,8 @@ */ package org.mxchange.jjobs.beans.user; -import fish.payara.cdi.jsr107.impl.NamedCache; import java.text.MessageFormat; -import java.util.Comparator; -import java.util.LinkedList; -import java.util.List; -import java.util.Locale; import java.util.Objects; -import javax.annotation.PostConstruct; -import javax.cache.Cache; import javax.ejb.EJB; import javax.enterprise.context.RequestScoped; import javax.enterprise.event.Event; @@ -44,20 +37,13 @@ import org.mxchange.jusercore.events.user.add.ObservableAdminAddedUserEvent; import org.mxchange.jusercore.events.user.clear.password.ObservableClearUserPasswordEvent; import org.mxchange.jusercore.events.user.clear.username.ObservableClearUserNameEvent; import org.mxchange.jusercore.events.user.created.ObservableCreatedUserEvent; -import org.mxchange.jusercore.events.user.delete.ObservableAdminDeletedUserEvent; import org.mxchange.jusercore.events.user.linked.ObservableAdminLinkedUserEvent; -import org.mxchange.jusercore.events.user.locked.ObservableAdminLockedUserEvent; -import org.mxchange.jusercore.events.user.unlocked.ObservableAdminUnlockedUserEvent; -import org.mxchange.jusercore.events.user.update.ObservableAdminUpdatedUserDataEvent; import org.mxchange.jusercore.events.user.update.ObservableUpdatedUserPersonalDataEvent; import org.mxchange.jusercore.events.user.update.UpdatedUserPersonalDataEvent; -import org.mxchange.jusercore.exceptions.UserEmailAddressNotFoundException; -import org.mxchange.jusercore.exceptions.UserNotFoundException; import org.mxchange.jusercore.model.user.LoginUser; import org.mxchange.jusercore.model.user.User; import org.mxchange.jusercore.model.user.UserSessionBeanRemote; import org.mxchange.jusercore.model.user.profilemodes.ProfileMode; -import org.mxchange.juserlogincore.events.confirmation.ObservableUserConfirmedAccountEvent; import org.mxchange.juserlogincore.events.login.ObservableUserLoggedInEvent; import org.mxchange.juserlogincore.events.registration.ObservableUserRegisteredEvent; import org.mxchange.juserlogincore.events.user.password_change.ObservableUpdatedUserPasswordEvent; @@ -78,11 +64,6 @@ public class JobsUserWebRequestBean extends BaseJobsBean implements JobsUserWebR */ private static final long serialVersionUID = 542_145_347_916L; - /** - * List of all users - */ - private final List allUsers; - /** * General contact controller */ @@ -96,14 +77,10 @@ public class JobsUserWebRequestBean extends BaseJobsBean implements JobsUserWebR private JobsFeaturesWebApplicationController featureController; /** - * List of filtered users - */ - private List filteredUsers; - - /** - * Locale instance + * Localization controller */ - private Locale locale; + @Inject + private JobsLocalizationSessionController localizationController; /** * Event being fired when user updated personal data @@ -118,13 +95,6 @@ public class JobsUserWebRequestBean extends BaseJobsBean implements JobsUserWebR @EJB (lookup = "java:global/jjobs-ejb/user!org.mxchange.jusercore.model.user.UserSessionBeanRemote") private UserSessionBeanRemote userBean; - /** - * A list of all user profiles - */ - @Inject - @NamedCache (cacheName = "userCache") - private Cache userCache; - /** * User id */ @@ -162,9 +132,6 @@ public class JobsUserWebRequestBean extends BaseJobsBean implements JobsUserWebR public JobsUserWebRequestBean () { // Call super constructor super(); - - // Init list - this.allUsers = new LinkedList<>(); } /** @@ -173,7 +140,7 @@ public class JobsUserWebRequestBean extends BaseJobsBean implements JobsUserWebR * @param event Event being fired */ public void afterAdminAddedUserEvent (@Observes final ObservableAdminAddedUserEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -188,51 +155,17 @@ public class JobsUserWebRequestBean extends BaseJobsBean implements JobsUserWebR throw new IllegalArgumentException(MessageFormat.format("userId of user={0} is not valid: {1}", event.getAddedUser(), event.getAddedUser().getUserId())); //NOI18N } - // Update user list - this.updateList(event.getAddedUser()); - - // Clear all data - this.clear(); - // Set user id again this.setUserId(event.getAddedUser().getUserId()); } - /** - * Event observer for deleted user accounts (by administrator) - *

- * @param event Event being fired - */ - public void afterAdminDeletedUserEvent (@Observes final ObservableAdminDeletedUserEvent event) { - // event should not be null - if (null == event) { - // Throw NPE - throw new NullPointerException("event is null"); //NOI18N - } else if (event.getDeletedUser() == null) { - // Throw NPE again - throw new NullPointerException("event.deletedUser is null"); //NOI18N - } else if (event.getDeletedUser().getUserId() == null) { - // userId is null - throw new NullPointerException("event.deletedUser.userId is null"); //NOI18N - } else if (event.getDeletedUser().getUserId() < 1) { - // Not avalid id - throw new IllegalArgumentException(MessageFormat.format("userId of user={0} is not valid: {1}", event.getDeletedUser(), event.getDeletedUser().getUserId())); //NOI18N - } - - // Update user list - this.removeFromList(event.getDeletedUser()); - - // Clear all data - this.clear(); - } - /** * Event observer for linked users with existing contact data *

* @param event Event being fired */ public void afterAdminLinkedUserEvent (@Observes final ObservableAdminLinkedUserEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -247,94 +180,10 @@ public class JobsUserWebRequestBean extends BaseJobsBean implements JobsUserWebR throw new IllegalArgumentException(MessageFormat.format("userId of user={0} is not valid: {1}", event.getLinkedUser(), event.getLinkedUser().getUserId())); //NOI18N } - // Update user list - this.updateList(event.getLinkedUser()); - - // Clear all data - this.clear(); - // Set user id again this.setUserId(event.getLinkedUser().getUserId()); } - /** - * Event observer for locked users - *

- * @param event Event being fired - */ - public void afterAdminLockedUserEvent (@Observes final ObservableAdminLockedUserEvent event) { - // event should not be null - if (null == event) { - // Throw NPE - throw new NullPointerException("event is null"); //NOI18N - } else if (event.getLockedUser() == null) { - // Throw NPE again - throw new NullPointerException("event.lockedUser is null"); //NOI18N - } else if (event.getLockedUser().getUserId() == null) { - // userId is null - throw new NullPointerException("event.lockedUser.userId is null"); //NOI18N - } else if (event.getLockedUser().getUserId() < 1) { - // Not avalid id - throw new IllegalArgumentException(MessageFormat.format("userId of user={0} is not valid: {1}", event.getLockedUser(), event.getLockedUser().getUserId())); //NOI18N - } - - // Update user list - this.updateList(event.getLockedUser()); - } - - /** - * Event observer for unlocked users - *

- * @param event Event being fired - */ - public void afterAdminUnlockedUserEvent (@Observes final ObservableAdminUnlockedUserEvent event) { - // event should not be null - if (null == event) { - // Throw NPE - throw new NullPointerException("event is null"); //NOI18N - } else if (event.getUnlockedUser() == null) { - // Throw NPE again - throw new NullPointerException("event.unlockedUser is null"); //NOI18N - } else if (event.getUnlockedUser().getUserId() == null) { - // userId is null - throw new NullPointerException("event.unlockedUser.userId is null"); //NOI18N - } else if (event.getUnlockedUser().getUserId() < 1) { - // Not avalid id - throw new IllegalArgumentException(MessageFormat.format("userId of user={0} is not valid: {1}", event.getUnlockedUser(), event.getUnlockedUser().getUserId())); //NOI18N - } - - // Update user list - this.updateList(event.getUnlockedUser()); - } - - /** - * Event observer for updated user data by administrator - *

- * @param event Event being updated - */ - public void afterAdminUpdatedUserDataEvent (@Observes final ObservableAdminUpdatedUserDataEvent event) { - // event should not be null - if (null == event) { - // Throw NPE - throw new NullPointerException("event is null"); //NOI18N - } else if (event.getUpdatedUser() == null) { - // Throw NPE again - throw new NullPointerException("event.updatedUser is null"); //NOI18N - } else if (event.getUpdatedUser().getUserId() == null) { - // userId is null - throw new NullPointerException("event.updatedUser.userId is null"); //NOI18N - } else if (event.getUpdatedUser().getUserId() < 1) { - // Not avalid id - throw new IllegalArgumentException(MessageFormat.format("userId of user={0} is not valid: {1}", event.getUpdatedUser(), event.getUpdatedUser().getUserId())); //NOI18N - } - - // Update user list - this.updateList(event.getUpdatedUser()); - - // Clear all data - this.clear(); - } - /** * Event observer for when a bean helper has successfully created a user * instance, means the user exists. If the user does not exist, this event @@ -365,58 +214,13 @@ public class JobsUserWebRequestBean extends BaseJobsBean implements JobsUserWebR this.copyUser(user); } - /** - * Observer method for events being fired when the application's locale has - * been changed. - *

- * @param event Event being fired - */ - public void afterLocaleChangeEvent (@Observes final ObservableLocaleChangeEvent event) { - // Is the parameter valid? - if (null == event) { - // Throw NPE - throw new NullPointerException("event is null"); //NOI18N - } else if (event.getLocale() == null) { - // Throw NPE again - throw new NullPointerException("event.locale is null"); //NOI18N - } - - // Set it here - this.setLocale(event.getLocale()); - } - - /** - * Event observer when user confirmed account. - *

- * @param event Event being fired - */ - public void afterUserConfirmedAccountEvent (@Observes final ObservableUserConfirmedAccountEvent event) { - // event should not be null - if (null == event) { - // Throw NPE - throw new NullPointerException("event is null"); //NOI18N - } else if (event.getConfirmedUser() == null) { - // Throw NPE again - throw new NullPointerException("event.confirmedUser is null"); //NOI18N - } else if (event.getConfirmedUser().getUserId() == null) { - // userId is null - throw new NullPointerException("event.confirmedUser.userId is null"); //NOI18N - } else if (event.getConfirmedUser().getUserId() < 1) { - // Not avalid id - throw new IllegalArgumentException(MessageFormat.format("userId of user={0} is not valid: {1}", event.getConfirmedUser(), event.getConfirmedUser().getUserId())); //NOI18N - } - - // Update user list - this.updateList(event.getConfirmedUser()); - } - /** * Event observer for logged-in user *

* @param event Event instance */ public void afterUserLoginEvent (@Observes final ObservableUserLoggedInEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -467,7 +271,7 @@ public class JobsUserWebRequestBean extends BaseJobsBean implements JobsUserWebR * @param event User registration event */ public void afterUserRegistrationEvent (@Observes final ObservableUserRegisteredEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -488,73 +292,10 @@ public class JobsUserWebRequestBean extends BaseJobsBean implements JobsUserWebR // Copy all data from registered->user this.copyUser(registeredUser); - // Clear all data - this.clear(); - - // Update user list - this.updateList(registeredUser); - // Set user id again this.setUserId(registeredUser.getUserId()); } - /** - * Method being call after user's password has been updated (and history - * entry has been created). - *

- * @param event Event being observed - */ - public void afterUserUpdatedPasswordEvent (@Observes final ObservableUpdatedUserPasswordEvent event) { - // Check parameter - if (null == event) { - // Throw NPE - throw new NullPointerException("event is null"); //NOI18N - } else if (event.getPasswordHistory() == null) { - // Throw NPE again - throw new NullPointerException("event.passwordHistory is null"); //NOI18N - } else if (event.getPasswordHistory().getUserPasswordHistoryId() == null) { - // ... and again - throw new NullPointerException("event.passwordHistory.userPasswordHistoryId is null"); //NOI18N - } else if (event.getPasswordHistory().getUserPasswordHistoryId() < 1) { - // Invalid value - throw new IllegalArgumentException(MessageFormat.format("event.passwordHistory.userPasswordHistoryId={0} is in valid", event.getPasswordHistory().getUserPasswordHistoryId())); //NOI18N - } - - // Update user list - this.updateList(event.getPasswordHistory().getUserPasswordHistoryUser()); - } - - /** - * Listens to fired event when user updated personal data - *

- * @param event Event being fired - */ - public void afterUserUpdatedPersonalDataEvent (@Observes final ObservableUpdatedUserPersonalDataEvent event) { - // Check parameter - if (null == event) { - // Throw NPE - throw new NullPointerException("event is null"); //NOI18N - } else if (event.getUpdatedUser() == null) { - // Throw NPE again - throw new NullPointerException("event.updatedUser is null"); //NOI18N - } else if (event.getUpdatedUser().getUserId() == null) { - // ... and again - throw new NullPointerException("event.updatedUser.userId is null"); //NOI18N - } else if (event.getUpdatedUser().getUserId() < 1) { - // Invalid value - throw new IllegalArgumentException(MessageFormat.format("event.updatedUser.userId={0} is in valid", event.getUpdatedUser().getUserId())); //NOI18N - } - - // Update user list - this.updateList(event.getUpdatedUser()); - } - - @Override - @SuppressWarnings ("ReturnOfCollectionOrArrayField") - public List allUsers () { - return this.allUsers; - } - /** * Event observer for when a user name should be cleared *

@@ -592,9 +333,6 @@ public class JobsUserWebRequestBean extends BaseJobsBean implements JobsUserWebR // Required personal data must be set assert (this.isRequiredPersonalDataSet()) : "not all personal data is set"; //NOI18N - // Create new user instance - final User user = new LoginUser(); - // Is user name required? if (!this.isUserNameRequired()) { // Generate pseudo-random user name @@ -613,10 +351,13 @@ public class JobsUserWebRequestBean extends BaseJobsBean implements JobsUserWebR this.setUserPasswordRepeat(randomPassword); } + // Create new user instance + final User user = new LoginUser(); + // Set user name profile mode and locale user.setUserName(this.getUserName()); user.setUserProfileMode(this.getUserProfileMode()); - user.setUserLocale(this.getLocale()); + user.setUserLocale(this.localizationController.getLocale()); // Is multiple registration page if ((createContactData) || (!this.featureController.isFeatureEnabled("user_register_multiple_page"))) { //NOI18N @@ -696,47 +437,6 @@ public class JobsUserWebRequestBean extends BaseJobsBean implements JobsUserWebR return "user_contact_data_saved"; //NOI18N } - @Override - public User findUserById (final Long userId) throws UserNotFoundException { - // Validate parameter - if (null == userId) { - // Throw NPE - throw new NullPointerException("userId is null"); //NOI18N - } else if (userId < 1) { - // Throw IAE - throw new IllegalArgumentException("userId=" + userId + " is invalid."); //NOI18N - } else if (!this.userCache.containsKey(userId)) { - // Not found - throw new UserNotFoundException(userId); - } - - // Get it from cache - final User user = this.userCache.get(userId); - - // Return it - return user; - } - - /** - * Getter for filtered users list - *

- * @return Filtered users list - */ - @SuppressWarnings ("ReturnOfCollectionOrArrayField") - public List getFilteredUsers () { - return this.filteredUsers; - } - - /** - * Setter for filtered users list - *

- * @param filteredUsers Filtered users list - */ - @SuppressWarnings ("AssignmentToCollectionOrArrayFieldFromParameter") - public void setFilteredUsers (final List filteredUsers) { - this.filteredUsers = filteredUsers; - } - /** * Getter for user id *

@@ -831,90 +531,6 @@ public class JobsUserWebRequestBean extends BaseJobsBean implements JobsUserWebR ((this.getUserPasswordRepeat() == null) || (this.getUserPasswordRepeat().isEmpty()))); } - @Override - public boolean ifUserIdExists (final Long userId) { - // Validate parameter - if (null == userId) { - // Throw NPE - throw new NullPointerException("userId is null"); //NOI18N - } else if (userId < 1) { - // Throw IAE - throw new IllegalArgumentException("userId=" + userId + " is invalid."); //NOI18N - } - - // Check if key is there - boolean isFound = this.userCache.containsKey(userId); - - // Return flag - return isFound; - } - - /** - * Post-initialization of this class - */ - @PostConstruct - public void init () { - // Is cache there? - if (!this.userCache.iterator().hasNext()) { - // Get whole list from EJB - final List users = this.userBean.allUsers(); - - // Add all - for (final User user : users) { - // Add it to cache - this.userCache.put(user.getUserId(), user); - } - } - - // Is cache filled and list is empty - if ((this.userCache.iterator().hasNext()) && (this.allUsers.isEmpty())) { - // Build up list - for (final Cache.Entry currentEntry : this.userCache) { - // Add to list - this.allUsers.add(currentEntry.getValue()); - } - - // Sort list - this.allUsers.sort(new Comparator() { - @Override - public int compare (final User user1, final User user2) { - return user1.getUserId() > user2.getUserId() ? 1 : user1.getUserId() < user2.getUserId() ? -1 : 0; - } - }); - } - } - - @Override - public boolean isContactFound (final Contact contact) { - // The contact must be valid - if (null == contact) { - // Throw NPE - throw new NullPointerException("contact is null"); //NOI18N - } else if (contact.getContactId() == null) { - // Throw again ... - throw new NullPointerException("contact.contactId is null"); //NOI18N - } else if (contact.getContactId() < 1) { - // Not valid - throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} is not valid", contact.getContactId())); //NOI18N - } - - // Default is not found - boolean isFound = false; - - // Loop through all entries - for (final User currentUser : this.allUsers()) { - // Compare both objects - if (Objects.equals(contact, currentUser.getUserContact())) { - // Found it - isFound = true; - break; - } - } - - // Return status - return isFound; - } - @Override public boolean isRequiredChangePersonalDataSet () { return ((this.getUserProfileMode() != null) && @@ -947,25 +563,6 @@ public class JobsUserWebRequestBean extends BaseJobsBean implements JobsUserWebR return ((this.getUserId() == null) || (this.getUserId() == 0)); } - @Override - public boolean isUserNameRegistered (final User user) { - // Default is not found - boolean isFound = false; - - // Determine it - for (final User currentUser : this.allUsers()) { - // Is same name found? - if (Objects.equals(user.getUserName(), currentUser.getUserName())) { - // Yes, then set flag and abort loop - isFound = true; - break; - } - } - - // Return flag - return isFound; - } - @Override public boolean isUserNameRequired () { // Get context parameter @@ -978,98 +575,6 @@ public class JobsUserWebRequestBean extends BaseJobsBean implements JobsUserWebR return isRequired; } - @Override - public User lookupUserByEmailAddress (final String emailAddress) throws UserEmailAddressNotFoundException { - // Parameter must be valid - if (null == emailAddress) { - // Throw NPE - throw new NullPointerException("emailAddress is null"); //NOI18N - } else if (emailAddress.isEmpty()) { - // Not valid - throw new IllegalArgumentException("emailAddress is empty"); //NOI18N - } - - // Init variable - User user = null; - - // Try to lookup it in visible user list - for (final Cache.Entry currentUser : this.userCache) { - // Contact should be set - if (currentUser.getValue().getUserContact() == null) { - // Contact is null - throw new NullPointerException(MessageFormat.format("currentUser.userContact is null for user id {0}", currentUser.getKey())); //NOI18N - } else if (currentUser.getValue().getUserContact().getContactEmailAddress() == null) { - // Email address should be set - throw new NullPointerException(MessageFormat.format("currentUser.userContact.contactEmailAddress is null for user id {0}", currentUser.getKey())); //NOI18N - } - - // Is the email address found? - if (Objects.equals(currentUser.getValue().getUserContact().getContactEmailAddress(), emailAddress)) { - // Copy to other variable - user = currentUser.getValue(); - break; - } - } - - // Is it still null? - if (null == user) { - // Not visible for the current user - throw new UserEmailAddressNotFoundException(emailAddress); - } - - // Return it - return user; - } - - @Override - public User lookupUserById (final Long userId) throws UserNotFoundException { - // Parameter must be valid - if (null == userId) { - // Throw NPE - throw new NullPointerException("userId is null"); //NOI18N - } else if (userId < 1) { - // Not valid - throw new IllegalArgumentException(MessageFormat.format("userId={0} is not valid.", userId)); //NOI18N - } - - // Init variable - User user = null; - - // Try to lookup it in visible user list - for (final Cache.Entry currentUser : this.userCache) { - // Is the user id found? - if (Objects.equals(currentUser.getKey(), userId)) { - // Copy to other variable - user = currentUser.getValue(); - break; - } - } - - // Is it still null? - if (null == user) { - // Not visible for the current user - throw new UserNotFoundException(userId); - } - - // Return it - return user; - } - - /** - * Clears this bean - */ - private void clear () { - // Clear all data - // - personal data - this.setUserId(null); - this.setUserProfileMode(null); - - // - other data - this.clearUserName(); - this.clearUserPasswords(); - this.setLocale(null); - } - /** * Clears user name */ @@ -1108,77 +613,4 @@ public class JobsUserWebRequestBean extends BaseJobsBean implements JobsUserWebR this.setUserProfileMode(user.getUserProfileMode()); } - /** - * Getter for locale instance - *

- * @return Locale instance - */ - private Locale getLocale () { - return this.locale; - } - - /** - * Setter for locale instance - *

- * @param locale Locale instance - */ - private void setLocale (final Locale locale) { - this.locale = locale; - } - - /** - * Removes user from all lists - *

- * @param user User to remove - */ - private void removeFromList (final User user) { - // The user should be valid - if (null == user) { - // Throw NPE - throw new NullPointerException("user is null"); //NOI18N - } else if (user.getUserId() == null) { - // ... again NPE - throw new NullPointerException("user.userId is null"); //NOI18N - } else if (user.getUserId() < 1) { - // Invalid id - throw new IllegalArgumentException(MessageFormat.format("user.userId={0} is invalid", user.getUserId())); //NOI18N - } - - // Remove it from lists - this.allUsers().remove(user); - this.userCache.remove(user.getUserId()); - } - - /** - * Updates list with given user instance - *

- * @param user User instance - */ - private void updateList (final User user) { - // The user should be valid - if (null == user) { - // Throw NPE - throw new NullPointerException("user is null"); //NOI18N - } else if (user.getUserId() == null) { - // ... again NPE - throw new NullPointerException("user.userId is null"); //NOI18N - } else if (user.getUserId() < 1) { - // Invalid id - throw new IllegalArgumentException(MessageFormat.format("user.userId={0} is invalid", user.getUserId())); //NOI18N - } else if (user.getUserContact() == null) { - // Throw again ... - throw new NullPointerException("user.userContact is null"); //NOI18N - } else if (user.getUserContact().getContactId() == null) { - // Throw again ... - throw new NullPointerException("user.userContact.contactId is null"); //NOI18N - } else if (user.getUserContact().getContactId() < 1) { - // Throw again ... - throw new NullPointerException(MessageFormat.format("user.userContact.contactId={0} is invalid.", user.getUserContact().getContactId())); //NOI18N - } - - // Add/update user - this.userCache.put(user.getUserId(), user); - this.allUsers.add(user); - } - } diff --git a/src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestController.java b/src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestController.java index c5902152..d68fd421 100644 --- a/src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestController.java +++ b/src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestController.java @@ -17,10 +17,6 @@ package org.mxchange.jjobs.beans.user; import java.io.Serializable; -import java.util.List; -import org.mxchange.jcontacts.model.contact.Contact; -import org.mxchange.jusercore.exceptions.UserEmailAddressNotFoundException; -import org.mxchange.jusercore.exceptions.UserNotFoundException; import org.mxchange.jusercore.model.user.User; /** @@ -38,27 +34,6 @@ public interface JobsUserWebRequestController extends Serializable { @Deprecated public static final Integer MINIMUM_PASSWORD_LENGTH = 5; - /** - * Returns a user instance by given primary key. If not found, a proper - * exception is thrown. - *

- * @param userId User id - *

- * @return User instance - *

- * @throws UserNotFoundException If the user is not found - */ - User findUserById (final Long userId) throws UserNotFoundException; - - /** - * Checks if given user id exists - *

- * @param userId User id to check - *

- * @return Whether the user id exists - */ - boolean ifUserIdExists (final Long userId); - /** * Getter for clear-text user password *

@@ -76,56 +51,6 @@ public interface JobsUserWebRequestController extends Serializable { */ boolean ifBothPasswordsEmptyAllowed (); - /** - * All users - *

- * @return A list of all public user profiles - */ - List allUsers (); - - /** - * Checks whether the given contact is a user - *

- * @param contact Contact to check - *

- * @return Whether the contact is a user - */ - boolean isContactFound (final Contact contact); - - /** - * Checks whether given user instance name is used - *

- * @param user User instance name to check - *

- * @return Whether it is already used - */ - boolean isUserNameRegistered (final User user); - - /** - * Tries to lookup user by given id number. If the user is not found or the - * account status is not CONFIRMED proper exceptions are thrown. - *

- * @param userId User id - *

- * @return User instance - *

- * @throws UserNotFoundException If the user is not found - */ - User lookupUserById (final Long userId) throws UserNotFoundException; - - /** - * Tries to lookup user by given email address. If the user is not found a - * proper exceptions is thrown. - *

- * @param emailAddress Email address - *

- * @return User instance - *

- * @throws UserEmailAddressNotFoundException If the user's email address is - * not found - */ - User lookupUserByEmailAddress (final String emailAddress) throws UserEmailAddressNotFoundException; - /** * Creates an instance from all properties *

diff --git a/src/java/org/mxchange/jjobs/beans/user/activity/JobsUserActivityWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/user/activity/JobsUserActivityWebRequestBean.java index 9dd34d3d..a5032306 100644 --- a/src/java/org/mxchange/jjobs/beans/user/activity/JobsUserActivityWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/user/activity/JobsUserActivityWebRequestBean.java @@ -97,7 +97,7 @@ public class JobsUserActivityWebRequestBean extends BaseJobsBean implements Jobs * @param event Event being fired */ public void afterAdminAddedUserEvent (@Observes final ObservableAdminAddedUserEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -122,7 +122,7 @@ public class JobsUserActivityWebRequestBean extends BaseJobsBean implements Jobs * @param event Event being fired */ public void afterAdminDeletedUserEvent (@Observes final ObservableAdminDeletedUserEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -147,7 +147,7 @@ public class JobsUserActivityWebRequestBean extends BaseJobsBean implements Jobs * @param event Event being fired */ public void afterAdminLinkedUserEvent (@Observes final ObservableAdminLinkedUserEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -172,7 +172,7 @@ public class JobsUserActivityWebRequestBean extends BaseJobsBean implements Jobs * @param event Event being fired */ public void afterAdminLockedUserEvent (@Observes final ObservableAdminLockedUserEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -197,7 +197,7 @@ public class JobsUserActivityWebRequestBean extends BaseJobsBean implements Jobs * @param event Event being fired */ public void afterAdminUnlockedUserEvent (@Observes final ObservableAdminUnlockedUserEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -222,7 +222,7 @@ public class JobsUserActivityWebRequestBean extends BaseJobsBean implements Jobs * @param event Event being updated */ public void afterAdminUpdatedUserDataEvent (@Observes final ObservableAdminUpdatedUserDataEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -274,7 +274,7 @@ public class JobsUserActivityWebRequestBean extends BaseJobsBean implements Jobs * @param event Event being fired */ public void afterUserConfirmedAccountEvent (@Observes final ObservableUserConfirmedAccountEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -299,7 +299,7 @@ public class JobsUserActivityWebRequestBean extends BaseJobsBean implements Jobs * @param event Event being fired */ public void afterUserLoginEvent (@Observes final ObservableUserLoggedInEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -324,7 +324,7 @@ public class JobsUserActivityWebRequestBean extends BaseJobsBean implements Jobs * @param event Event instance */ public void afterUserLogoutEvent (@Observes final ObservableUserLogoutEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -349,7 +349,7 @@ public class JobsUserActivityWebRequestBean extends BaseJobsBean implements Jobs * @param event Event being fired */ public void afterUserRegistrationEvent (@Observes final ObservableUserRegisteredEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -374,7 +374,7 @@ public class JobsUserActivityWebRequestBean extends BaseJobsBean implements Jobs * @param event Event being fired */ public void afterUserResendConfirmationLinkEvent (@Observes final ObservableUserResendLinkAccountEvent event) { - // event should not be null + // Event and contained entity instance should not be null if (null == event) { // Throw NPE throw new NullPointerException("event is null"); //NOI18N @@ -544,11 +544,8 @@ public class JobsUserActivityWebRequestBean extends BaseJobsBean implements Jobs */ @PostConstruct public void init () { - // Get whole list from EJB - final List userActivities = this.userActivityBean.fetchAllUserActivityLog(); - // Put all in map, per-user - for (final LogableUserActivity userActivity : userActivities) { + for (final LogableUserActivity userActivity : this.userActivityBean.fetchAllUserActivityLog()) { // Is the list there? if (!this.userActivityCache.containsKey(userActivity.getActivityUser())) { // Init list diff --git a/src/java/org/mxchange/jjobs/beans/user/confirmlink/JobsConfirmationLinkWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/user/confirmlink/JobsConfirmationLinkWebRequestBean.java index ccf2ea4b..e83ea21e 100644 --- a/src/java/org/mxchange/jjobs/beans/user/confirmlink/JobsConfirmationLinkWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/user/confirmlink/JobsConfirmationLinkWebRequestBean.java @@ -80,17 +80,17 @@ public class JobsConfirmationLinkWebRequestBean extends BaseJobsBean implements private Event userConfirmedEvent; /** - * User controller + * Event for when a user instance was created */ + @Any @Inject - private JobsUserWebRequestController userController; + private Event userCreatedEvent; /** - * Event for when a user instance was created + * User controller */ - @Any @Inject - private Event userCreatedEvent; + private JobsUserListWebViewController userListController; /** * Default constructor @@ -125,7 +125,7 @@ public class JobsConfirmationLinkWebRequestBean extends BaseJobsBean implements User user = null; // Then loop through all - for (final User currentUser : this.userController.allUsers()) { + for (final User currentUser : this.userListController.getAllUsers()) { // Same confirmation key? if (Objects.equals(this.getConfirmationKey(), currentUser.getUserConfirmKey())) { // Found it, then set it and abort loop diff --git a/src/java/org/mxchange/jjobs/beans/user/register/JobsUserRegisterWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/user/register/JobsUserRegisterWebRequestBean.java index ec151328..40c751f0 100644 --- a/src/java/org/mxchange/jjobs/beans/user/register/JobsUserRegisterWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/user/register/JobsUserRegisterWebRequestBean.java @@ -101,6 +101,12 @@ public class JobsUserRegisterWebRequestBean extends BaseJobsBean implements Jobs @Inject private JobsUserWebRequestController userController; + /** + * User list controller + */ + @Inject + private JobsUserListWebViewController userListController; + /** * An event being fired when a user password was changed */ @@ -149,7 +155,7 @@ public class JobsUserRegisterWebRequestBean extends BaseJobsBean implements Jobs } else if (!this.userController.isRequiredPersonalDataSet()) { // Not all required fields are set throw new FaceletException("Not all required fields are set."); //NOI18N - } else if ((this.featureController.isFeatureEnabled("user_login_require_user_name")) && (this.userController.isUserNameRegistered(user))) { //NOI18N + } else if ((this.featureController.isFeatureEnabled("user_login_require_user_name")) && (this.userListController.isUserNameRegistered(user))) { //NOI18N // Is multi-page enabled? if (this.featureController.isFeatureEnabled("user_register_multiple_page")) { //NOI18N // User name is already used, should not happen here @@ -264,7 +270,7 @@ public class JobsUserRegisterWebRequestBean extends BaseJobsBean implements Jobs if (null == user) { // user must be set throw new NullPointerException("user is null after createUserInstance() was called"); //NOI18N - } else if ((this.featureController.isFeatureEnabled("user_login_require_user_name")) && (this.userController.isUserNameRegistered(user))) { //NOI18N + } else if ((this.featureController.isFeatureEnabled("user_login_require_user_name")) && (this.userListController.isUserNameRegistered(user))) { //NOI18N // User name is already used, so clear it this.clearUserNameEvent.fire(new ClearUserNameEvent()); diff --git a/src/java/org/mxchange/jjobs/beans/user/resendlink/JobsResendLinkWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/user/resendlink/JobsResendLinkWebRequestBean.java index 6478da0f..cb8626ec 100644 --- a/src/java/org/mxchange/jjobs/beans/user/resendlink/JobsResendLinkWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/user/resendlink/JobsResendLinkWebRequestBean.java @@ -16,16 +16,13 @@ */ package org.mxchange.jjobs.beans.user.resendlink; -import java.util.Locale; import javax.ejb.EJB; import javax.enterprise.context.RequestScoped; import javax.enterprise.event.Event; -import javax.enterprise.event.Observes; import javax.enterprise.inject.Any; import javax.faces.application.FacesMessage; import javax.inject.Inject; import javax.inject.Named; -import org.mxchange.jcoreee.events.locale.ObservableLocaleChangeEvent; import org.mxchange.jcoreee.utils.FacesUtils; import org.mxchange.jjobs.beans.BaseJobsBean; import org.mxchange.jjobs.beans.user.JobsUserWebRequestController; @@ -59,9 +56,10 @@ public class JobsResendLinkWebRequestBean extends BaseJobsBean implements JobsRe private String emailAddress; /** - * Locale instance + * Localization controller */ - private Locale locale; + @Inject + private JobsLocalizationSessionController localizationController; /** * EJB for resending confirmation link @@ -73,7 +71,7 @@ public class JobsResendLinkWebRequestBean extends BaseJobsBean implements JobsRe * Regular user controller */ @Inject - private JobsUserWebRequestController userController; + private JobsUserWebRequestController userListController; /** * Event being fired after confirmation link is being sent @@ -90,26 +88,6 @@ public class JobsResendLinkWebRequestBean extends BaseJobsBean implements JobsRe super(); } - /** - * Observer method for events being fired when the application's locale has - * been changed. - *

- * @param event Event being fired - */ - public void afterLocaleChangeEvent (@Observes final ObservableLocaleChangeEvent event) { - // Is the parameter valid? - if (null == event) { - // Throw NPE - throw new NullPointerException("event is null"); - } else if (event.getLocale() == null) { - // Throw NPE again - throw new NullPointerException("event.locale is null"); - } - - // Set it here - this.setLocale(event.getLocale()); - } - /** * Resends (new) confirmation link to given email address, if found. * Otherwise an exception is thrown. On success a redirect takes place. @@ -128,7 +106,7 @@ public class JobsResendLinkWebRequestBean extends BaseJobsBean implements JobsRe try { // Is the email address really not used? - user = this.userController.lookupUserByEmailAddress(this.getEmailAddress()); + user = this.userListController.lookupUserByEmailAddress(this.getEmailAddress()); } catch (final UserEmailAddressNotFoundException ex) { // Always clear bean this.clear(); @@ -166,7 +144,7 @@ public class JobsResendLinkWebRequestBean extends BaseJobsBean implements JobsRe final String baseUrl = FacesUtils.generateBaseUrl(); // Call EJB and return redirect target - managedUser = this.resendLinkBean.resendConfirmationLink(user, this.getLocale(), baseUrl); + managedUser = this.resendLinkBean.resendConfirmationLink(user, this.localizationController.getLocale(), baseUrl); } catch (final UserNotFoundException ex) { // User not found this.showFacesMessage("form_resend_link:resendEmailAddress", "ERROR_USER_NOT_FOUND", FacesMessage.SEVERITY_ERROR); //NOI18N @@ -213,22 +191,4 @@ public class JobsResendLinkWebRequestBean extends BaseJobsBean implements JobsRe this.setEmailAddress(null); } - /** - * Getter for locale instance - *

- * @return Locale instance - */ - private Locale getLocale () { - return this.locale; - } - - /** - * Setter for locale instance - *

- * @param locale Locale instance - */ - private void setLocale (final Locale locale) { - this.locale = locale; - } - } diff --git a/src/java/org/mxchange/jjobs/converter/user/JobsUserConverter.java b/src/java/org/mxchange/jjobs/converter/user/JobsUserConverter.java index 52349084..5050ed42 100644 --- a/src/java/org/mxchange/jjobs/converter/user/JobsUserConverter.java +++ b/src/java/org/mxchange/jjobs/converter/user/JobsUserConverter.java @@ -38,14 +38,14 @@ public class JobsUserConverter implements Converter { /** * User backing bean */ - private static JobsUserWebRequestController USER_CONTROLLER; + private static JobsUserWebRequestController USER_LIST_CONTROLLER; @Override public User getAsObject (final FacesContext context, final UIComponent component, final String submittedValue) { // Is the instance there? - if (null == USER_CONTROLLER) { + if (null == USER_LIST_CONTROLLER) { // Get bean from CDI directly - USER_CONTROLLER = CDI.current().select(JobsUserWebRequestBean.class).get(); + USER_LIST_CONTROLLER = CDI.current().select(JobsUserWebRequestBean.class).get(); } // Is the value null or empty? @@ -65,7 +65,7 @@ public class JobsUserConverter implements Converter { final Long userId = Long.valueOf(submittedValue); // Try to get user instance from it - user = USER_CONTROLLER.findUserById(userId); + user = USER_LIST_CONTROLLER.findUserById(userId); } catch (final NumberFormatException ex) { // Throw again throw new ConverterException(ex); diff --git a/src/java/org/mxchange/jjobs/validator/user/JobsUserIdValidator.java b/src/java/org/mxchange/jjobs/validator/user/JobsUserIdValidator.java index 4eed246d..2e0a6692 100644 --- a/src/java/org/mxchange/jjobs/validator/user/JobsUserIdValidator.java +++ b/src/java/org/mxchange/jjobs/validator/user/JobsUserIdValidator.java @@ -38,7 +38,7 @@ public class JobsUserIdValidator extends BaseNumberValidator { /** * User backing bean */ - private static JobsUserWebRequestController USER_CONTROLLER; + private static JobsUserWebRequestController USER_LIST_CONTROLLER; /** * Serial number @@ -54,16 +54,16 @@ public class JobsUserIdValidator extends BaseNumberValidator { super.preValidate(context, component, value, requiredFields, false); // Is the instance there? - if (null == USER_CONTROLLER) { + if (null == USER_LIST_CONTROLLER) { // Get bean from CDI directly - USER_CONTROLLER = CDI.current().select(JobsUserWebRequestBean.class).get(); + USER_LIST_CONTROLLER = CDI.current().select(JobsUserWebRequestBean.class).get(); } // Cast value final Long userId = (Long) value; // Define variable - final Boolean ifUserExists = USER_CONTROLLER.ifUserIdExists(userId); + final Boolean ifUserExists = USER_LIST_CONTROLLER.ifUserIdExists(userId); // Is the user id valid? if (!ifUserExists) { diff --git a/src/java/org/mxchange/localization/generic_de_DE.properties b/src/java/org/mxchange/localization/generic_de_DE.properties index a53e0cf4..b0c451f9 100644 --- a/src/java/org/mxchange/localization/generic_de_DE.properties +++ b/src/java/org/mxchange/localization/generic_de_DE.properties @@ -346,8 +346,10 @@ ENTRY_UPDATED_HEADER=Aktualisiert: ADMIN_LINK_EDIT_DELETE_MOBILE_PROVIDER_TITLE=Editieren oder l\u00f6schen des Handyanbieters ADMIN_USER_DATA_ENTER_PASSWORD=Passwort eingeben: ADMIN_USER_DATA_ENTER_PASSWORD_REPEAT=Passwort wiederholen: -ADMIN_LIST_USER_ID=Benutzer-Id: -ADMIN_LIST_USER_NAME=Benutzername: +DATA_USER_ID=Benutzer-Id: +DATA_USER_NAME=Benutzername: +#@TODO Please fix German umlauts! +CHANGE=Aendern? ADMIN_LIST_USER_PERSONAL_TITLE=Anrede: ADMIN_LIST_USER_FIRST_NAME=Vorname: ADMIN_LIST_USER_FAMILY_NAME=Nachname: @@ -367,14 +369,12 @@ ERROR_PARAMETER_USER_ID_NOT_SET=Fehler: Benutzer-Id nicht gesetzt (Parameter: us ERROR_USER_NOT_FOUND=Fehler: Benutzereintrag nicht gefunden. ADMIN_TABLE_SUMMARY_SHOW_USER_DATA=Diese Tabelle zeigt ein Benutzerprofil f\u00fcr administrative Zwecke an. ADMIN_SHOW_USER_HEADER=Benutzer {0} (Nummer {1}): -ADMIN_USER_ID=Benutzer-Id: -ADMIN_USER_NAME=Benutzername: ADMIN_USER_CREATED=Wann Benutzer erstellt: ADMIN_USER_UPDATED=Wann Benutzerdaten ge\u00e4ndert: ADMIN_USER_ACCOUNT_STATUS=Account-Status: ADMIN_USER_PROFILE_MODE=Profilmodus: -ADMIN_USER_LAST_LOCKED=Zuletzt gesperrt: -ADMIN_USER_LAST_LOCKED_REASON=Letzter Sperrgrund: +DATA_USER_LAST_LOCKED=Zuletzt gesperrt: +DATA_USER_LAST_LOCKED_REASON=Letzter Sperrgrund: ADMIN_CONTACT_IS_OWN_CONTACT=Eigenes Account: ADMIN_CONTACT_PERSONAL_TITLE=Anrede: ADMIN_CONTACT_ACADEMIC_TITLE=Akademischer Titel: diff --git a/src/java/org/mxchange/localization/generic_en_US.properties b/src/java/org/mxchange/localization/generic_en_US.properties index b7faeb42..63ca7b5b 100644 --- a/src/java/org/mxchange/localization/generic_en_US.properties +++ b/src/java/org/mxchange/localization/generic_en_US.properties @@ -320,8 +320,8 @@ ENTRY_UPDATED_HEADER=Updated: ADMIN_LINK_EDIT_DELETE_MOBILE_PROVIDER_TITLE=Edit or delete mobile provider ADMIN_USER_DATA_ENTER_PASSWORD=Enter password: ADMIN_USER_DATA_ENTER_PASSWORD_REPEAT=Repeat password: -ADMIN_LIST_USER_ID=User id: -ADMIN_LIST_USER_NAME=User name: +DATA_USER_ID=User id: +DATA_USER_NAME=User name: ADMIN_LIST_USER_PERSONAL_TITLE=Gender: ADMIN_LIST_USER_FIRST_NAME=First name: ADMIN_LIST_USER_FAMILY_NAME=Family name: @@ -338,14 +338,12 @@ ERROR_PARAMETER_USER_ID_NOT_SET=Error: User id not set (parameter userId). ERROR_USER_NOT_FOUND=Error: User entry not found. ADMIN_TABLE_SUMMARY_SHOW_USER_DATA=This table shows a single user profile for administrative purposes. ADMIN_SHOW_USER_HEADER=User {0} (id {1}): -ADMIN_USER_ID=User id: -ADMIN_USER_NAME=User name: ADMIN_USER_CREATED=When user created: ADMIN_USER_UPDATED=When user data updated: ADMIN_USER_ACCOUNT_STATUS=Account status: ADMIN_USER_PROFILE_MODE=Profile mode: -ADMIN_USER_LAST_LOCKED=Last locked: -ADMIN_USER_LAST_LOCKED_REASON=Last lock reason: +DATA_USER_LAST_LOCKED=Last locked: +DATA_USER_LAST_LOCKED_REASON=Last lock reason: ADMIN_CONTACT_IS_OWN_CONTACT=Own account: ADMIN_CONTACT_PERSONAL_TITLE=Gender: ADMIN_CONTACT_ACADEMIC_TITLE=Academic title: @@ -1137,3 +1135,4 @@ BARCODE=Barcode: ADMIN_CONTACT_DETAILS_HEADER=Contact data of {0} {1} {2}: ADMIN_DEPARTMENT_DETAILS_HEADER=Data of department {0} (Id {1}): ADMIN_HEADQUARTER_DETAILS_HEADER=Headquarter of {0} (Id {1})): +CHANGE=Change? diff --git a/web/WEB-INF/templates/admin/basic_data/admin_form_basic_data.tpl b/web/WEB-INF/templates/admin/basic_data/admin_form_basic_data.tpl index 6e0e18cf..a3926ae3 100644 --- a/web/WEB-INF/templates/admin/basic_data/admin_form_basic_data.tpl +++ b/web/WEB-INF/templates/admin/basic_data/admin_form_basic_data.tpl @@ -72,7 +72,7 @@ - + - + @@ -65,7 +65,7 @@ - + @@ -73,7 +73,7 @@ - + diff --git a/web/WEB-INF/templates/admin/user/admin_show_user_data_mini.tpl b/web/WEB-INF/templates/admin/user/admin_show_user_data_mini.tpl index 367fd341..23db73bd 100644 --- a/web/WEB-INF/templates/admin/user/admin_show_user_data_mini.tpl +++ b/web/WEB-INF/templates/admin/user/admin_show_user_data_mini.tpl @@ -23,7 +23,7 @@ - + - + diff --git a/web/admin/basic_data/admin_basic_data_list.xhtml b/web/admin/basic_data/admin_basic_data_list.xhtml index 7eca15cf..71952482 100644 --- a/web/admin/basic_data/admin_basic_data_list.xhtml +++ b/web/admin/basic_data/admin_basic_data_list.xhtml @@ -234,7 +234,7 @@ - + - + diff --git a/web/admin/user/admin_user_export.xhtml b/web/admin/user/admin_user_export.xhtml index 3de869dd..371842e4 100644 --- a/web/admin/user/admin_user_export.xhtml +++ b/web/admin/user/admin_user_export.xhtml @@ -22,7 +22,7 @@ - - + + - + + + + + + + + + + - + + + + + + + + + + + + + + + + + + - + + + + + + + @@ -194,6 +267,33 @@ + + + + + + + + + + + + + + + + diff --git a/web/admin/user/admin_user_unlock.xhtml b/web/admin/user/admin_user_unlock.xhtml index 3cee469f..0958cd5f 100644 --- a/web/admin/user/admin_user_unlock.xhtml +++ b/web/admin/user/admin_user_unlock.xhtml @@ -84,7 +84,7 @@

- +
@@ -96,7 +96,7 @@
- +
diff --git a/web/guest/user/user_list.xhtml b/web/guest/user/user_list.xhtml index 5222b035..66a2339d 100644 --- a/web/guest/user/user_list.xhtml +++ b/web/guest/user/user_list.xhtml @@ -32,7 +32,7 @@