From 16981a0d442a051e32d8e6f844de3a3741cd3937 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Thu, 16 Apr 2020 22:04:23 +0200 Subject: [PATCH] Please cherry-pick: - renamed allFoos() to fetchAllFoos() - cleanup of deprecated/no longer needed business methods as fetchAllFoos() can be used instead - splitted mobile number relevant business methods into separate EJB, this allows better load-balancing on servers with many CPU cores - UserLoginSessionBean is now superflous and can be removed MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Roland Häder --- .../FinancialsAdminContactSessionBean.java | 2 +- .../contact/FinancialsContactSessionBean.java | 55 +--- ...inancialsAdminBusinessDataSessionBean.java | 4 +- .../FinancialsBusinessDataSessionBean.java | 2 +- ...inancialsAdminBranchOfficeSessionBean.java | 4 +- .../FinancialsBranchOfficeSessionBean.java | 2 +- .../FinancialsAdminDepartmentSessionBean.java | 2 +- .../FinancialsDepartmentSessionBean.java | 2 +- .../FinancialsAdminEmployeeSessionBean.java | 4 +- .../FinancialsEmployeeSessionBean.java | 2 +- ...FinancialsAdminHeadquarterSessionBean.java | 2 +- .../FinancialsHeadquarterSessionBean.java | 2 +- ...inancialsAdminOpeningTimesSessionBean.java | 6 +- .../FinancialsOpeningTimesSessionBean.java | 2 +- .../FinancialsAdminCountrySingletonBean.java | 2 +- .../data/FinancialsCountrySingletonBean.java | 2 +- .../FinancialsAdminMobileSessionBean.java | 139 +++++++++ .../mobile/FinancialsMobileSessionBean.java | 65 +++++ ...FinancialsMobileProviderSingletonBean.java | 2 +- .../FinancialsAdminPhoneSessionBean.java | 96 ------- .../phone/FinancialsPhoneSessionBean.java | 25 +- .../model/user/FinancialsUserSessionBean.java | 264 ++++-------------- .../FinancialsUserEmailChangeSessionBean.java | 88 +++--- ...ancialsUserPasswordHistorySessionBean.java | 2 +- .../login/FinancialsUserLoginSessionBean.java | 140 ---------- 25 files changed, 324 insertions(+), 592 deletions(-) create mode 100644 src/java/org/mxchange/jphone/model/phonenumbers/mobile/FinancialsAdminMobileSessionBean.java create mode 100644 src/java/org/mxchange/jphone/model/phonenumbers/mobile/FinancialsMobileSessionBean.java delete mode 100644 src/java/org/mxchange/juserlogincore/model/user/login/FinancialsUserLoginSessionBean.java diff --git a/src/java/org/mxchange/jcontacts/model/contact/FinancialsAdminContactSessionBean.java b/src/java/org/mxchange/jcontacts/model/contact/FinancialsAdminContactSessionBean.java index 043f585..fdc3ea9 100644 --- a/src/java/org/mxchange/jcontacts/model/contact/FinancialsAdminContactSessionBean.java +++ b/src/java/org/mxchange/jcontacts/model/contact/FinancialsAdminContactSessionBean.java @@ -130,7 +130,7 @@ public class FinancialsAdminContactSessionBean extends BaseFinancialsEnterpriseB boolean isFound = false; // Fest all entries and iterate over them - for (final Contact currentContact : this.contactBean.allContacts()) { + for (final Contact currentContact : this.contactBean.fetchAllContacts()) { // Is found? if (Objects.equals(contact, currentContact)) { // Yes, found the same diff --git a/src/java/org/mxchange/jcontacts/model/contact/FinancialsContactSessionBean.java b/src/java/org/mxchange/jcontacts/model/contact/FinancialsContactSessionBean.java index a9d9cd3..8c9ad51 100644 --- a/src/java/org/mxchange/jcontacts/model/contact/FinancialsContactSessionBean.java +++ b/src/java/org/mxchange/jcontacts/model/contact/FinancialsContactSessionBean.java @@ -18,7 +18,6 @@ package org.mxchange.jcontacts.model.contact; import java.text.MessageFormat; import java.util.List; -import java.util.Objects; import javax.ejb.Stateless; import javax.persistence.NoResultException; import javax.persistence.Query; @@ -48,7 +47,7 @@ public class FinancialsContactSessionBean extends BaseFinancialsEnterpriseBean i @Override @SuppressWarnings ("unchecked") - public List allContacts () { + public List fetchAllContacts () { // Log trace message this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getAllContacts - CALLED!", this.getClass().getSimpleName())); //NOI18N @@ -65,58 +64,6 @@ public class FinancialsContactSessionBean extends BaseFinancialsEnterpriseBean i return contacts; } - @Override - public Contact lookupContact (final Contact contact) { - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isContactFound: contact={1} - CALLED!", this.getClass().getSimpleName(), contact)); //NOI18N - - // Parameter should be valid - if (null == contact) { - // Throw NPE - throw new NullPointerException("contact is null"); //NOI18N - } else if ((contact.getContactId() instanceof Long) && (contact.getContactId() > 0)) { - try { - // Id set, ask other method - return this.findContactById(contact.getContactId()); - } catch (final ContactNotFoundException ex) { - // Not found, should not happen - throw new IllegalStateException(MessageFormat.format("contact.contactId={0} is set, but not found.", contact.getContactId()), ex); //NOI18N - } - } - - // Default is not found - Contact foundContact = null; - - // Get whole list - final List contacts = this.allContacts(); - - // Is the list empty? - if (contacts.isEmpty()) { - // Then abort here - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isContactFound: No contacts registered, returning NULL ...", this.getClass().getSimpleName())); //NOI18N - return null; - } - - // Loop through all - for (final Contact currentContact : contacts) { - // Is same contact? - if ((Objects.equals(contact, currentContact)) || (Contacts.isSameContact(contact, currentContact))) { - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.isContactFound: Found same contact: contactId={1}", this.getClass().getSimpleName(), currentContact.getContactId())); //NOI18N - - // Found it - foundContact = currentContact; - break; - } - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isContactFound: foundContact={1} - EXIT!", this.getClass().getSimpleName(), foundContact)); //NOI18N - - // Return found contact - return foundContact; - } - @Override public Contact updateContactData (final Contact contact, final boolean isCellphoneUnlinked, final boolean isLandlineUnlinked, final boolean isFaxUnlinked) { // Log trace message diff --git a/src/java/org/mxchange/jcontactsbusiness/model/basicdata/FinancialsAdminBusinessDataSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/basicdata/FinancialsAdminBusinessDataSessionBean.java index d9c2634..b4f38cb 100644 --- a/src/java/org/mxchange/jcontactsbusiness/model/basicdata/FinancialsAdminBusinessDataSessionBean.java +++ b/src/java/org/mxchange/jcontactsbusiness/model/basicdata/FinancialsAdminBusinessDataSessionBean.java @@ -147,7 +147,7 @@ public class FinancialsAdminBusinessDataSessionBean extends BaseFinancialsEnterp boolean isFound = false; // Then check each entry - for (final BasicData currentBasicData : this.businessDataBean.allBusinessBasicData()) { + for (final BasicData currentBasicData : this.businessDataBean.fetchAllBusinessBasicData()) { // Is the company name matching? if (Objects.equals(currentBasicData.getCompanyName(), basicData.getCompanyName())) { // Found match @@ -171,7 +171,7 @@ public class FinancialsAdminBusinessDataSessionBean extends BaseFinancialsEnterp boolean isFound = false; // Then check each entry - for (final BasicData currentBasicData : this.businessDataBean.allBusinessBasicData()) { + for (final BasicData currentBasicData : this.businessDataBean.fetchAllBusinessBasicData()) { // Is the company name matching? if (Objects.equals(currentBasicData.getCompanyShortName(), basicData.getCompanyShortName())) { // Found match diff --git a/src/java/org/mxchange/jcontactsbusiness/model/basicdata/FinancialsBusinessDataSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/basicdata/FinancialsBusinessDataSessionBean.java index bedbc1e..67d5f70 100644 --- a/src/java/org/mxchange/jcontactsbusiness/model/basicdata/FinancialsBusinessDataSessionBean.java +++ b/src/java/org/mxchange/jcontactsbusiness/model/basicdata/FinancialsBusinessDataSessionBean.java @@ -45,7 +45,7 @@ public class FinancialsBusinessDataSessionBean extends BaseFinancialsEnterpriseB @Override @SuppressWarnings ("unchecked") - public List allBusinessBasicData () { + public List fetchAllBusinessBasicData () { // Trace message this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allBusinessContacts: CALLED!", this.getClass().getSimpleName())); //NOI18N diff --git a/src/java/org/mxchange/jcontactsbusiness/model/branchoffice/FinancialsAdminBranchOfficeSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/branchoffice/FinancialsAdminBranchOfficeSessionBean.java index 39e0d56..41584c2 100644 --- a/src/java/org/mxchange/jcontactsbusiness/model/branchoffice/FinancialsAdminBranchOfficeSessionBean.java +++ b/src/java/org/mxchange/jcontactsbusiness/model/branchoffice/FinancialsAdminBranchOfficeSessionBean.java @@ -73,7 +73,7 @@ public class FinancialsAdminBranchOfficeSessionBean extends BaseFinancialsEnterp } // Add created timestamp - branchOffice.setBranchCreated(new Date()); + branchOffice.setBranchEntryCreated(new Date()); // Is user instance set? if (branchOffice.getBranchCompany() instanceof BasicData) { @@ -141,7 +141,7 @@ public class FinancialsAdminBranchOfficeSessionBean extends BaseFinancialsEnterp */ private boolean isBranchOfficeFound (final BranchOffice branchOffice) { // Get whole list - final List branchOffices = this.branchOfficeBean.allBranchOffices(); + final List branchOffices = this.branchOfficeBean.fetchAllBranchOffices(); // Default is not found boolean isFound = false; diff --git a/src/java/org/mxchange/jcontactsbusiness/model/branchoffice/FinancialsBranchOfficeSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/branchoffice/FinancialsBranchOfficeSessionBean.java index 3d47c05..ae95ba6 100644 --- a/src/java/org/mxchange/jcontactsbusiness/model/branchoffice/FinancialsBranchOfficeSessionBean.java +++ b/src/java/org/mxchange/jcontactsbusiness/model/branchoffice/FinancialsBranchOfficeSessionBean.java @@ -37,7 +37,7 @@ public class FinancialsBranchOfficeSessionBean extends BaseFinancialsEnterpriseB @Override @SuppressWarnings ("unchecked") - public List allBranchOffices () { + public List fetchAllBranchOffices () { // Trace message this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allBranchOffices: CALLED!", this.getClass().getSimpleName())); //NOI18N diff --git a/src/java/org/mxchange/jcontactsbusiness/model/department/FinancialsAdminDepartmentSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/department/FinancialsAdminDepartmentSessionBean.java index e275285..f23f267 100644 --- a/src/java/org/mxchange/jcontactsbusiness/model/department/FinancialsAdminDepartmentSessionBean.java +++ b/src/java/org/mxchange/jcontactsbusiness/model/department/FinancialsAdminDepartmentSessionBean.java @@ -154,7 +154,7 @@ public class FinancialsAdminDepartmentSessionBean extends BaseFinancialsEnterpri */ private boolean isDepartmentFound (final Department department) { // Get whole list - final List departments = this.departmentBean.allDepartments(); + final List departments = this.departmentBean.fetchAllDepartments(); // Default is not found boolean isFound = false; diff --git a/src/java/org/mxchange/jcontactsbusiness/model/department/FinancialsDepartmentSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/department/FinancialsDepartmentSessionBean.java index ea9f9ef..d64b761 100644 --- a/src/java/org/mxchange/jcontactsbusiness/model/department/FinancialsDepartmentSessionBean.java +++ b/src/java/org/mxchange/jcontactsbusiness/model/department/FinancialsDepartmentSessionBean.java @@ -37,7 +37,7 @@ public class FinancialsDepartmentSessionBean extends BaseFinancialsEnterpriseBea @Override @SuppressWarnings ("unchecked") - public List allDepartments () { + public List fetchAllDepartments () { // Trace message this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allDepartments: CALLED!", this.getClass().getSimpleName())); //NOI18N diff --git a/src/java/org/mxchange/jcontactsbusiness/model/employee/FinancialsAdminEmployeeSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/employee/FinancialsAdminEmployeeSessionBean.java index 480ebf0..74ca845 100644 --- a/src/java/org/mxchange/jcontactsbusiness/model/employee/FinancialsAdminEmployeeSessionBean.java +++ b/src/java/org/mxchange/jcontactsbusiness/model/employee/FinancialsAdminEmployeeSessionBean.java @@ -207,7 +207,7 @@ public class FinancialsAdminEmployeeSessionBean extends BaseFinancialsEnterprise } // Set created timestamp - employee.setEmployeeCreated(new Date()); + employee.setEmployeeEntryCreated(new Date()); // Persist it this.getEntityManager().persist(employee); @@ -231,7 +231,7 @@ public class FinancialsAdminEmployeeSessionBean extends BaseFinancialsEnterprise boolean isFound = false; // Check all entries - for (final Employable otherEmployee : this.employeeBean.allEmployees()) { + for (final Employable otherEmployee : this.employeeBean.fetchAllEmployees()) { // Is same found? if (Employees.isSameEmployeeFound(employee, otherEmployee)) { // Found it diff --git a/src/java/org/mxchange/jcontactsbusiness/model/employee/FinancialsEmployeeSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/employee/FinancialsEmployeeSessionBean.java index 0c8d816..85aa625 100644 --- a/src/java/org/mxchange/jcontactsbusiness/model/employee/FinancialsEmployeeSessionBean.java +++ b/src/java/org/mxchange/jcontactsbusiness/model/employee/FinancialsEmployeeSessionBean.java @@ -44,7 +44,7 @@ public class FinancialsEmployeeSessionBean extends BaseFinancialsEnterpriseBean @Override @SuppressWarnings ("unchecked") - public List allEmployees () { + public List fetchAllEmployees () { // Trace message this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allEmployees(): CALLED!", this.getClass().getSimpleName())); //NOI18N diff --git a/src/java/org/mxchange/jcontactsbusiness/model/headquarter/FinancialsAdminHeadquarterSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/headquarter/FinancialsAdminHeadquarterSessionBean.java index 9258b04..307ca37 100644 --- a/src/java/org/mxchange/jcontactsbusiness/model/headquarter/FinancialsAdminHeadquarterSessionBean.java +++ b/src/java/org/mxchange/jcontactsbusiness/model/headquarter/FinancialsAdminHeadquarterSessionBean.java @@ -131,7 +131,7 @@ public class FinancialsAdminHeadquarterSessionBean extends BaseFinancialsEnterpr */ private boolean isHeadquarterFound (final Headquarter headquarter) { // Get whole list - final List headquarters = this.headquarterBean.allHeadquarters(); + final List headquarters = this.headquarterBean.fetchAllHeadquarters(); // Default is not found boolean isFound = false; diff --git a/src/java/org/mxchange/jcontactsbusiness/model/headquarter/FinancialsHeadquarterSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/headquarter/FinancialsHeadquarterSessionBean.java index 261e6b1..37094d7 100644 --- a/src/java/org/mxchange/jcontactsbusiness/model/headquarter/FinancialsHeadquarterSessionBean.java +++ b/src/java/org/mxchange/jcontactsbusiness/model/headquarter/FinancialsHeadquarterSessionBean.java @@ -39,7 +39,7 @@ public class FinancialsHeadquarterSessionBean extends BaseFinancialsEnterpriseBe @Override @SuppressWarnings ("unchecked") - public List allHeadquarters () { + public List fetchAllHeadquarters () { // Trace message this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allHeadquarters: CALLED!", this.getClass().getSimpleName())); //NOI18N diff --git a/src/java/org/mxchange/jcontactsbusiness/model/opening_time/FinancialsAdminOpeningTimesSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/opening_time/FinancialsAdminOpeningTimesSessionBean.java index d270550..ea9749b 100644 --- a/src/java/org/mxchange/jcontactsbusiness/model/opening_time/FinancialsAdminOpeningTimesSessionBean.java +++ b/src/java/org/mxchange/jcontactsbusiness/model/opening_time/FinancialsAdminOpeningTimesSessionBean.java @@ -51,7 +51,7 @@ public class FinancialsAdminOpeningTimesSessionBean extends BaseFinancialsEnterp if (null == openingTime) { // Throw NPE throw new NullPointerException("openingTime is null"); //NOI18N - } else if (openingTime.getOpeningId() instanceof Long) { + } else if (openingTime.getOpeningTimeId() instanceof Long) { // Should not happen throw new IllegalArgumentException("openingTime.openingId should not be set."); //NOI18N } else if (openingTime.getOpeningStartDay()== null) { @@ -69,13 +69,13 @@ public class FinancialsAdminOpeningTimesSessionBean extends BaseFinancialsEnterp } // Set created timestamp - openingTime.setOpeningCreated(new Date()); + openingTime.setOpeningTimeEntryCreated(new Date()); // Persist it this.getEntityManager().persist(openingTime); // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.addOpeningTimes(): openingTime.openingId={1} - EXIT!", this.getClass().getSimpleName(), openingTime.getOpeningId())); //NOI18N + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.addOpeningTimes(): openingTime.openingId={1} - EXIT!", this.getClass().getSimpleName(), openingTime.getOpeningTimeId())); //NOI18N // Return updated instance return openingTime; diff --git a/src/java/org/mxchange/jcontactsbusiness/model/opening_time/FinancialsOpeningTimesSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/model/opening_time/FinancialsOpeningTimesSessionBean.java index 713fef3..c87d2ea 100644 --- a/src/java/org/mxchange/jcontactsbusiness/model/opening_time/FinancialsOpeningTimesSessionBean.java +++ b/src/java/org/mxchange/jcontactsbusiness/model/opening_time/FinancialsOpeningTimesSessionBean.java @@ -37,7 +37,7 @@ public class FinancialsOpeningTimesSessionBean extends BaseFinancialsEnterpriseB @Override @SuppressWarnings ("unchecked") - public List allOpeningTimes () { + public List fetchAllOpeningTimes () { // Trace message this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allOpeningTimes: CALLED!", this.getClass().getSimpleName())); //NOI18N diff --git a/src/java/org/mxchange/jcountry/model/data/FinancialsAdminCountrySingletonBean.java b/src/java/org/mxchange/jcountry/model/data/FinancialsAdminCountrySingletonBean.java index a0a608f..766d655 100644 --- a/src/java/org/mxchange/jcountry/model/data/FinancialsAdminCountrySingletonBean.java +++ b/src/java/org/mxchange/jcountry/model/data/FinancialsAdminCountrySingletonBean.java @@ -114,7 +114,7 @@ public class FinancialsAdminCountrySingletonBean extends BaseFinancialsEnterpris boolean isAdded = false; // Try to match code/i18n key (should be both unique!) - for (final Country currentCountry : this.countryBean.allCountries()) { + for (final Country currentCountry : this.countryBean.fetchAllCountries()) { // Is it matching if (Objects.equals(country, currentCountry)) { // Yes, then set flag and abort loop diff --git a/src/java/org/mxchange/jcountry/model/data/FinancialsCountrySingletonBean.java b/src/java/org/mxchange/jcountry/model/data/FinancialsCountrySingletonBean.java index 21b6438..6d51e08 100644 --- a/src/java/org/mxchange/jcountry/model/data/FinancialsCountrySingletonBean.java +++ b/src/java/org/mxchange/jcountry/model/data/FinancialsCountrySingletonBean.java @@ -47,7 +47,7 @@ public class FinancialsCountrySingletonBean extends BaseFinancialsEnterpriseBean @Override @SuppressWarnings ("unchecked") - public List allCountries () { + public List fetchAllCountries () { // Trace message this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allCountries: CALLED!", this.getClass().getSimpleName())); //NOI18N diff --git a/src/java/org/mxchange/jphone/model/phonenumbers/mobile/FinancialsAdminMobileSessionBean.java b/src/java/org/mxchange/jphone/model/phonenumbers/mobile/FinancialsAdminMobileSessionBean.java new file mode 100644 index 0000000..5040db6 --- /dev/null +++ b/src/java/org/mxchange/jphone/model/phonenumbers/mobile/FinancialsAdminMobileSessionBean.java @@ -0,0 +1,139 @@ +/* + * 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.jphone.model.phonenumbers.mobile; + +import java.text.MessageFormat; +import java.util.Date; +import javax.ejb.Stateless; +import org.mxchange.jfinancials.enterprise.BaseFinancialsEnterpriseBean; + +/** + * An EJB for administrative mobile number purposes + *

+ * @author Roland Häder + */ +@Stateless (name = "adminMobile", description = "An administrative bean handling mobile number data") +public class FinancialsAdminMobileSessionBean extends BaseFinancialsEnterpriseBean implements AdminMobileSessionBeanRemote { + + /** + * Serial number + */ + private static final long serialVersionUID = 18_597_165_817_401_854L; + + /** + * Default constructor + */ + public FinancialsAdminMobileSessionBean () { + // Call super constructor + super(); + } + + @Override + public void deleteMobileData (final DialableMobileNumber mobileNumber) { + // Trace message + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.deleteMobileData: mobileNumber={1} - CALLED!", this.getClass().getSimpleName(), mobileNumber)); + + // Is all data set + if (null == mobileNumber) { + // Not set, throw NPE + throw new NullPointerException("mobileNumber is null"); //NOI18N + } else if (mobileNumber.getMobileId() == null) { + // Throw NPE again + throw new NullPointerException("mobileNumber.phoneId is null"); //NOI18N + } else if (mobileNumber.getMobileId() < 1) { + // Invalid number + throw new IllegalArgumentException(MessageFormat.format("mobileNumber.phoneId={0} is not valid", mobileNumber.getMobileId())); //NOI18N + } else if (mobileNumber.getMobileProvider() == null) { + // Throw NPE + throw new NullPointerException("mobileNumber.cellphoneProvider is null"); //NOI18N + } else if (mobileNumber.getMobileProvider().getProviderId() == null) { + // ... throw again + throw new NullPointerException("mobileNumber.cellphoneProvider.providerId is null"); //NOI18N + } else if (mobileNumber.getMobileProvider().getProviderId() < 1) { + // Id not valid + throw new IllegalArgumentException(MessageFormat.format("mobileNumber.cellphoneProvider.providerId={0} is not valid.", mobileNumber.getMobileProvider().getProviderId())); //NOI18N + } else if (mobileNumber.getMobileNumber() == null) { + // Throw NPE again + throw new NullPointerException("mobileNumber.mobileNumber is null"); //NOI18N + } else if (mobileNumber.getMobileNumber() < 1) { + // Throw NPE again + throw new NullPointerException(MessageFormat.format("mobileNumber.mobileNumber={0} is not valid.", mobileNumber.getMobileNumber())); //NOI18N + } + + // Get a managed instance + final DialableMobileNumber managedNumber = this.getEntityManager().getReference(mobileNumber.getClass(), mobileNumber.getMobileId()); + + // Remove it from database + this.getEntityManager().remove(managedNumber); + + // Trace message + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.deleteMobileData: EXIT!", this.getClass().getSimpleName())); + } + + @Override + public DialableMobileNumber updateMobileData (final DialableMobileNumber mobileNumber) { + // Trace message + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.updateMobileData: mobileNumber={1} - CALLED!", this.getClass().getSimpleName(), mobileNumber)); + + // Is all data set + if (null == mobileNumber) { + // Not set, throw NPE + throw new NullPointerException("mobileNumber is null"); //NOI18N + } else if (mobileNumber.getMobileId() == null) { + // Throw NPE again + throw new NullPointerException("mobileNumber.phoneId is null"); //NOI18N + } else if (mobileNumber.getMobileId() < 1) { + // Invalid number + throw new IllegalArgumentException(MessageFormat.format("mobileNumber.phoneId={0} is not valid", mobileNumber.getMobileId())); //NOI18N + } else if (mobileNumber.getMobileProvider() == null) { + // Throw NPE + throw new NullPointerException("mobileNumber.cellphoneProvider is null"); //NOI18N + } else if (mobileNumber.getMobileProvider().getProviderId() == null) { + // ... throw again + throw new NullPointerException("mobileNumber.cellphoneProvider.providerId is null"); //NOI18N + } else if (mobileNumber.getMobileProvider().getProviderId() < 1) { + // Id not valid + throw new IllegalArgumentException(MessageFormat.format("mobileNumber.cellphoneProvider.providerId={0} is not valid.", mobileNumber.getMobileProvider().getProviderId())); //NOI18N + } else if (mobileNumber.getMobileNumber() == null) { + // Throw NPE again + throw new NullPointerException("mobileNumber.mobileNumber is null"); //NOI18N + } else if (mobileNumber.getMobileNumber() < 1) { + // Throw NPE again + throw new NullPointerException(MessageFormat.format("mobileNumber.mobileNumber={0} is not valid.", mobileNumber.getMobileNumber())); //NOI18N + } + + // Get contact from it and find it + final DialableMobileNumber managedNumber = this.getEntityManager().find(mobileNumber.getClass(), mobileNumber.getMobileId()); + + // Should be found + assert (managedNumber instanceof DialableMobileNumber) : MessageFormat.format("Cell phone number with id {0} not found, but should be.", mobileNumber.getMobileId()); //NOI18N + + // Debug message + this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.updateMobileData: managedNumber.phoneId={1}", this.getClass().getSimpleName(), managedNumber.getMobileId())); //NOI18N + + // Set updated timestamp + MobileNumbers.copyMobileNumber(mobileNumber, managedNumber); + managedNumber.setMobileEntryUpdated(new Date()); + + // Trace message + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.updateMobileData: managedNumber={1} - EXIT!", this.getClass().getSimpleName(), managedNumber)); //NOI18N + + // Return it + return managedNumber; + } + +} diff --git a/src/java/org/mxchange/jphone/model/phonenumbers/mobile/FinancialsMobileSessionBean.java b/src/java/org/mxchange/jphone/model/phonenumbers/mobile/FinancialsMobileSessionBean.java new file mode 100644 index 0000000..8e2e899 --- /dev/null +++ b/src/java/org/mxchange/jphone/model/phonenumbers/mobile/FinancialsMobileSessionBean.java @@ -0,0 +1,65 @@ +/* + * 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.jphone.model.phonenumbers.mobile; + +import java.text.MessageFormat; +import java.util.List; +import javax.ejb.Stateless; +import javax.persistence.Query; +import org.mxchange.jfinancials.enterprise.BaseFinancialsEnterpriseBean; + +/** + * A general mobile number EJB + *

+ * @author Roland Häder + */ +@Stateless (name = "mobile", description = "A bean handling mobile number data") +public class FinancialsMobileSessionBean extends BaseFinancialsEnterpriseBean implements MobileSessionBeanRemote { + + /** + * Serial number + */ + private static final long serialVersionUID = 134_945_698_127_602L; + + /** + * Default constructor + */ + public FinancialsMobileSessionBean () { + // Call super constructor + super(); + } + + @SuppressWarnings ("unchecked") + @Override + public List fetchAllMobileNumbers () { + // Trace message + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allMobileNumbers: CALLED!", this.getClass().getSimpleName())); //NOI18N + + // Get query + final Query query = this.getEntityManager().createNamedQuery("AllMobileNumbers", MobileNumber.class); //NOI18N + + // Get list from it + final List list = query.getResultList(); + + // Trace message + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allMobileNumbers: list.size()={1} - EXIT!", this.getClass().getSimpleName(), list.size())); //NOI18N + + // Return it + return list; + } + +} diff --git a/src/java/org/mxchange/jphone/model/phonenumbers/mobileprovider/FinancialsMobileProviderSingletonBean.java b/src/java/org/mxchange/jphone/model/phonenumbers/mobileprovider/FinancialsMobileProviderSingletonBean.java index 24d1a55..343b1c4 100644 --- a/src/java/org/mxchange/jphone/model/phonenumbers/mobileprovider/FinancialsMobileProviderSingletonBean.java +++ b/src/java/org/mxchange/jphone/model/phonenumbers/mobileprovider/FinancialsMobileProviderSingletonBean.java @@ -47,7 +47,7 @@ public class FinancialsMobileProviderSingletonBean extends BaseFinancialsEnterpr @Override @SuppressWarnings ("unchecked") - public List allMobileProviders () { + public List fetchAllMobileProviders () { // Trace message this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allMobileProvider: CALLED!", this.getClass().getSimpleName())); //NOI18N diff --git a/src/java/org/mxchange/jphone/model/phonenumbers/phone/FinancialsAdminPhoneSessionBean.java b/src/java/org/mxchange/jphone/model/phonenumbers/phone/FinancialsAdminPhoneSessionBean.java index 45a5438..b8dde26 100644 --- a/src/java/org/mxchange/jphone/model/phonenumbers/phone/FinancialsAdminPhoneSessionBean.java +++ b/src/java/org/mxchange/jphone/model/phonenumbers/phone/FinancialsAdminPhoneSessionBean.java @@ -24,8 +24,6 @@ import org.mxchange.jphone.model.phonenumbers.fax.DialableFaxNumber; import org.mxchange.jphone.model.phonenumbers.fax.FaxNumbers; import org.mxchange.jphone.model.phonenumbers.landline.DialableLandLineNumber; import org.mxchange.jphone.model.phonenumbers.landline.LandLineNumbers; -import org.mxchange.jphone.model.phonenumbers.mobile.DialableMobileNumber; -import org.mxchange.jphone.model.phonenumbers.mobile.MobileNumbers; /** * An EJB for administrative phone purposes @@ -144,48 +142,6 @@ public class FinancialsAdminPhoneSessionBean extends BaseFinancialsEnterpriseBea this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.deleteMobileData: EXIT!", this.getClass().getSimpleName())); } - @Override - public void deleteMobileData (final DialableMobileNumber mobileNumber) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.deleteMobileData: mobileNumber={1} - CALLED!", this.getClass().getSimpleName(), mobileNumber)); - - // Is all data set - if (null == mobileNumber) { - // Not set, throw NPE - throw new NullPointerException("mobileNumber is null"); //NOI18N - } else if (mobileNumber.getMobileId() == null) { - // Throw NPE again - throw new NullPointerException("mobileNumber.phoneId is null"); //NOI18N - } else if (mobileNumber.getMobileId() < 1) { - // Invalid number - throw new IllegalArgumentException(MessageFormat.format("mobileNumber.phoneId={0} is not valid", mobileNumber.getMobileId())); //NOI18N - } else if (mobileNumber.getMobileProvider() == null) { - // Throw NPE - throw new NullPointerException("mobileNumber.cellphoneProvider is null"); //NOI18N - } else if (mobileNumber.getMobileProvider().getProviderId() == null) { - // ... throw again - throw new NullPointerException("mobileNumber.cellphoneProvider.providerId is null"); //NOI18N - } else if (mobileNumber.getMobileProvider().getProviderId() < 1) { - // Id not valid - throw new IllegalArgumentException(MessageFormat.format("mobileNumber.cellphoneProvider.providerId={0} is not valid.", mobileNumber.getMobileProvider().getProviderId())); //NOI18N - } else if (mobileNumber.getMobileNumber() == null) { - // Throw NPE again - throw new NullPointerException("mobileNumber.mobileNumber is null"); //NOI18N - } else if (mobileNumber.getMobileNumber() < 1) { - // Throw NPE again - throw new NullPointerException(MessageFormat.format("mobileNumber.mobileNumber={0} is not valid.", mobileNumber.getMobileNumber())); //NOI18N - } - - // Get a managed instance - final DialableMobileNumber managedNumber = this.getEntityManager().getReference(mobileNumber.getClass(), mobileNumber.getMobileId()); - - // Remove it from database - this.getEntityManager().remove(managedNumber); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.deleteMobileData: EXIT!", this.getClass().getSimpleName())); - } - @Override public DialableFaxNumber updateFaxData (final DialableFaxNumber faxNumber) { // Trace message @@ -302,56 +258,4 @@ public class FinancialsAdminPhoneSessionBean extends BaseFinancialsEnterpriseBea return managedNumber; } - @Override - public DialableMobileNumber updateMobileData (final DialableMobileNumber mobileNumber) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.updateMobileData: mobileNumber={1} - CALLED!", this.getClass().getSimpleName(), mobileNumber)); - - // Is all data set - if (null == mobileNumber) { - // Not set, throw NPE - throw new NullPointerException("mobileNumber is null"); //NOI18N - } else if (mobileNumber.getMobileId() == null) { - // Throw NPE again - throw new NullPointerException("mobileNumber.phoneId is null"); //NOI18N - } else if (mobileNumber.getMobileId() < 1) { - // Invalid number - throw new IllegalArgumentException(MessageFormat.format("mobileNumber.phoneId={0} is not valid", mobileNumber.getMobileId())); //NOI18N - } else if (mobileNumber.getMobileProvider() == null) { - // Throw NPE - throw new NullPointerException("mobileNumber.cellphoneProvider is null"); //NOI18N - } else if (mobileNumber.getMobileProvider().getProviderId() == null) { - // ... throw again - throw new NullPointerException("mobileNumber.cellphoneProvider.providerId is null"); //NOI18N - } else if (mobileNumber.getMobileProvider().getProviderId() < 1) { - // Id not valid - throw new IllegalArgumentException(MessageFormat.format("mobileNumber.cellphoneProvider.providerId={0} is not valid.", mobileNumber.getMobileProvider().getProviderId())); //NOI18N - } else if (mobileNumber.getMobileNumber() == null) { - // Throw NPE again - throw new NullPointerException("mobileNumber.mobileNumber is null"); //NOI18N - } else if (mobileNumber.getMobileNumber() < 1) { - // Throw NPE again - throw new NullPointerException(MessageFormat.format("mobileNumber.mobileNumber={0} is not valid.", mobileNumber.getMobileNumber())); //NOI18N - } - - // Get contact from it and find it - final DialableMobileNumber managedNumber = this.getEntityManager().find(mobileNumber.getClass(), mobileNumber.getMobileId()); - - // Should be found - assert (managedNumber instanceof DialableMobileNumber) : MessageFormat.format("Cell phone number with id {0} not found, but should be.", mobileNumber.getMobileId()); //NOI18N - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.updateMobileData: managedNumber.phoneId={1}", this.getClass().getSimpleName(), managedNumber.getMobileId())); //NOI18N - - // Set updated timestamp - MobileNumbers.copyMobileNumber(mobileNumber, managedNumber); - managedNumber.setMobileEntryUpdated(new Date()); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.updateMobileData: managedNumber={1} - EXIT!", this.getClass().getSimpleName(), managedNumber)); //NOI18N - - // Return it - return managedNumber; - } - } diff --git a/src/java/org/mxchange/jphone/model/phonenumbers/phone/FinancialsPhoneSessionBean.java b/src/java/org/mxchange/jphone/model/phonenumbers/phone/FinancialsPhoneSessionBean.java index 6452e8e..653850b 100644 --- a/src/java/org/mxchange/jphone/model/phonenumbers/phone/FinancialsPhoneSessionBean.java +++ b/src/java/org/mxchange/jphone/model/phonenumbers/phone/FinancialsPhoneSessionBean.java @@ -25,8 +25,6 @@ import org.mxchange.jphone.model.phonenumbers.fax.DialableFaxNumber; import org.mxchange.jphone.model.phonenumbers.fax.FaxNumber; import org.mxchange.jphone.model.phonenumbers.landline.DialableLandLineNumber; import org.mxchange.jphone.model.phonenumbers.landline.LandLineNumber; -import org.mxchange.jphone.model.phonenumbers.mobile.DialableMobileNumber; -import org.mxchange.jphone.model.phonenumbers.mobile.MobileNumber; /** * A general phone EJB @@ -51,7 +49,7 @@ public class FinancialsPhoneSessionBean extends BaseFinancialsEnterpriseBean imp @SuppressWarnings ("unchecked") @Override - public List allFaxNumbers () { + public List fetchAllFaxNumbers () { // Trace message this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allFaxNumbers: CALLED!", this.getClass().getSimpleName())); //NOI18N @@ -70,7 +68,7 @@ public class FinancialsPhoneSessionBean extends BaseFinancialsEnterpriseBean imp @SuppressWarnings ("unchecked") @Override - public List allLandLineNumbers () { + public List fetchAllLandLineNumbers () { // Trace message this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allLandLineNumbers: CALLED!", this.getClass().getSimpleName())); //NOI18N @@ -87,23 +85,4 @@ public class FinancialsPhoneSessionBean extends BaseFinancialsEnterpriseBean imp return list; } - @SuppressWarnings ("unchecked") - @Override - public List allMobileNumbers () { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allMobileNumbers: CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Get query - final Query query = this.getEntityManager().createNamedQuery("AllMobileNumbers", MobileNumber.class); //NOI18N - - // Get list from it - final List list = query.getResultList(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allMobileNumbers: list.size()={1} - EXIT!", this.getClass().getSimpleName(), list.size())); //NOI18N - - // Return it - return list; - } - } diff --git a/src/java/org/mxchange/jusercore/model/user/FinancialsUserSessionBean.java b/src/java/org/mxchange/jusercore/model/user/FinancialsUserSessionBean.java index eab8e52..ffa3d2f 100644 --- a/src/java/org/mxchange/jusercore/model/user/FinancialsUserSessionBean.java +++ b/src/java/org/mxchange/jusercore/model/user/FinancialsUserSessionBean.java @@ -19,11 +19,10 @@ package org.mxchange.jusercore.model.user; import java.text.MessageFormat; import java.util.Date; import java.util.List; +import java.util.Objects; import javax.ejb.EJB; import javax.ejb.EJBException; import javax.ejb.Stateless; -import javax.persistence.NoResultException; -import javax.persistence.PersistenceException; import javax.persistence.Query; import org.mxchange.jcontacts.model.contact.Contact; import org.mxchange.jfinancials.enterprise.BaseFinancialsEnterpriseBean; @@ -69,45 +68,6 @@ public class FinancialsUserSessionBean extends BaseFinancialsEnterpriseBean impl super("jms/jfinancials-queue-factory", "jms/jfinancials-email-queue"); //NOI18N } - @Override - @SuppressWarnings ("unchecked") - @Deprecated - public List allUserNames () { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getUserNameList: CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Get query - final Query query = this.getEntityManager().createNamedQuery("AllUserNames", String.class); //NOI18N - - // Get result list - final List userNameList = query.getResultList(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getUserNameList: userNameList.size()={1} - EXIT!", this.getClass().getSimpleName(), userNameList.size())); //NOI18N - - // Return it - return userNameList; - } - - @Override - @SuppressWarnings ("unchecked") - public List allUsers () { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allUsers: CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Get named query - final Query query = this.getEntityManager().createNamedQuery("AllUsers", LoginUser.class); //NOI18N - - // Get result - final List users = query.getResultList(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allUsers: users.size()={1} - EXIT!", this.getClass().getSimpleName(), users.size())); //NOI18N - - // Return full list - return users; - } - @Override public User confirmAccount (final User user, final String baseUrl) throws UserStatusConfirmedException, UserStatusLockedException { // Trace message @@ -153,79 +113,25 @@ public class FinancialsUserSessionBean extends BaseFinancialsEnterpriseBean impl } @Override - @Deprecated - public User fillUserData (final User user) throws UserNotFoundException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.fillUserData: user={1} - CALLED!", this.getClass().getSimpleName(), user)); //NOI18N - - // user should not be null - if (null == user) { - // Abort here - throw new NullPointerException("user is null"); //NOI18N - } else if (user.getUserName() == null) { - // Throw NPE - throw new NullPointerException("user.userName is null"); - } else if (user.getUserName().isEmpty()) { - // Throw IAE - throw new IllegalArgumentException("user.userName is empty"); - } else if (!this.ifUserExists(user)) { - // User does not exist - throw new UserNotFoundException(user); - } - - // Try to locate it - final Query query = this.getEntityManager().createNamedQuery("SearchUserByName", LoginUser.class); //NOI18N - - // Set parameter - query.setParameter("userName", user.getUserName()); //NOI18N - - // Initialize variable - final User foundUser; - - // Try it - try { - // Try to get single result - foundUser = (User) query.getSingleResult(); - } catch (final NoResultException ex) { - // Log it - this.getLoggerBeanLocal().logException(ex); - return null; - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.fillUserData: foundUser={1} - EXIT!", this.getClass().getSimpleName(), foundUser)); //NOI18N - - // Return prepared instance - return foundUser; - } - - @Override - @Deprecated - public String generateRandomUserName () { + @SuppressWarnings ("unchecked") + public List fetchAllUsers () { // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.generateRandomUserName - CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Get full list - final List userList = this.allUserNames(); + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allUsers: CALLED!", this.getClass().getSimpleName())); //NOI18N - // Init variable - String userName = null; + // Get named query + final Query query = this.getEntityManager().createNamedQuery("AllUsers", LoginUser.class); //NOI18N - // Loop until a user name is found - while ((userName == null) || (userList.contains(userName))) { - // Generate random name - userName = Users.generateRandomUserName(); - } + // Get result + final List users = query.getResultList(); // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.generateRandomUserName: userName={1} - EXIT!", this.getClass().getSimpleName(), userName)); //NOI18N + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allUsers: users.size()={1} - EXIT!", this.getClass().getSimpleName(), users.size())); //NOI18N - // Found one, so return it - return userName; + // Return full list + return users; } @Override - @Deprecated public boolean ifUserExists (final User user) { // Trace message this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.ifUserExists: user={1} - CALLED!", this.getClass().getSimpleName(), user)); //NOI18N @@ -242,38 +148,24 @@ public class FinancialsUserSessionBean extends BaseFinancialsEnterpriseBean impl throw new IllegalArgumentException(MessageFormat.format("userId is not valid: {0}", user.getUserId())); //NOI18N } - // Generate query - final Query query = this.getEntityManager().createNamedQuery("SearchUserById", LoginUser.class); //NOI18N - - // Set parameter - query.setParameter("id", user.getUserId()); //NOI18N - - // Try this - try { - // Try to get single result - final User dummy = (User) query.getSingleResult(); - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("ifUserExists: dummy.id={0} found.", dummy.getUserId())); //NOI18N - } catch (final NoResultException ex) { - // Log it - this.getLoggerBeanLocal().logDebug(MessageFormat.format("ifUserExists: getSingleResult() returned no result: {0}", ex)); //NOI18N - - // User name does not exist - return false; - } catch (final PersistenceException ex) { - // Something bad happened - this.getLoggerBeanLocal().logWarning(MessageFormat.format("More than one user {0} found.", user, ex)); //NOI18N - - // Throw again - throw ex; + // Default is not found + boolean isFound = false; + + // Fetch whole list + for (final User currentUser : this.fetchAllUsers()) { + // Is found? + if (Objects.equals(user, currentUser)) { + // Yes, then set flag and exit iteration + isFound = true; + break; + } } // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.ifUserExists: Found user {1} - EXIT!", this.getClass().getSimpleName(), user)); //NOI18N + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.ifUserExists: isFound={1} - EXIT!", this.getClass().getSimpleName(), isFound)); //NOI18N - // Found it - return true; + // Return flag + return isFound; } @Override @@ -290,29 +182,21 @@ public class FinancialsUserSessionBean extends BaseFinancialsEnterpriseBean impl throw new NullPointerException("userName is empty"); //NOI18N } - // Generate query - final Query query = this.getEntityManager().createNamedQuery("SearchUserByName", LoginUser.class); //NOI18N - - // Set parameter - query.setParameter("userName", userName); //NOI18N - - // Try this - try { - // Try to get single result - final User dummy = (User) query.getSingleResult(); - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.ifUserNameExists: dummy.userId={1} found.", this.getClass().getSimpleName(), dummy.getUserId())); //NOI18N - } catch (final NoResultException ex) { - // Log it - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.ifUserNameExists: getSingleResult() returned no result: {1}", this.getClass().getSimpleName(), ex)); //NOI18N - - // User name does not exist - return false; + // Default is not registered + boolean isRegistered = false; + + // Iterate over all records + for (final User currentUser : this.fetchAllUsers()) { + // Does the username match? + if (userName.equals(currentUser.getUserName())) { + // Yes, then set flag and exit iteration + isRegistered = true; + break; + } } // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.ifUserNameExists: Found userName={1} - EXIT!", this.getClass().getSimpleName(), userName)); //NOI18N + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.ifUserNameExists: isRegistered={1} - EXIT!", this.getClass().getSimpleName(), isRegistered)); //NOI18N // Found it return true; @@ -329,38 +213,24 @@ public class FinancialsUserSessionBean extends BaseFinancialsEnterpriseBean impl throw new NullPointerException("user is null"); //NOI18N } - // Generate query - final Query query = this.getEntityManager().createNamedQuery("SearchUserByEmailAddress", LoginUser.class); //NOI18N - - // Set parameter - query.setParameter("emailAddress", user.getUserContact().getContactEmailAddress()); //NOI18N - - // Search for it - try { - // Try to get single result - final User dummy = (User) query.getSingleResult(); - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.isEmailAddressRegistered: dummy.userId={1} found.", this.getClass().getSimpleName(), dummy.getUserId())); //NOI18N - } catch (final NoResultException ex) { - // Log it - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.isEmailAddressRegistered: getSingleResult() returned no result: {1}", this.getClass().getSimpleName(), ex)); //NOI18N - - // Email address does not exist - return false; - } catch (final PersistenceException ex) { - // Something bad happened - this.getLoggerBeanLocal().logWarning(MessageFormat.format("More than one email address {0} found.", user.getUserContact().getContactEmailAddress()), ex); //NOI18N - - // Throw again - throw ex; + // Default is not registered + boolean isRegistered = false; + + // Iterate over all records + for (final User currentUser : this.fetchAllUsers()) { + // Does the email address match? + if (user.getUserContact().getContactEmailAddress().equals(currentUser.getUserContact().getContactEmailAddress())) { + // Yes, then set flag and exit iteration + isRegistered = true; + break; + } } // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isEmailAddressRegistered: Returning true ... - EXIT!", this.getClass().getSimpleName())); //NOI18N + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isEmailAddressRegistered: isRegistered={1} - EXIT!", this.getClass().getSimpleName(), isRegistered)); //NOI18N // Found it - return true; + return isRegistered; } @Override @@ -374,38 +244,14 @@ public class FinancialsUserSessionBean extends BaseFinancialsEnterpriseBean impl throw new NullPointerException("user is null"); //NOI18N } - // Generate query - final Query query = this.getEntityManager().createNamedQuery("SearchUserByName", LoginUser.class); //NOI18N - - // Set parameter - query.setParameter("userName", user.getUserName()); //NOI18N - - // Try this - try { - // Try to get single result - final User dummy = (User) query.getSingleResult(); - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.isUserNameRegistered: dummy.userId={1} found.", this.getClass().getSimpleName(), dummy.getUserId())); //NOI18N - } catch (final NoResultException ex) { - // Log it - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.isUserNameRegistered: getSingleResult() returned no result: {1}", this.getClass().getSimpleName(), ex)); //NOI18N - - // User name does not exist - return false; - } catch (final PersistenceException ex) { - // Something bad happened - this.getLoggerBeanLocal().logWarning(MessageFormat.format("More than one email address {0} found.", user.getUserContact().getContactEmailAddress()), ex); //NOI18N - - // Throw again - throw ex; - } + // Ask other method + final boolean isRegistered = this.ifUserNameExists(user.getUserName()); // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isUserNameRegistered: Returning true ... - EXIT!", this.getClass().getSimpleName())); //NOI18N + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isUserNameRegistered: isRegistered={1} - EXIT!", this.getClass().getSimpleName(), isRegistered)); //NOI18N - // Found it - return true; + // Return flag + return isRegistered; } @Override diff --git a/src/java/org/mxchange/jusercore/model/user/email_address/FinancialsUserEmailChangeSessionBean.java b/src/java/org/mxchange/jusercore/model/user/email_address/FinancialsUserEmailChangeSessionBean.java index e69a58a..f30de6a 100644 --- a/src/java/org/mxchange/jusercore/model/user/email_address/FinancialsUserEmailChangeSessionBean.java +++ b/src/java/org/mxchange/jusercore/model/user/email_address/FinancialsUserEmailChangeSessionBean.java @@ -57,25 +57,6 @@ public class FinancialsUserEmailChangeSessionBean extends BaseFinancialsEnterpri super("jms/jfinancials-queue-factory", "jms/jfinancials-email-queue"); //NOI18N } - @Override - @SuppressWarnings ("unchecked") - public List allQueuedAddresses () { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allQueuedAddresses: CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Get named query - final Query query = this.getEntityManager().createNamedQuery("AllEmailAddressChanges", String.class); //NOI18N - - // Get all entries - final List emailAddresses = query.getResultList(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allQueuedAddresses: emailAddresses.size()={1} - EXIT!", this.getClass().getSimpleName(), emailAddresses.size())); //NOI18N - - // Return it - return emailAddresses; - } - @Override public void enqueueEmailAddressForChange (final ChangeableEmailAddress emailChange, final String baseUrl) { // Trace message @@ -94,9 +75,6 @@ public class FinancialsUserEmailChangeSessionBean extends BaseFinancialsEnterpri } else if (emailChange.getEmailChangeUser().getUserId() < 1) { // Not valid id throw new IllegalArgumentException(MessageFormat.format("emailChange.emailChangeUser.userId={0} is invalid.", emailChange.getEmailChangeUser().getUserId())); //NOI18N - } else if (!this.userBean.ifUserExists(emailChange.getEmailChangeUser())) { - // User does not exist - throw new EJBException(MessageFormat.format("Email change with id {0} does not exist.", emailChange.getEmailChangeId())); //NOI18N } else if (emailChange.getEmailAddress().trim().isEmpty()) { // Email address is empty throw new IllegalArgumentException("emailChange.emaiLAddress is empty."); //NOI18N @@ -119,36 +97,22 @@ public class FinancialsUserEmailChangeSessionBean extends BaseFinancialsEnterpri } @Override - public boolean isEmailAddressEnqueued (final String emailAddress) { + @SuppressWarnings ("unchecked") + public List fetchAllQueuedAddressChanges () { // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isEmailAddressEnqueued: emailAddress={1} - CALLED!", this.getClass().getSimpleName(), emailAddress)); //NOI18N - - // Create query instance - final Query query = this.getEntityManager().createNamedQuery("SearchEmailChangeByEmail"); //NOI18N - - // Add email address as parameter - query.setParameter("email", emailAddress); //NOI18N - - // Initialize variable - boolean isFound = false; + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allQueuedAddresses: CALLED!", this.getClass().getSimpleName())); //NOI18N - // Try it - try { - // Try to get single result - final ChangeableEmailAddress dummy = (ChangeableEmailAddress) query.getSingleResult(); + // Get named query + final Query query = this.getEntityManager().createNamedQuery("AllEmailAddressChanges", ChangeableEmailAddress.class); //NOI18N - // Found it - isFound = true; - } catch (final NoResultException ex) { - // Log it - this.getLoggerBeanLocal().logException(ex); - } + // Get all entries + final List emailAddresses = query.getResultList(); // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isEmailAddressEnqueued: isFound={1} - EXIT!", this.getClass().getSimpleName(), isFound)); //NOI18N + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allQueuedAddresses: emailAddresses.size()={1} - EXIT!", this.getClass().getSimpleName(), emailAddresses.size())); //NOI18N // Return it - return isFound; + return emailAddresses; } @Override @@ -169,9 +133,6 @@ public class FinancialsUserEmailChangeSessionBean extends BaseFinancialsEnterpri } else if (emailAddress.getEmailAddress().trim().isEmpty()) { // Email address is empty throw new IllegalArgumentException("emailAddress.emaiLAddress is empty."); //NOI18N - } else if (!this.userBean.ifUserExists(emailAddress.getEmailChangeUser())) { - // User does not exist - throw new EJBException(MessageFormat.format("Email change with id {0} does not exist.", emailAddress.getEmailChangeId())); //NOI18N } else if (!this.isEmailAddressEnqueued(emailAddress.getEmailAddress())) { // Email address is not enqueued throw new EJBException(MessageFormat.format("Email address {0} is not enqueued.", emailAddress.getEmailAddress())); //NOI18N @@ -231,4 +192,35 @@ public class FinancialsUserEmailChangeSessionBean extends BaseFinancialsEnterpri emailAddress.setEmailChangeHash(hash); } + /** + * Checks whether given email address is already enqueued + *

+ * @param emailAddress Email address to check + *

+ * @return Whether the email address has already been enqueued + */ + private boolean isEmailAddressEnqueued (final String emailAddress) { + // Trace message + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isEmailAddressEnqueued: emailAddress={1} - CALLED!", this.getClass().getSimpleName(), emailAddress)); //NOI18N + + // Default is not found + boolean isFound = false; + + // Fetch all records + for (final ChangeableEmailAddress address : this.fetchAllQueuedAddressChanges()) { + // Is it found? + if (address.getEmailAddress().equals(emailAddress)) { + // Yes, set flag, skip further iterations + isFound = true; + break; + } + } + + // Trace message + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isEmailAddressEnqueued: isFound={1} - EXIT!", this.getClass().getSimpleName(), isFound)); //NOI18N + + // Return it + return isFound; + } + } diff --git a/src/java/org/mxchange/jusercore/model/user/password_history/FinancialsUserPasswordHistorySessionBean.java b/src/java/org/mxchange/jusercore/model/user/password_history/FinancialsUserPasswordHistorySessionBean.java index 1c25510..1c6e45e 100644 --- a/src/java/org/mxchange/jusercore/model/user/password_history/FinancialsUserPasswordHistorySessionBean.java +++ b/src/java/org/mxchange/jusercore/model/user/password_history/FinancialsUserPasswordHistorySessionBean.java @@ -46,7 +46,7 @@ public class FinancialsUserPasswordHistorySessionBean extends BaseFinancialsEnte @Override @SuppressWarnings ("unchecked") - public List getUserPasswordHistory (final User user) { + public List fetchPasswordHistoryByUser (final User user) { // Trace message this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getUserPasswordHistory(): user={1} - EXIT!", this.getClass().getSimpleName(), user)); //NOI18N diff --git a/src/java/org/mxchange/juserlogincore/model/user/login/FinancialsUserLoginSessionBean.java b/src/java/org/mxchange/juserlogincore/model/user/login/FinancialsUserLoginSessionBean.java deleted file mode 100644 index 3c7009a..0000000 --- a/src/java/org/mxchange/juserlogincore/model/user/login/FinancialsUserLoginSessionBean.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * 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.juserlogincore.model.user.login; - -import java.text.MessageFormat; -import javax.ejb.EJB; -import javax.ejb.Stateless; -import org.mxchange.jfinancials.enterprise.BaseFinancialsEnterpriseBean; -import org.mxchange.jusercore.exceptions.UserNotFoundException; -import org.mxchange.jusercore.exceptions.UserStatusLockedException; -import org.mxchange.jusercore.exceptions.UserStatusUnconfirmedException; -import org.mxchange.jusercore.model.user.User; -import org.mxchange.jusercore.model.user.UserSessionBeanRemote; -import org.mxchange.jusercore.model.user.status.UserAccountStatus; -import org.mxchange.juserlogincore.container.login.LoginContainer; -import org.mxchange.juserlogincore.exceptions.UserPasswordMismatchException; -import org.mxchange.juserlogincore.login.UserLoginUtils; - -/** - * A session EJB for user logins - *

- * @author Roland Häder - */ -@Stateless (name = "userLogin", description = "A bean handling the application-specific user login") -public class FinancialsUserLoginSessionBean extends BaseFinancialsEnterpriseBean implements UserLoginSessionBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 21_785_978_127_581_965L; - - /** - * User EJB - */ - @EJB (lookup = "java:global/jfinancials-ejb/user!org.mxchange.jusercore.model.user.UserSessionBeanRemote") - private UserSessionBeanRemote userBean; - - /** - * Default constructor - */ - public FinancialsUserLoginSessionBean () { - // Call super constructor - super(); - } - - @Override - public User validateUserAccountStatus (final LoginContainer container) throws UserNotFoundException, UserStatusLockedException, UserStatusUnconfirmedException, UserPasswordMismatchException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.loginUser: container={1} - CALLED!", this.getClass().getSimpleName(), container)); //NOI18N - - // user should not be null - if (null == container) { - // Abort here - throw new NullPointerException("container is null"); //NOI18N - } else if (container.getUser() == null) { - // NPE again - throw new NullPointerException("container.user is null"); //NOI18N - } else if (container.getUserPassword() == null) { - // And yet again NPE - throw new NullPointerException("container.userPassword is null"); //NOI18N - } else if (container.getUserPassword().isEmpty()) { - // Empty password is not allowed, hardcoded. - throw new IllegalArgumentException("container.userPassword is empty"); //NOI18N - } - - // Is the account there? - if (!this.userBean.isUserNameRegistered(container.getUser())) { - // Not registered - throw new UserNotFoundException(container.getUser()); - } - - // Get user instance from persistance - // @TODO Rewrite this to use JCache instead - final User updatedUser = this.userBean.fillUserData(container.getUser()); - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("loginUser: updatedUser={0}", updatedUser)); //NOI18N - - // Is the user account unconfirmed? - if (updatedUser.getUserAccountStatus().equals(UserAccountStatus.UNCONFIRMED)) { - // Is unconfirmed - throw new UserStatusUnconfirmedException(container.getUser()); - } else if (updatedUser.getUserAccountStatus().equals(UserAccountStatus.LOCKED)) { - // Is locked - throw new UserStatusLockedException(container.getUser()); - } else if (!this.isPasswordMatching(container, updatedUser)) { - // Not matcing passwords - throw new UserPasswordMismatchException(container.getUser()); - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.loginUser: updatedUser={1} - EXIT!", this.getClass().getSimpleName(), updatedUser)); //NOI18N - - // Return it - return updatedUser; - } - - /** - * Checks if password matches of both instances. Both user instances must - * not match, the first one is the one from the calling bean/controller, the - * second is the from database. - *

- * @param container Container instance holding the user instance and - * clear-text password - * @param updatedUser Updated user instance found for given user name - *

- * @return Whether the password matches - */ - private boolean isPasswordMatching (final LoginContainer container, final User updatedUser) { - // First math both instances - if (null == container) { - // Throw NPE - throw new NullPointerException("container is null"); //NOI18N - } else if (null == updatedUser) { - // Throw NPE - throw new NullPointerException("updatedUser is null"); //NOI18N - } else if (container.getUser().equals(updatedUser)) { - // Both same instance! - throw new IllegalArgumentException(MessageFormat.format("container.user matches updatedUser: {0}", container.getUser())); //NOI18N - } - - // Is it the same same password? - return UserLoginUtils.ifPasswordMatches(container, updatedUser); - } - -} -- 2.39.5