From cc8ffe2db2ffaa86eea4cd38953e5c1e516eb272 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Sat, 8 Jul 2017 19:16:55 +0200 Subject: [PATCH] Please cherry-pick: - new project 'addressbook-mailer-ejb' initialized from addressbook-ejb - this includes one message-driven bean and a singleton bean - the message-driven bean accepts "wrapper" objects per JMS from outside EJB - the singleton bean is then the "backend" which loads templates and delivers the mail - this split from general EJB project has the benefit of easier distributing (cluster) load - a lot libs were no longer needed - added velocity engine (from addressbook-mailer) as library MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Roland Häder --- build.xml | 4 +- lib/jaddressbook-core.jar | Bin 20113 -> 0 bytes lib/jaddressbook-lib.jar | Bin 3869 -> 0 bytes lib/jaddressbook-share-core.jar | Bin 15233 -> 0 bytes lib/jaddressbook-share-lib.jar | Bin 5926 -> 0 bytes lib/jcontacts-business-core.jar | Bin 81362 -> 0 bytes lib/jcontacts-core.jar | Bin 58370 -> 0 bytes lib/jcontacts-lib.jar | Bin 4437 -> 0 bytes lib/jcountry-core.jar | Bin 10608 -> 0 bytes lib/jcountry-lib.jar | Bin 1544 -> 0 bytes lib/jphone-core.jar | Bin 61741 -> 0 bytes lib/jphone-lib.jar | Bin 5144 -> 0 bytes lib/juser-activity-core.jar | Bin 13488 -> 0 bytes lib/juser-activity-lib.jar | Bin 2665 -> 0 bytes lib/juser-core.jar | Bin 86006 -> 0 bytes lib/juser-lib.jar | Bin 13925 -> 0 bytes lib/nblibraries.properties | 4 + lib/velocity/velocity-1.7-dep.jar | Bin 0 -> 806736 bytes lib/velocity/velocity-1.7-dep.jar-LICENSE.txt | 202 +++++ lib/velocity/velocity-1.7.jar | Bin 0 -> 449505 bytes lib/velocity/velocity-1.7.jar-LICENSE.txt | 202 +++++ nbproject/build-impl.xml | 108 +-- nbproject/project.properties | 59 +- nbproject/project.xml | 39 +- src/conf/persistence.xml | 23 - .../database/BaseAddressbookDatabaseBean.java | 734 ---------------- .../AddressbookEmailDeliveryMessageBean.java | 67 +- .../AddressbookMailerSingletonBean.java | 173 ++++ .../addressbook/AddressbookSessionBean.java | 265 ------ .../share/SharedAddressbooksSessionBean.java | 347 -------- .../AddressbookAdminContactSessionBean.java | 106 --- .../AddressbookContactSessionBean.java | 326 ------- ...dressbookAdminContactPhoneSessionBean.java | 544 ------------ .../data/AddressbookCountrySingletonBean.java | 157 ---- ...essbookAdminMobileProviderSessionBean.java | 97 --- ...ddressbookMobileProviderSingletonBean.java | 67 -- .../AddressbookAdminPhoneSessionBean.java | 357 -------- .../phone/AddressbookPhoneSessionBean.java | 228 ----- .../user/AddressbookAdminUserSessionBean.java | 337 -------- .../user/AddressbookUserSessionBean.java | 800 ------------------ ...AddressbookUserActivityLogMessageBean.java | 151 ---- .../AddressbookUserActivitySessionBean.java | 230 ----- ...AddressbookUserEmailChangeSessionBean.java | 235 ----- .../login/FinancialsUserLoginSessionBean.java | 151 ---- ...essbookUserPasswordHistorySessionBean.java | 81 -- ...ddressbookUserRegistrationSessionBean.java | 202 ----- .../AddressbookResendLinkSessionBean.java | 115 --- src/java/templates/de/account_confirmed.vm | 10 + src/java/templates/de/account_confirmed_1.vm | 10 + src/java/templates/de/registration.vm | 53 ++ src/java/templates/de/registration_1.vm | 53 ++ .../templates/de/resend_confirmation_link.vm | 21 + .../de/resend_confirmation_link_1.vm | 21 + src/java/templates/de/user_password_change.vm | 13 + .../templates/de/user_password_change_1.vm | 13 + .../templates/en/user_account_confirmed.vm | 10 + .../templates/en/user_account_confirmed_1.vm | 10 + src/java/templates/en/user_password_change.vm | 13 + .../templates/en/user_password_change_1.vm | 13 + src/java/templates/en/user_registration.vm | 53 ++ src/java/templates/en/user_registration_1.vm | 53 ++ .../en/user_resend_confirmation_link.vm | 21 + .../en/user_resend_confirmation_link_1.vm | 21 + 63 files changed, 1006 insertions(+), 5793 deletions(-) delete mode 100644 lib/jaddressbook-core.jar delete mode 100644 lib/jaddressbook-lib.jar delete mode 100644 lib/jaddressbook-share-core.jar delete mode 100644 lib/jaddressbook-share-lib.jar delete mode 100644 lib/jcontacts-business-core.jar delete mode 100644 lib/jcontacts-core.jar delete mode 100644 lib/jcontacts-lib.jar delete mode 100644 lib/jcountry-core.jar delete mode 100644 lib/jcountry-lib.jar delete mode 100644 lib/jphone-core.jar delete mode 100644 lib/jphone-lib.jar delete mode 100644 lib/juser-activity-core.jar delete mode 100644 lib/juser-activity-lib.jar delete mode 100644 lib/juser-core.jar delete mode 100644 lib/juser-lib.jar create mode 100644 lib/velocity/velocity-1.7-dep.jar create mode 100644 lib/velocity/velocity-1.7-dep.jar-LICENSE.txt create mode 100644 lib/velocity/velocity-1.7.jar create mode 100644 lib/velocity/velocity-1.7.jar-LICENSE.txt delete mode 100644 src/conf/persistence.xml delete mode 100644 src/java/org/mxchange/addressbook/database/BaseAddressbookDatabaseBean.java create mode 100644 src/java/org/mxchange/addressbook/mailer/model/delivery/AddressbookMailerSingletonBean.java delete mode 100644 src/java/org/mxchange/addressbook/model/addressbook/AddressbookSessionBean.java delete mode 100644 src/java/org/mxchange/addressbook/model/addressbook/share/SharedAddressbooksSessionBean.java delete mode 100644 src/java/org/mxchange/jcontacts/contact/AddressbookAdminContactSessionBean.java delete mode 100644 src/java/org/mxchange/jcontacts/contact/AddressbookContactSessionBean.java delete mode 100644 src/java/org/mxchange/jcontacts/phone/AddressbookAdminContactPhoneSessionBean.java delete mode 100644 src/java/org/mxchange/jcountry/data/AddressbookCountrySingletonBean.java delete mode 100644 src/java/org/mxchange/jphone/phonenumbers/mobileprovider/AddressbookAdminMobileProviderSessionBean.java delete mode 100644 src/java/org/mxchange/jphone/phonenumbers/mobileprovider/AddressbookMobileProviderSingletonBean.java delete mode 100644 src/java/org/mxchange/jphone/phonenumbers/phone/AddressbookAdminPhoneSessionBean.java delete mode 100644 src/java/org/mxchange/jphone/phonenumbers/phone/AddressbookPhoneSessionBean.java delete mode 100644 src/java/org/mxchange/jusercore/model/user/AddressbookAdminUserSessionBean.java delete mode 100644 src/java/org/mxchange/jusercore/model/user/AddressbookUserSessionBean.java delete mode 100644 src/java/org/mxchange/jusercore/model/user/activity/AddressbookUserActivityLogMessageBean.java delete mode 100644 src/java/org/mxchange/jusercore/model/user/activity/AddressbookUserActivitySessionBean.java delete mode 100644 src/java/org/mxchange/jusercore/model/user/email_address/AddressbookUserEmailChangeSessionBean.java delete mode 100644 src/java/org/mxchange/jusercore/model/user/login/FinancialsUserLoginSessionBean.java delete mode 100644 src/java/org/mxchange/jusercore/model/user/password_history/AddressbookUserPasswordHistorySessionBean.java delete mode 100644 src/java/org/mxchange/jusercore/model/user/register/AddressbookUserRegistrationSessionBean.java delete mode 100644 src/java/org/mxchange/jusercore/model/user/resendlink/AddressbookResendLinkSessionBean.java create mode 100644 src/java/templates/de/account_confirmed.vm create mode 100644 src/java/templates/de/account_confirmed_1.vm create mode 100644 src/java/templates/de/registration.vm create mode 100644 src/java/templates/de/registration_1.vm create mode 100644 src/java/templates/de/resend_confirmation_link.vm create mode 100644 src/java/templates/de/resend_confirmation_link_1.vm create mode 100644 src/java/templates/de/user_password_change.vm create mode 100644 src/java/templates/de/user_password_change_1.vm create mode 100644 src/java/templates/en/user_account_confirmed.vm create mode 100644 src/java/templates/en/user_account_confirmed_1.vm create mode 100644 src/java/templates/en/user_password_change.vm create mode 100644 src/java/templates/en/user_password_change_1.vm create mode 100644 src/java/templates/en/user_registration.vm create mode 100644 src/java/templates/en/user_registration_1.vm create mode 100644 src/java/templates/en/user_resend_confirmation_link.vm create mode 100644 src/java/templates/en/user_resend_confirmation_link_1.vm diff --git a/build.xml b/build.xml index cb14d30..9ec25cf 100644 --- a/build.xml +++ b/build.xml @@ -7,8 +7,8 @@ - - Builds, tests, and runs the project addressbook-ejb. + + Builds, tests, and runs the project addressbook-mailer-ejb. k@XQL=m`y554x`#;D~; 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 E0p<-}!~g&Q literal 0 HcmV?d00001 diff --git a/lib/velocity/velocity-1.7-dep.jar-LICENSE.txt b/lib/velocity/velocity-1.7-dep.jar-LICENSE.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/lib/velocity/velocity-1.7-dep.jar-LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/lib/velocity/velocity-1.7.jar b/lib/velocity/velocity-1.7.jar new file mode 100644 index 0000000000000000000000000000000000000000..ae936d3d9c33145507964793e78b9090630ed387 GIT binary patch literal 449505 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 JL^lZi_J6j$C{q9c literal 0 HcmV?d00001 diff --git a/lib/velocity/velocity-1.7.jar-LICENSE.txt b/lib/velocity/velocity-1.7.jar-LICENSE.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/lib/velocity/velocity-1.7.jar-LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/nbproject/build-impl.xml b/nbproject/build-impl.xml index 693651a..5e73ec1 100644 --- a/nbproject/build-impl.xml +++ b/nbproject/build-impl.xml @@ -15,7 +15,7 @@ is divided into following sections: - cleanup --> - + @@ -433,7 +433,7 @@ or ant -Dj2ee.platform.classpath=<server_classpath> (where no properties f - + @@ -585,7 +585,7 @@ or ant -Dj2ee.platform.classpath=<server_classpath> (where no properties f - + @@ -806,13 +806,7 @@ exists or setup the property manually. For example like this: COMPILATION SECTION --> - - - - - - - + @@ -820,13 +814,7 @@ exists or setup the property manually. For example like this: - - - - - - - + @@ -846,95 +834,35 @@ exists or setup the property manually. For example like this: - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - + + @@ -1318,9 +1246,7 @@ exists or setup the property manually. For example like this: CLEANUP SECTION --> - - - + diff --git a/nbproject/project.properties b/nbproject/project.properties index 09f240a..da964c7 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -23,23 +23,9 @@ endorsed.classpath= excludes= file.reference.addressbook-mailer.jar=lib/addressbook-mailer.jar file.reference.cdi-api.jar=lib/cdi-api.jar -file.reference.jaddressbook-core.jar=lib/jaddressbook-core.jar -file.reference.jaddressbook-lib.jar=lib/jaddressbook-lib.jar -file.reference.jaddressbook-share-core.jar=lib/jaddressbook-share-core.jar -file.reference.jaddressbook-share-lib.jar=lib/jaddressbook-share-lib.jar -file.reference.jcontacts-core.jar=lib/jcontacts-core.jar -file.reference.jcontacts-lib.jar=lib/jcontacts-lib.jar file.reference.jcore-logger-lib.jar=lib/jcore-logger-lib.jar file.reference.jcoreee.jar=lib/jcoreee.jar -file.reference.jcountry-core.jar=lib/jcountry-core.jar -file.reference.jcountry-lib.jar=lib/jcountry-lib.jar file.reference.jmailer-ee.jar=lib/jmailer-ee.jar -file.reference.jphone-core.jar=lib/jphone-core.jar -file.reference.jphone-lib.jar=lib/jphone-lib.jar -file.reference.juser-activity-core.jar=lib/juser-activity-core.jar -file.reference.juser-activity-lib.jar=lib/juser-activity-lib.jar -file.reference.juser-core.jar=lib/juser-core.jar -file.reference.juser-lib.jar=lib/juser-lib.jar includes=** j2ee.compile.on.save=true j2ee.deploy.on.save=true @@ -52,30 +38,15 @@ j2ee.platform.wsimport.classpath=${j2ee.server.home}/modules/webservices-osgi.ja j2ee.platform.wsit.classpath= j2ee.server.type=gfv3ee6 jar.compress=false -jar.name=addressbook-ejb.jar +jar.name=addressbook-mailer-ejb.jar jars.in.ejbjar=false javac.classpath=\ ${file.reference.jcoreee.jar}:\ ${file.reference.jcore-logger-lib.jar}:\ - ${file.reference.jcountry-core.jar}:\ - ${file.reference.jcountry-lib.jar}:\ - ${file.reference.jphone-core.jar}:\ - ${file.reference.jphone-lib.jar}:\ - ${file.reference.jcontacts-core.jar}:\ - ${file.reference.jcontacts-lib.jar}:\ - ${file.reference.juser-core.jar}:\ - ${file.reference.juser-lib.jar}:\ - ${file.reference.juser-activity-core.jar}:\ - ${file.reference.juser-activity-lib.jar}:\ ${file.reference.jmailer-ee.jar}:\ - ${file.reference.jaddressbook-core.jar}:\ - ${file.reference.jaddressbook-lib.jar}:\ - ${file.reference.jaddressbook-share-core.jar}:\ - ${file.reference.jaddressbook-share-lib.jar}:\ - ${reference.addressbook-core.jar}:\ - ${reference.addressbook-lib.jar}:\ - ${reference.addressbook-mailer.jar}:\ - ${file.reference.cdi-api.jar} + ${file.reference.cdi-api.jar}:\ + ${reference.addressbook-mailer-lib.jar}:\ + ${libs.velocity.classpath} javac.compilerargs=-Xlint:unchecked -Xlint:deprecation javac.debug=true javac.deprecation=true @@ -102,15 +73,11 @@ javadoc.windowtitle=addressbook EJBs meta.inf=${source.root}/conf meta.inf.excludes=sun-cmp-mappings.xml platform.active=default_platform -project.addressbook-core=../../NetBeansProjects/addressbook-core -project.addressbook-lib=../addressbook-lib -project.addressbook-mailer=../addressbook-mailer +project.addressbook-mailer-lib=../../NetBeansProjects/addressbook-mailer-lib project.juser-core=../juser-core project.license=agpl30 project.serviceLocator.class=de.chotime.landingpage.mailer.model.delivery.LandingMailer -reference.addressbook-core.jar=${project.addressbook-core}/dist/addressbook-core.jar -reference.addressbook-lib.jar=${project.addressbook-lib}/dist/addressbook-lib.jar -reference.addressbook-mailer.jar=${project.addressbook-mailer}/dist/addressbook-mailer.jar +reference.addressbook-mailer-lib.jar=${project.addressbook-mailer-lib}/dist/addressbook-mailer-lib.jar resource.dir=setup run.test.classpath=\ ${javac.test.classpath}:\ @@ -120,23 +87,9 @@ run.test.classpath=\ runmain.jvmargs= source.encoding=UTF-8 source.reference.addressbook-mailer.jar=../addressbook-mailer/src/ -source.reference.jaddressbook-core.jar=../jaddressbook-core/src -source.reference.jaddressbook-lib.jar=../jaddressbook-lib/src -source.reference.jaddressbook-share-core.jar=../jaddressbook-share-core/src -source.reference.jaddressbook-share-lib.jar=../jaddressbook-share-lib/src -source.reference.jcontacts-core.jar=../jcontacts-core/src/ -source.reference.jcontacts-lib.jar=../jcontacts-lib/src/ source.reference.jcore-logger-lib.jar=../jcore-logger-lib/src/ source.reference.jcoreee.jar=../jcoreee/src/ -source.reference.jcountry-core.jar=../jcountry-core/src/ -source.reference.jcountry-lib.jar=../jcountry-lib/src/ source.reference.jmailer-ee.jar=../jmailer-ee/src/ -source.reference.jphone-core.jar=../jphone-core/src/ -source.reference.jphone-lib.jar=../jphone-lib/src/ -source.reference.juser-activity-core.jar=../juser-activity-core/src/ -source.reference.juser-activity-lib.jar=../juser-activity-lib/src/ -source.reference.juser-core.jar=../juser-core/src/ -source.reference.juser-lib.jar=../juser-lib/src/ source.root=src src.dir=${source.root}/java test.src.dir=test diff --git a/nbproject/project.xml b/nbproject/project.xml index 4dcbc09..0ee8b8e 100644 --- a/nbproject/project.xml +++ b/nbproject/project.xml @@ -3,29 +3,14 @@ org.netbeans.modules.j2ee.ejbjarproject - addressbook-ejb + addressbook-mailer-ejb 1.6.5 file.reference.jcoreee.jar file.reference.jcore-logger-lib.jar - file.reference.jcountry-core.jar - file.reference.jcountry-lib.jar - file.reference.jphone-core.jar - file.reference.jphone-lib.jar - file.reference.jcontacts-core.jar - file.reference.jcontacts-lib.jar - file.reference.juser-core.jar - file.reference.juser-lib.jar - file.reference.juser-activity-core.jar - file.reference.juser-activity-lib.jar file.reference.jmailer-ee.jar - file.reference.jaddressbook-core.jar - file.reference.jaddressbook-lib.jar - file.reference.jaddressbook-share-core.jar - file.reference.jaddressbook-share-lib.jar - reference.addressbook-core.jar - reference.addressbook-lib.jar - reference.addressbook-mailer.jar file.reference.cdi-api.jar + reference.addressbook-mailer-lib.jar + libs.velocity.classpath @@ -38,23 +23,7 @@ - addressbook-core - jar - - jar - clean - jar - - - addressbook-lib - jar - - jar - clean - jar - - - addressbook-mailer + addressbook-mailer-lib jar jar diff --git a/src/conf/persistence.xml b/src/conf/persistence.xml deleted file mode 100644 index b5a4906..0000000 --- a/src/conf/persistence.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - jdbc/addressbook - org.mxchange.jaddressbook.model.addressbook.UserAddressbook - org.mxchange.jaddressbook.model.addressbook.entry.UserAddressbookEntry - org.mxchange.jaddressbookshare.model.addressbook.shared.AddressbookShare - org.mxchange.jcontacts.contact.UserContact - org.mxchange.jcountry.data.CountryData - org.mxchange.jphone.phonenumbers.fax.FaxNumber - org.mxchange.jphone.phonenumbers.landline.LandLineNumber - org.mxchange.jphone.phonenumbers.mobile.MobileNumber - org.mxchange.jphone.phonenumbers.mobileprovider.CellphoneProvider - org.mxchange.jusercore.model.email_address.EmailAddressChange - org.mxchange.jusercore.model.user.LoginUser - org.mxchange.jusercore.model.user.activity.UserActivityLog - org.mxchange.jusercore.model.user.password_history.UserPasswordHistory - false - - - - - diff --git a/src/java/org/mxchange/addressbook/database/BaseAddressbookDatabaseBean.java b/src/java/org/mxchange/addressbook/database/BaseAddressbookDatabaseBean.java deleted file mode 100644 index b74a841..0000000 --- a/src/java/org/mxchange/addressbook/database/BaseAddressbookDatabaseBean.java +++ /dev/null @@ -1,734 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.mxchange.addressbook.database; - -import java.text.MessageFormat; -import java.util.GregorianCalendar; -import java.util.Objects; -import java.util.Properties; -import javax.ejb.EJBException; -import javax.jms.JMSException; -import javax.jms.ObjectMessage; -import javax.mail.Address; -import javax.mail.internet.AddressException; -import javax.mail.internet.InternetAddress; -import org.mxchange.jcontacts.contact.Contact; -import org.mxchange.jcontacts.contact.ContactUtils; -import org.mxchange.jcoreee.database.BaseDatabaseBean; -import org.mxchange.jmailee.model.delivery.wrapper.EmailDeliveryWrapper; -import org.mxchange.jmailee.model.delivery.wrapper.WrapableEmailDelivery; -import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber; -import org.mxchange.jphone.phonenumbers.fax.FaxNumbers; -import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber; -import org.mxchange.jphone.phonenumbers.landline.LandLineNumbers; -import org.mxchange.jphone.phonenumbers.mobile.DialableMobileNumber; -import org.mxchange.jphone.phonenumbers.mobile.MobileNumbers; -import org.mxchange.jphone.utils.PhoneUtils; -import org.mxchange.jusercore.model.user.LoginUser; -import org.mxchange.jusercore.model.user.User; -import org.mxchange.jusercore.model.user.UserUtils; - -/** - * A helper class for beans that access the database. - *

- * @author Roland Häder - */ -public abstract class BaseAddressbookDatabaseBean extends BaseDatabaseBean { - - /** - * Serial number - */ - private static final long serialVersionUID = 12_895_410_275_811_963L; - - /** - * Protected constructor - */ - protected BaseAddressbookDatabaseBean () { - // Call super constructor - super(); - } - - /** - * Constructor with queue factory JNDI and queue JNDI names - *

- * @param factoryJndi JNDI name for queue factory - * @param queueJndi JNDI name for email queue - */ - protected BaseAddressbookDatabaseBean (final String factoryJndi, final String queueJndi) { - // Call super constructor - super(factoryJndi, queueJndi); - } - - /** - * Updates all contact's phone entry's created timestamps - *

- * @param contact Contact instance to update - */ - protected void setAllContactPhoneEntriesCreated (final Contact contact) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.setAllContactPhoneEntriesCreated: contact={1} - CALLED!", this.getClass().getSimpleName(), contact)); //NOI18N - - // The contact instance must be valid - if (null == contact) { - // Throw NPE again - throw new NullPointerException("contact is null"); //NOI18N - } - - // Get all phone instances - DialableLandLineNumber landLineNumber = contact.getContactLandLineNumber(); - DialableFaxNumber faxNumber = contact.getContactFaxNumber(); - DialableMobileNumber mobileNumber = contact.getContactMobileNumber(); - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.setAllContactPhoneEntriesCreated: landLineNumber={1},faxNumber={2},mobileNumber={3}", this.getClass().getSimpleName(), landLineNumber, faxNumber, mobileNumber)); //NOI18N - - // Is a phone number instance set? - if ((landLineNumber instanceof DialableLandLineNumber) && (landLineNumber.getPhoneId() == null)) { - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.setAllContactPhoneEntriesCreated: Setting created timestamp for land-line number ...", this.getClass().getSimpleName())); //NOI18N - - // Set updated timestamp - landLineNumber.setPhoneEntryCreated(new GregorianCalendar()); - } - - // Is a fax number instance set? - if ((faxNumber instanceof DialableFaxNumber) && (faxNumber.getPhoneId() == null)) { - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.setAllContactPhoneEntriesCreated: Setting created timestamp for fax number ...", this.getClass().getSimpleName())); //NOI18N - - // Set updated timestamp - faxNumber.setPhoneEntryCreated(new GregorianCalendar()); - } - - // Is a mobile number instance set? - if ((mobileNumber instanceof DialableMobileNumber) && (mobileNumber.getPhoneId() == null)) { - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.setAllContactPhoneEntriesCreated: Setting created timestamp for cellphone number ...", this.getClass().getSimpleName())); //NOI18N - - // Set updated timestamp - mobileNumber.setPhoneEntryCreated(new GregorianCalendar()); - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.setAllContactPhoneEntriesCreated: EXIT!", this.getClass().getSimpleName())); //NOI18N - } - - /** - * Returns a managed instance from given mobile number - *

- * @param mobileNumber Mobile instance - * @param fetchedNumber Found mobile number in database - *

- * @return Managed instance - */ - protected DialableMobileNumber getManaged (final DialableMobileNumber mobileNumber, final DialableMobileNumber fetchedNumber) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getDetached: mobileNumber={1},fetchedNumber={2} - CALLED!", this.getClass().getSimpleName(), mobileNumber, fetchedNumber)); //NOI18N - - // Should be valid - if (null == mobileNumber) { - // Throw NPE - throw new NullPointerException("mobileNumber is null"); //NOI18N - } else if (null == fetchedNumber) { - // Throw NPE again - throw new NullPointerException("fetchedNumber is null"); //NOI18N - } else if (fetchedNumber.getPhoneId() == null) { - // ..and again - throw new NullPointerException("fetchedNumber.phoneId is null"); //NOI18N - } - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.getDetached: fetchedNumber.phoneId={1}", this.getClass().getSimpleName(), fetchedNumber.getPhoneId())); //NOI18N - - // Default is null - DialableMobileNumber managedNumber = null; - - // Is there a difference? - if (!PhoneUtils.isSameMobileNumber(mobileNumber, fetchedNumber)) { - // Merge this entry - managedNumber = this.getEntityManager().merge(fetchedNumber); - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getDetached: managedNumber={1} - EXIT!", this.getClass().getSimpleName(), managedNumber)); //NOI18N - - // Return it - return managedNumber; - } - - /** - * Returns a managed instance from given land-line number - *

- * @param landLineNumber Land-line instance - * @param fetchedNumber Found land-line number in database - *

- * @return Managed instance - */ - protected DialableLandLineNumber getManaged (final DialableLandLineNumber landLineNumber, final DialableLandLineNumber fetchedNumber) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getDetached: landLineNumber={1},fetchedNumber={2} - CALLED!", this.getClass().getSimpleName(), landLineNumber, fetchedNumber)); //NOI18N - - // Should be valid - if (null == landLineNumber) { - // Throw NPE - throw new NullPointerException("landLineNumber is null"); //NOI18N - } else if (null == fetchedNumber) { - // Throw NPE again - throw new NullPointerException("fetchedNumber is null"); //NOI18N - } else if (fetchedNumber.getPhoneId() == null) { - // ..and again - throw new NullPointerException("landLineNumber.phoneId is null"); //NOI18N - } - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.getDetached: fetchedNumber.phoneId={1}", this.getClass().getSimpleName(), fetchedNumber.getPhoneId())); //NOI18N - - // Default is null - DialableLandLineNumber managedNumber = null; - - // Is there a difference? - if (!PhoneUtils.isSameLandLineNumber(landLineNumber, fetchedNumber)) { - // Merge this entry - managedNumber = this.getEntityManager().merge(fetchedNumber); - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getDetached: managedNumber={1} - EXIT!", this.getClass().getSimpleName(), managedNumber)); //NOI18N - - // Return it - return managedNumber; - } - - /** - * Returns a managed instance from given fax number - *

- * @param faxNumber Fax instance - * @param fetchedNumber Found fax number in database - *

- * @return Managed instance - */ - protected DialableFaxNumber getManaged (final DialableFaxNumber faxNumber, final DialableFaxNumber fetchedNumber) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getDetached: faxNumber={1},fetchedNumber={2} - CALLED!", this.getClass().getSimpleName(), faxNumber, fetchedNumber)); //NOI18N - - // Should be valid - if (null == faxNumber) { - // Throw NPE - throw new NullPointerException("faxNumber is null"); //NOI18N - } else if (null == fetchedNumber) { - // Throw NPE again - throw new NullPointerException("fetchedNumber is null"); //NOI18N - } else if (fetchedNumber.getPhoneId() == null) { - // ..and again - throw new NullPointerException("fetchedNumber.phoneId is null"); //NOI18N - } - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.getDetached: fetchedNumber.phoneId={1}", this.getClass().getSimpleName(), fetchedNumber.getPhoneId())); //NOI18N - - // Default is null - DialableFaxNumber managedNumber = null; - - // Is there a difference? - if (!PhoneUtils.isSameFaxNumber(faxNumber, fetchedNumber)) { - // Merge this entry - managedNumber = this.getEntityManager().merge(fetchedNumber); - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getDetached: managedNumber={1} - EXIT!", this.getClass().getSimpleName(), managedNumber)); //NOI18N - - // Return it - return managedNumber; - } - - /** - * Get back a managed instance from given user - *

- * @param user Unmanaged/detached user instance - *

- * @return Managed user instance - */ - protected User getManagedUser (final User user) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getManaged: 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.getUserId() == null) { - // Id is set - throw new NullPointerException("user.userId is null"); //NOI18N - } else if (user.getUserId() < 1) { - // Id is set - throw new IllegalArgumentException(MessageFormat.format("user.userId={0} is null", user.getUserId())); //NOI18N - } else if (user.getUserContact() == null) { - // Throw NPE again - throw new NullPointerException("user.userContact is null"); //NOI18N - } else if (user.getUserContact().getContactId() == null) { - // Throw NPE again - throw new NullPointerException("user.userContact.contactId is null"); //NOI18N - } else if (user.getUserContact().getContactId() < 1) { - // Not valid id number - throw new IllegalArgumentException(MessageFormat.format("user.userContact.contactId={0} is not valid", user.getUserContact().getContactId())); //NOI18N# - } - - // Try to find it (should be there) - User managedUser = this.getEntityManager().find(LoginUser.class, user.getUserId()); - - // Should be there - assert (managedUser instanceof User) : "managedUser is null"; //NOI18N - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getManaged: managedUser={1} - EXIT!", this.getClass().getSimpleName(), managedUser)); //NOI18N - - // Return it - return managedUser; - } - - /** - * Merges given (detached) contact's data - *

- * @param detachedContact Contact instance to merge - *

- * @return Detached contact instance - */ - protected Contact mergeContactData (final Contact detachedContact) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.mergeContactData: detachedContact={1} - CALLED!", this.getClass().getSimpleName(), detachedContact)); //NOI18N - - // The contact instance must be valid - if (null == detachedContact) { - // Throw NPE again - throw new NullPointerException("detachedContact is null"); //NOI18N - } else if (detachedContact.getContactId() == null) { - // Throw NPE again - throw new NullPointerException("detachedContact.contactId is null"); //NOI18N //NOI18N - } else if (detachedContact.getContactId() < 1) { - // Not valid - throw new IllegalStateException(MessageFormat.format("{0}.detachedContact.contactId={1} is not valid.", this.getClass().getSimpleName(), detachedContact.getContactId())); //NOI18N - } - - // Get contact from it and find it - Contact managedContact = this.getEntityManager().find(detachedContact.getClass(), detachedContact.getContactId()); - - // Should be found - assert (managedContact instanceof Contact) : MessageFormat.format("Contact with id {0} not found, but should be.", detachedContact.getContactId()); //NOI18N - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.updateUserPersonalData: managedContact.contactId={1}", this.getClass().getSimpleName(), managedContact.getContactId())); //NOI18N - - // Is a fax number set? - if (detachedContact.getContactFaxNumber() instanceof DialableFaxNumber) { - // Make fax numbers managed - managedContact.setContactFaxNumber(this.getManaged(detachedContact.getContactFaxNumber(), detachedContact.getContactFaxNumber())); - } - - // Is a land-line number set? - if (detachedContact.getContactLandLineNumber() instanceof DialableLandLineNumber) { - // Make land-line numbers managed - managedContact.setContactLandLineNumber(this.getManaged(detachedContact.getContactLandLineNumber(), detachedContact.getContactLandLineNumber())); - } - - // Is a mobile number set? - if (detachedContact.getContactMobileNumber() instanceof DialableMobileNumber) { - // Make mobile numbers managed - managedContact.setContactMobileNumber(this.getManaged(detachedContact.getContactMobileNumber(), detachedContact.getContactMobileNumber())); - } - - // Set updated timestamp - managedContact.setContactUpdated(new GregorianCalendar()); - - // Copy all - ContactUtils.copyAll(detachedContact, managedContact); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.mergeContactData: managedContact={1} - EXIT!", this.getClass().getSimpleName(), managedContact)); //NOI18N - - // Return detached contact - return managedContact; - } - - /** - * Merges given (detached) contact's cellphone, land-line and fax numbers - *

- * @param detachedContact Detached contact instance - */ - protected void mergeContactsMobileLandLineFaxNumbers (final Contact detachedContact) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.mergeContactsMobileLandLineFaxNumbers: detachedContact={1} - CALLED!", this.getClass().getSimpleName(), detachedContact)); //NOI18N - - // The contact instance must be valid - if (null == detachedContact) { - // Throw NPE again - throw new NullPointerException("detachedContact is null"); //NOI18N - } else if (detachedContact.getContactId() == null) { - // Throw NPE again - throw new NullPointerException("detachedContact.contactId is null"); //NOI18N //NOI18N - } else if (detachedContact.getContactId() < 1) { - // Not valid - throw new IllegalStateException(MessageFormat.format("{0}.detachedContact.contactId={1} is not valid.", this.getClass().getSimpleName(), detachedContact.getContactId())); //NOI18N - } - - // Get all instances - DialableMobileNumber cellphone = detachedContact.getContactMobileNumber(); - DialableLandLineNumber landLine = detachedContact.getContactLandLineNumber(); - DialableFaxNumber fax = detachedContact.getContactFaxNumber(); - - // Is there a cellphone instance set? - if (cellphone instanceof DialableMobileNumber) { - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("updateUserPersonalData: cellphone.phoneId={0} is being updated ...", cellphone.getPhoneId())); //NOI18N - - // Then find it, too - DialableMobileNumber foundMobile = this.getEntityManager().find(cellphone.getClass(), cellphone.getPhoneId()); - - // Should be there - assert (foundMobile instanceof DialableMobileNumber) : MessageFormat.format("Mobile number with id {0} not found but should be.", foundMobile.getPhoneId()); //NOI18N - - // Then merge it, too - DialableMobileNumber managedMobile = this.getEntityManager().merge(foundMobile); - - // Should be there - assert (managedMobile instanceof DialableMobileNumber) : MessageFormat.format("Mobile number with id {0} not found but should be.", managedMobile.getPhoneId()); //NOI18N - - // Copy all - MobileNumbers.copyAll(detachedContact.getContactMobileNumber(), managedMobile); - - // Set it back - detachedContact.setContactMobileNumber(managedMobile); - } - - // Is there a fax instance set? - if (fax instanceof DialableFaxNumber) { - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("updateUserPersonalData: fax.phoneId={0} is being updated ...", fax.getPhoneId())); //NOI18N - - // Then find it, too - DialableFaxNumber foundFax = this.getEntityManager().find(fax.getClass(), fax.getPhoneId()); - - // Should be there - assert (foundFax instanceof DialableFaxNumber) : MessageFormat.format("Fax number with id {0} not found but should be.", foundFax.getPhoneId()); //NOI18N - - // Then merge it, too - DialableFaxNumber managedFax = this.getEntityManager().merge(foundFax); - - // Should be there - assert (managedFax instanceof DialableFaxNumber) : MessageFormat.format("Fax number with id {0} not found but should be.", managedFax.getPhoneId()); //NOI18N - - // Copy all - FaxNumbers.copyAll(detachedContact.getContactFaxNumber(), managedFax); - - // Set it back - detachedContact.setContactFaxNumber(managedFax); - } - - // Is there a fax instance set? - if (landLine instanceof DialableLandLineNumber) { - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("updateUserPersonalData: landLine.phoneId={0} is being updated ...", landLine.getPhoneId())); //NOI18N - - // Then find it, too - DialableLandLineNumber foundLandLine = this.getEntityManager().find(landLine.getClass(), landLine.getPhoneId()); - - // Should be there - assert (foundLandLine instanceof DialableLandLineNumber) : MessageFormat.format("Land line number with id {0} not found but should be.", foundLandLine.getPhoneId()); //NOI18N - - // Then merge it, too - DialableLandLineNumber managedLandLine = this.getEntityManager().merge(foundLandLine); - - // Should be there - assert (managedLandLine instanceof DialableLandLineNumber) : MessageFormat.format("Land line number with id {0} not found but should be.", managedLandLine.getPhoneId()); //NOI18N - - // Copy all - LandLineNumbers.copyAll(detachedContact.getContactLandLineNumber(), managedLandLine); - - // Set it back - detachedContact.setContactLandLineNumber(managedLandLine); - } - - // Trace message - this.getLoggerBeanLocal().logTrace("mergeContactsMobileLandLineFaxNumbers: EXIT!"); //NOI18N - } - - /** - * Sends an email with given subject line, template name to given recipient - * and user data - *

- * @param subjectLine Subject line - * @param templateName Template name - * @param user User instance - * @param baseUrl Base URL - * @param randomPassword A randomly-generated password or NULL if user had - * to enter it. - */ - protected void sendEmail (final String subjectLine, final String templateName, final User user, final String baseUrl, final String randomPassword) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("sendEmail: subjectLine={0},templateName={1},user={2},baseUrl={3} - CALLED!", subjectLine, templateName, user, baseUrl)); //NOI18N - - // All should be set - if (null == subjectLine) { - // Throw NPE - throw new NullPointerException("subjectLine is null"); //NOI18N - } else if (subjectLine.isEmpty()) { - // No subject line - throw new IllegalArgumentException("subjectLine is empty"); //NOI18N - } else if (null == templateName) { - // Throw NPE - throw new NullPointerException("templateName is null"); //NOI18N - } else if (templateName.isEmpty()) { - // No template name - throw new IllegalArgumentException("templateName is empty"); //NOI18N - } else if (null == user) { - // Throw NPE - throw new NullPointerException("user is null"); //NOI18N - } else if (user.getUserId() == null) { - // Throw NPE again - throw new NullPointerException("user.userId is null"); //NOI18N - } else if (user.getUserId() < 1) { - // Not valid number - throw new IllegalArgumentException(MessageFormat.format("user.userId={0} is not valid.", user.getUserId())); //NOI18N - } else if (user.getUserName() == null) { - // Throw NPE again - throw new NullPointerException("user.userName is null"); //NOI18N - } else if (user.getUserName().isEmpty()) { - // Empty string - throw new IllegalArgumentException("user.userName is empty"); //NOI18N - } else if (user.getUserAccountStatus() == null) { - // Throw NPE - throw new NullPointerException("user.userAccountStatus is null"); //NOI18N - } else if (user.getUserContact() == null) { - // Throw it again - throw new NullPointerException("user.userContact is null"); //NOI18N - } else if (user.getUserContact().getContactId() == null) { - // .. and again - throw new NullPointerException("user.userContact.contactId is null"); //NOI18N - } else if (user.getUserContact().getContactId() < 1) { - // Invalid id - throw new IllegalArgumentException(MessageFormat.format("user.userContact.contactId={0} is invalid", user.getUserContact().getContactId())); //NOI18N - } else if (user.getUserContact().getContactPersonalTitle() == null) { - // Throw NPE again - throw new NullPointerException("user.userContact.contactPersonalTitle is null"); //NOI18N - } else if (user.getUserLocale() == null) { - // Throw NPE again - throw new NullPointerException("user.userLocale is null"); //NOI18N - } else if (this.getSession() == null) { - // Throw NPE - throw new NullPointerException("this.session is not set. Have you forgotten to call super(String, String) and called only super() ?"); //NOI18N - } - - // Set all values - Properties variables = UserUtils.getAllUserFields(user); - - // Set base URL and random password - variables.put("baseUrl", baseUrl); //NOI18N - variables.put("randomPassword", ""); //NOI18N - - // Is the random password set? - if ((randomPassword instanceof String) && (!randomPassword.isEmpty())) { - variables.put("randomPassword", randomPassword); //NOI18N - } - - // Init addresss - Address recipientAddress; - - try { - // Create email address and set - recipientAddress = new InternetAddress(user.getUserContact().getContactEmailAddress()); - } catch (final AddressException ex) { - // Throw again - throw new EJBException(ex); - } - - // Prepare mail wrapper - // @TODO Language from message bundle - WrapableEmailDelivery emailWrapper = new EmailDeliveryWrapper(recipientAddress, subjectLine, templateName, variables, user.getUserLocale()); - - try { - // Send out email change - ObjectMessage message = this.getSession().createObjectMessage(); - message.setObject(emailWrapper); - - // Send message - this.sendMessage(message); - } catch (final JMSException ex) { - // Throw again - throw new EJBException(ex); - } - - // Trace message - this.getLoggerBeanLocal().logTrace("sendEmail: EXIT!"); //NOI18N - } - - /** - * Updates all contact's phone instances from other contact, both contacts - * should be the same. - *

- * @param contact Contact to set instances - * @param other Other contact to get instances from - */ - protected void setAllContactPhoneEntries (final Contact contact, final Contact other) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.setAllContactPhoneEntries: contact={1},other={2} - CALLED!", this.getClass().getSimpleName(), contact, other)); //NOI18N - - // Both must be the same and not null - if (null == contact) { - // Throw NPE - throw new NullPointerException("contact is null"); //NOI18N - } else if (null == other) { - // Throw NPE - throw new NullPointerException("other is null"); //NOI18N - } else if (!Objects.equals(contact, other)) { - // Not same instances - throw new IllegalArgumentException(MessageFormat.format("contact={0} and other={1} are not equal!", contact, other)); //NOI18N - } - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.setAllContactPhoneEntries: other.contactMobileNumber={0}", other.getContactMobileNumber())); //NOI18N - - // Is other cellphone not set? - if ((other.getContactMobileNumber() == null) || (PhoneUtils.isSameMobileNumber(contact.getContactMobileNumber(), other.getContactMobileNumber()))) { - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.setAllContactPhoneEntries: Copying cellphone entry ...", this.getClass().getSimpleName())); //NOI18N - - // Is the fax number set? - if (other.getContactMobileNumber() instanceof DialableMobileNumber) { - // Copy cellphone number - contact.setContactMobileNumber(this.getManaged(other.getContactMobileNumber(), contact.getContactMobileNumber())); - } else { - // Null it - contact.setContactMobileNumber(null); - } - } - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.setAllContactPhoneEntries: other.contactLandLineNumber={0}", other.getContactLandLineNumber())); //NOI18N - - // Is other cellphone not set? - if ((other.getContactLandLineNumber() == null) || (PhoneUtils.isSameLandLineNumber(contact.getContactLandLineNumber(), other.getContactLandLineNumber()))) { - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.setAllContactPhoneEntries: Copying land-line entry ...", this.getClass().getSimpleName())); //NOI18N - - // Is the land-line number set? - if (other.getContactLandLineNumber() instanceof DialableLandLineNumber) { - // Copy land-line number - contact.setContactLandLineNumber(this.getManaged(other.getContactLandLineNumber(), contact.getContactLandLineNumber())); - } else { - // Null it - contact.setContactLandLineNumber(null); - } - } - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.setAllContactPhoneEntries: other.contactFaxNumber={1}", this.getClass().getSimpleName(), other.getContactFaxNumber())); //NOI18N - - // Is other cellphone not set? - if ((other.getContactFaxNumber() == null) || (PhoneUtils.isSameFaxNumber(contact.getContactFaxNumber(), other.getContactFaxNumber()))) { - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.setAllContactPhoneEntries: Copying fax entry ...", this.getClass().getSimpleName())); //NOI18N - - // Is the fax number set? - if (other.getContactFaxNumber() instanceof DialableFaxNumber) { - // Copy fax number - contact.setContactFaxNumber(this.getManaged(other.getContactFaxNumber(), contact.getContactFaxNumber())); - } else { - // Null it - contact.setContactFaxNumber(null); - } - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.setAllContactPhoneEntries: EXIT!", this.getClass().getSimpleName())); //NOI18N - } - - /** - * Updates all contact's phone entry's updated timestamps - *

- * @param contact Contact instance to update - * @param isMobileUnlinked Whether a mobile entry has been unlinked in - * contact instance - * @param isLandlineUnlinked Whether a land-line entry has been unlinked in - * contact instance - * @param isFaxUnlinked Whether a fax entry has been unlinked in - * contact instance - */ - protected void setAllContactPhoneEntriesUpdated (final Contact contact, final boolean isMobileUnlinked, final boolean isLandlineUnlinked, final boolean isFaxUnlinked) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.setAllContactPhoneEntriesUpdated: contact={1},isMobileUnlinked={2},isLandlineUnlinked={3},isFaxUnlinked={4} - CALLED", this.getClass().getSimpleName(), contact, isMobileUnlinked, isLandlineUnlinked, isFaxUnlinked)); //NOI18N - - // The contact instance must be valid - if (null == contact) { - // Throw NPE again - throw new NullPointerException("contact is null"); //NOI18N - } else if (contact.getContactId() == null) { - // Throw NPE again - throw new NullPointerException("contact.contactId is null"); //NOI18N //NOI18N - } else if (contact.getContactId() < 1) { - // Not valid - throw new IllegalStateException(MessageFormat.format("contact.contactId={0} is not valid.", contact.getContactId())); //NOI18N - } - - // Get all phone instances - DialableLandLineNumber landLineNumber = contact.getContactLandLineNumber(); - DialableFaxNumber faxNumber = contact.getContactFaxNumber(); - DialableMobileNumber mobileNumber = contact.getContactMobileNumber(); - - // Flags and instances must be constistent - if (isMobileUnlinked && mobileNumber instanceof DialableMobileNumber) { - // Bad state - throw new IllegalStateException("isCellPhoneUnlinked is TRUE, but mobileNumber is set."); //NOI18N - } else if (isLandlineUnlinked && landLineNumber instanceof DialableLandLineNumber) { - // Bad state - throw new IllegalStateException("isLandlineUnlinked is TRUE, but landLineNumber is set."); //NOI18N - } else if (isFaxUnlinked && faxNumber instanceof DialableFaxNumber) { - // Bad state - throw new IllegalStateException("isFaxUnlinked is TRUE, but faxNumber is set."); //NOI18N - } - - // Is a phone number instance set? - if ((landLineNumber instanceof DialableLandLineNumber) && (landLineNumber.getPhoneId() instanceof Long) && (landLineNumber.getPhoneId() > 0)) { - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.setAllContactPhoneEntriesUpdated: Setting updated timestamp for land-line number ...", this.getClass().getSimpleName())); //NOI18N - - // Set updated timestamp - landLineNumber.setPhoneEntryUpdated(new GregorianCalendar()); - } - - // Is a fax number instance set? - if ((faxNumber instanceof DialableFaxNumber) && (faxNumber.getPhoneId() instanceof Long) && (faxNumber.getPhoneId() > 0)) { - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.setAllContactPhoneEntriesUpdated: Setting updated timestamp for fax number ...", this.getClass().getSimpleName())); //NOI18N - - // Set updated timestamp - faxNumber.setPhoneEntryUpdated(new GregorianCalendar()); - } - - // Is a mobile number instance set? - if ((mobileNumber instanceof DialableMobileNumber) && (mobileNumber.getPhoneId() instanceof Long) && (mobileNumber.getPhoneId() > 0)) { - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.setAllContactPhoneEntriesUpdated: Setting updated timestamp for cellphone number ...", this.getClass().getSimpleName())); //NOI18N - - // Set updated timestamp - mobileNumber.setPhoneEntryUpdated(new GregorianCalendar()); - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.setAllContactPhoneEntriesUpdated: EXIT!", this.getClass().getSimpleName())); //NOI18N - } - -} diff --git a/src/java/org/mxchange/addressbook/mailer/model/delivery/AddressbookEmailDeliveryMessageBean.java b/src/java/org/mxchange/addressbook/mailer/model/delivery/AddressbookEmailDeliveryMessageBean.java index 044b302..31b6e0a 100644 --- a/src/java/org/mxchange/addressbook/mailer/model/delivery/AddressbookEmailDeliveryMessageBean.java +++ b/src/java/org/mxchange/addressbook/mailer/model/delivery/AddressbookEmailDeliveryMessageBean.java @@ -18,10 +18,8 @@ package org.mxchange.addressbook.mailer.model.delivery; import java.io.Serializable; import java.text.MessageFormat; -import java.util.Properties; -import java.util.ResourceBundle; -import javax.annotation.PostConstruct; import javax.ejb.ActivationConfigProperty; +import javax.ejb.EJB; import javax.ejb.MessageDriven; import javax.jms.JMSException; import javax.jms.Message; @@ -29,11 +27,11 @@ import javax.jms.MessageListener; import javax.jms.ObjectMessage; import javax.mail.MessagingException; import javax.naming.NamingException; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; +import org.mxchange.jcoreee.database.BaseDatabaseBean; import org.mxchange.jmailee.model.delivery.wrapper.WrapableEmailDelivery; /** - * A message-driven bean for sending out emails + * A message-driven bean for sending out mails *

* @author Roland Häder */ @@ -44,22 +42,18 @@ import org.mxchange.jmailee.model.delivery.wrapper.WrapableEmailDelivery; @ActivationConfigProperty (propertyName = "destinationLookup", propertyValue = "jms/addressbook-email-queue"), @ActivationConfigProperty (propertyName = "destinationType", propertyValue = "javax.jms.Queue") }) -public class AddressbookEmailDeliveryMessageBean extends BaseAddressbookDatabaseBean implements MessageListener { +public class AddressbookEmailDeliveryMessageBean extends BaseDatabaseBean implements MessageListener { /** * Serial number */ private static final long serialVersionUID = 75_638_176_619_024L; - /** - * Configuration file - */ - private final String configFile = "org.mxchange.jmailer.config"; //NOI18N//NOI18N - /** * Mailer instance */ - private final DeliverableAddressbookEmail mailer; + @EJB + private DeliverableAddressbookEmailLocal mailerBean; /** * Default constructor @@ -69,51 +63,6 @@ public class AddressbookEmailDeliveryMessageBean extends BaseAddressbookDatabase public AddressbookEmailDeliveryMessageBean () throws NamingException { // Call super constructor super(); - - // Init mailer instance - this.mailer = new AddressbookMailer(); - } - - /** - * Post-construction - */ - @PostConstruct - public void init () { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.init: CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Try to load bundle - ResourceBundle bundle = ResourceBundle.getBundle(this.configFile); - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.init: bundle={1}", this.getClass().getSimpleName(), bundle)); //NOI18N - - // The bunble should be valid - if (null == bundle) { - // Throw NPE - throw new NullPointerException(MessageFormat.format("bundle is null, maybe file {0} does not exist?", this.configFile)); //NOI18N - } - - // Init Properties - Properties properties = new Properties(); - - // Is the bundle not empty? - if (!bundle.keySet().isEmpty()) { - // Loop through all - for (final String key : bundle.keySet()) { - // Log debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.init: key={1}", this.getClass().getSimpleName(), key)); //NOI18N - - // Get string from bundle and set it in properties - properties.put(key, bundle.getString(key)); - } - } - - // Handle it over to the mailer - this.mailer.init(properties); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.init: EXIT!", this.getClass().getSimpleName())); //NOI18N } @Override @@ -164,7 +113,7 @@ public class AddressbookEmailDeliveryMessageBean extends BaseAddressbookDatabase if (wrapper.getLocale() == null) { // Throw NPE throw new NullPointerException("wrapper.locale is null"); //NOI18N - } else if (wrapper.getRecipientAddress()== null) { + } else if (wrapper.getRecipientAddress() == null) { // Throw again ... throw new NullPointerException("wrapper.recipientAddress is null"); //NOI18N } else if (wrapper.getSubjectLine() == null) { @@ -183,7 +132,7 @@ public class AddressbookEmailDeliveryMessageBean extends BaseAddressbookDatabase try { // Send email out - this.mailer.sendDeliverableMail(wrapper); + this.mailerBean.sendDeliverableMail(wrapper); } catch (final MessagingException ex) { // Opps, something went wrong this.getLoggerBeanLocal().logException(ex); diff --git a/src/java/org/mxchange/addressbook/mailer/model/delivery/AddressbookMailerSingletonBean.java b/src/java/org/mxchange/addressbook/mailer/model/delivery/AddressbookMailerSingletonBean.java new file mode 100644 index 0000000..895fbcd --- /dev/null +++ b/src/java/org/mxchange/addressbook/mailer/model/delivery/AddressbookMailerSingletonBean.java @@ -0,0 +1,173 @@ +/* + * Copyright (C) 2016, 2017 Roland Häder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.addressbook.mailer.model.delivery; + +import java.text.MessageFormat; +import java.util.Map; +import java.util.Properties; +import java.util.ResourceBundle; +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import javax.ejb.Singleton; +import javax.mail.MessagingException; +import javax.mail.Session; +import org.apache.velocity.Template; +import org.apache.velocity.VelocityContext; +import org.mxchange.jmailee.model.delivery.BaseMailerBean; +import org.mxchange.jmailee.model.delivery.wrapper.WrapableEmailDelivery; + +/** + * A singleton mailer EJB + *

+ * @author Roland Häder + */ +@Singleton +public class AddressbookMailerSingletonBean extends BaseMailerBean implements DeliverableAddressbookEmailLocal { + + /** + * Serial number + */ + private static final long serialVersionUID = 17_857_816_596_030_918L; + + /** + * Configuration file + */ + private final String configFile = "org.mxchange.jmailer.config"; //NOI18N//NOI18N + + /** + * Email session + */ + @Resource (name = "addressbookSmtpSession", description = "A Java Mail session") + private Session mailSession; + + /** + * Default constructor + *

+ */ + public AddressbookMailerSingletonBean () { + } + + /** + * Post-construction + */ + @PostConstruct + public void init () { + // Trace message + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.init: CALLED!", this.getClass().getSimpleName())); //NOI18N + + // Try to load bundle + ResourceBundle bundle = ResourceBundle.getBundle(this.configFile); + + // Debug message + this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.init: bundle={1}", this.getClass().getSimpleName(), bundle)); //NOI18N + + // The bunble should be valid + if (null == bundle) { + // Throw NPE + throw new NullPointerException(MessageFormat.format("bundle is null, maybe file {0} does not exist?", this.configFile)); //NOI18N + } + + // Init Properties + Properties properties = new Properties(); + + // Is the bundle not empty? + if (!bundle.keySet().isEmpty()) { + // Loop through all + for (final String key : bundle.keySet()) { + // Log debug message + this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.init: key={1}", this.getClass().getSimpleName(), key)); //NOI18N + + // Get string from bundle and set it in properties + properties.put(key, bundle.getString(key)); + } + } + + // Handle it over to the mailer + this.setProperties(properties); + + // Trace message + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.init: EXIT!", this.getClass().getSimpleName())); //NOI18N + } + + @Override + public void sendDeliverableMail (final WrapableEmailDelivery emailWrapper) throws MessagingException { + // Log trace message + this.getLoggerBeanLocal().logTrace(MessageFormat.format("sendDeliverableMail: emailWrapper={0} - CALLED!", emailWrapper)); //NOI18N + + // The parameter must be valid + if (null == emailWrapper) { + // Throw NPE + throw new NullPointerException("emailWrapper is null"); //NOI18N + } else if (emailWrapper.getRecipientAddress() == null) { + // Throw NPE again + throw new NullPointerException("emailWrapper.recipientAddress is null"); //NOI18N + } else if (emailWrapper.getSubjectLine() == null) { + // ... and again + throw new NullPointerException("emailWrapper.subjectLine is null"); //NOI18N + } else if (emailWrapper.getSubjectLine().isEmpty()) { + // Is empty + throw new IllegalArgumentException("emailWrapper.subjectLine is empty"); //NOI18N + } else if (emailWrapper.getTemplateName() == null) { + // ... and again + throw new NullPointerException("emailWrapper.templateName is null"); //NOI18N + } else if (emailWrapper.getTemplateName().isEmpty()) { + // Is empty + throw new IllegalArgumentException("emailWrapper.templateName is empty"); //NOI18N + } else if (emailWrapper.getLocale() == null) { + // Throw NPE again + throw new NullPointerException("emailWrapper.locale is null"); //NOI18N + } else if (!emailWrapper.getTemplateVariables().containsKey("baseUrl")) { //NOI18N + // Not set + throw new IllegalArgumentException("emailWrapper.templateVariables.baseUrl is not set"); //NOI18N + } + + // All required data is set, load template + Template template = this.getTemplateEngine().getTemplate(String.format("templates/%s/%s.vm", emailWrapper.getLocale().getLanguage().toLowerCase(), emailWrapper.getTemplateName())); //NOI18N + + // Init context + VelocityContext context = new VelocityContext(); + + // Are some variables set? + if ((emailWrapper.getTemplateVariables() != null) && (!emailWrapper.getTemplateVariables().isEmpty())) { + // Add all variables + for (Map.Entry entry : emailWrapper.getTemplateVariables().entrySet()) { + // Get key/value + String key = (String) entry.getKey(); + String value = (String) entry.getValue(); + + // Both should not be empty + if (null == key) { + // Throw NPE + throw new NullPointerException("key is null"); //NOI18N + } else if (null == value) { + // Throw NPE again + throw new NullPointerException(MessageFormat.format("value for key={0} is null", key)); //NOI18N + } + + // Set it + context.put(key, value); + } + } + + // Send the email + this.deliverMailWithTemplate(template, context, emailWrapper, this.mailSession); + + // Trace message + this.getLoggerBeanLocal().logTrace("sendDeliverableMail: EXIT!"); //NOI18N + } + +} diff --git a/src/java/org/mxchange/addressbook/model/addressbook/AddressbookSessionBean.java b/src/java/org/mxchange/addressbook/model/addressbook/AddressbookSessionBean.java deleted file mode 100644 index 95e5045..0000000 --- a/src/java/org/mxchange/addressbook/model/addressbook/AddressbookSessionBean.java +++ /dev/null @@ -1,265 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * 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.addressbook.model.addressbook; - -import java.text.MessageFormat; -import java.util.GregorianCalendar; -import java.util.List; -import javax.ejb.Stateless; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; -import org.mxchange.jaddressbook.exceptions.AddressbookNameAlreadyUsedException; -import org.mxchange.jaddressbook.exceptions.AddressbookNotFoundException; -import org.mxchange.jaddressbook.model.addressbook.Addressbook; -import org.mxchange.jaddressbook.model.addressbook.UserAddressbook; -import org.mxchange.jaddressbook.model.addressbook.entry.AddressbookEntry; -import org.mxchange.jusercore.model.user.User; - -/** - * A stateless bean handling address books - *

- * @author Roland Häder - */ -@Stateless (name = "addressbook", description = "A stateless bean for handling Addressbook addressbooks") -public class AddressbookSessionBean extends BaseAddressbookDatabaseBean implements AddressbookSessionBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 129_857_871_287_691L; - - @Override - @SuppressWarnings ("unchecked") - public List allEntries (final Addressbook addressbook) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("allEntries: addressbook={0} - CALLED!", addressbook)); //NOI18N - - // Validate parameter - if (null == addressbook) { - // Throw NPE - throw new NullPointerException("addressbook is null"); - } else if (addressbook.getAddressbookId() == null) { - // Throw NPE again - throw new NullPointerException("addressbook.addressbookId is null"); - } else if (addressbook.getAddressbookId() < 1) { - // Invalid id number - throw new IllegalArgumentException(MessageFormat.format("addressbook.addressbookId={0} is invalid.", addressbook.getAddressbookId())); - } else if (addressbook.getAddressbookUser() == null) { - // Throw again NPE - throw new NullPointerException("addressbook.addressbookUser is null"); - } else if (addressbook.getAddressbookUser().getUserId() == null) { - // Throw again NPE - throw new NullPointerException("addressbook.addressbookUser.userId is null"); - } else if (addressbook.getAddressbookUser().getUserId() < 1) { - // Invalid id number again - throw new IllegalArgumentException(MessageFormat.format("addressbook.addressbookUser.userId={0} is invalid", addressbook.getAddressbookUser().getUserId())); - } - - // Generate query - Query query = this.getEntityManager().createNamedQuery("SearchUsersAddressbookEntries", List.class); //NOI18N - - // Set parameters - query.setParameter("addressbook", addressbook); //NOI18N - query.setParameter("owner", addressbook.getAddressbookUser()); //NOI18N - - // Return it - return query.getResultList(); - } - - @Override - public Addressbook createAddressbook (final Addressbook addressbook) throws AddressbookNameAlreadyUsedException { - // Is it not null? - if (null == addressbook) { - // Abort here - throw new NullPointerException("addressbook is null"); //NOI18N - } else if (addressbook.getAddressbookUser() == null) { - // User instance is null - throw new NullPointerException("addressbook.user should not be null."); //NOI18N - } else if (addressbook.getAddressbookName() == null) { - // Address book name not set - throw new NullPointerException("addressbook.addressbookName should not be null"); //NOI18N - } else if (addressbook.getAddressbookName().isEmpty()) { - // Address book name not set - throw new IllegalArgumentException("addressbook.addressbookName should not be empty"); //NOI18N - } else if (this.isAddressbookNameUsed(addressbook)) { - // The assigned user already used that name - throw new AddressbookNameAlreadyUsedException(addressbook); - } - - // Add timestamp of creation - addressbook.setAddressbookCreated(new GregorianCalendar()); - - // Persist it now - this.getEntityManager().persist(addressbook); - - // Flush it to get all data - this.getEntityManager().flush(); - - // Return it updated - return addressbook; - } - - @Override - public Addressbook getAddressbookById (final Long addressbookId) throws AddressbookNotFoundException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("getAddressbookById: addressbookId={0} - CALLED!", addressbookId)); //NOI18N - - // addressbookId should not be null or below 1 - if (null == addressbookId) { - // Throw NPE - throw new NullPointerException("addressbookId is null"); //NOI18N - } else if (addressbookId < 1) { - // Not valid - throw new IllegalArgumentException(MessageFormat.format("addressbookId is not valid: {0}", addressbookId)); //NOI18N - } else if (!this.isAddressbookIdUsed(addressbookId)) { - // No address book found - throw new AddressbookNotFoundException(addressbookId); - } - - // Get named query instance - Query query = this.getEntityManager().createNamedQuery("SearchAddressbookById", UserAddressbook.class); //NOI18N - - // Set parameter - query.setParameter("id", addressbookId); //NOI18N - - // Return it - return (Addressbook) query.getSingleResult(); - } - - @Override - @SuppressWarnings ("unchecked") - public List getUsersAddressbookList (final User loggedInUser) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("getUsersList: loggedInUser={0} - CALLED!", loggedInUser)); //NOI18N - - // Is the user instance null? - if (null == loggedInUser) { - // Abort here - throw new NullPointerException("loggedInUser is null"); //NOI18N - } - - // Get query instance - Query query = this.getEntityManager().createNamedQuery("AllUsersAddressbooks", List.class); //NOI18N - - // Set parameter - query.setParameter("param", loggedInUser); //NOI18N - - // Get full list from JPA - List addressbooks = query.getResultList(); - - // Return it - return addressbooks; - } - - @Override - public boolean isAddressbookIdUsed (final Long addressbookId) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("isAddressbookIdUsed: addressbookId={0} - CALLED!", addressbookId)); //NOI18N - - // Is it null or zero? - if (null == addressbookId) { - // Throw NPE - throw new NullPointerException("addressbookId is null"); //NOI18N - } else if (addressbookId < 1) { - // Not valid id number - throw new IllegalArgumentException(MessageFormat.format("addressbookId is not valid: {0}", addressbookId)); //NOI18N - } - - // Get query instance - Query query = this.getEntityManager().createNamedQuery("SearchAddressbookById", UserAddressbook.class); //NOI18N - - // Set parameter - query.setParameter("id", addressbookId); //NOI18N - - // Default is not valid - boolean isValid = false; - - // Try it again, yes no other way - try { - // Get single result - Addressbook addressbook = (Addressbook) query.getSingleResult(); - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("isAddressbookIdUsed: addressbook={0} - FOUND!", addressbook)); //NOI18N - - // Found one! - isValid = true; - } catch (final NoResultException ex) { - // Debug log only, maybe out-dated link followed - this.getLoggerBeanLocal().logDebug(MessageFormat.format("isAddressbookIdUsed: addressbookId={0} is not valid: {1}", addressbookId, ex)); //NOI18N - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("isAddressbookIdUsed: isValid={0} - EXIT!", isValid)); //NOI18N - - // Return result - return isValid; - } - - @Override - public boolean isAddressbookNameUsed (final Addressbook addressbook) { - // Is it not null? - if (null == addressbook) { - // Abort here - throw new NullPointerException("addressbook is null"); //NOI18N - } else if (addressbook.getAddressbookUser() == null) { - // User instance is null - throw new NullPointerException("addressbook.addressbookUser is null."); //NOI18N - } else if (addressbook.getAddressbookUser().getUserId() == null) { - // User instance is null - throw new NullPointerException("addressbook.addressbookUser.userId is null."); //NOI18N - } else if (addressbook.getAddressbookUser().getUserId() < 1) { - // User instance is null - throw new NullPointerException(MessageFormat.format("addressbook.addressbookUser.userId={0} is invalid.", addressbook.getAddressbookUser().getUserId())); //NOI18N - } else if (addressbook.getAddressbookName() == null) { - // Address book name not set - throw new NullPointerException("addressbook.addressbookName should not be null"); //NOI18N - } else if (addressbook.getAddressbookName().isEmpty()) { - // Address book name not set - throw new IllegalArgumentException("addressbook.addressbookName should not be empty"); //NOI18N - } - - // Get query instance - Query query = this.getEntityManager().createNamedQuery("SearchUserAddressbookName", Addressbook.class); //NOI18N - - // Set parameter - query.setParameter("user", addressbook.getAddressbookUser()); //NOI18N - query.setParameter("name", addressbook.getAddressbookName()); //NOI18N - - // Default is not found - boolean isUsed = false; - - // Try it - try { - // Get a single result - Addressbook dummy = (Addressbook) query.getSingleResult(); - - // Log it - this.getLoggerBeanLocal().logDebug(MessageFormat.format("isAddressbookNameUsed: Found an address book: {0}", dummy)); //NOI18N - - // Found one - isUsed = true; - } catch (final NoResultException ex) { - // No result found, so log it away - this.getLoggerBeanLocal().logDebug(MessageFormat.format("isAddressbookNameUsed: getSingleResult() did not return a result: {0}", ex)); //NOI18N - } - - // Return result - return isUsed; - } -} diff --git a/src/java/org/mxchange/addressbook/model/addressbook/share/SharedAddressbooksSessionBean.java b/src/java/org/mxchange/addressbook/model/addressbook/share/SharedAddressbooksSessionBean.java deleted file mode 100644 index 9a90c99..0000000 --- a/src/java/org/mxchange/addressbook/model/addressbook/share/SharedAddressbooksSessionBean.java +++ /dev/null @@ -1,347 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * 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.addressbook.model.addressbook.share; - -import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.Objects; -import javax.ejb.Stateless; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; -import org.mxchange.addressbook.model.shared.AddressbookShareSessionBeanRemote; -import org.mxchange.jaddressbook.model.addressbook.Addressbook; -import org.mxchange.jaddressbookshare.exceptions.UserAlreadySharingAddressbookException; -import org.mxchange.jaddressbookshare.model.addressbook.shared.AddressbookShare; -import org.mxchange.jaddressbookshare.model.addressbook.shared.ShareableAddressbook; -import org.mxchange.jusercore.model.user.User; - -/** - * A stateless bean for handling address book sharing - *

- * @author Roland Häder - */ -@Stateless (name = "share", description = "A stateless bean for handling shared addressbooks") -public class SharedAddressbooksSessionBean extends BaseAddressbookDatabaseBean implements AddressbookShareSessionBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 136_984_697_285_694_710L; - - @Override - @SuppressWarnings ("unchecked") - public List allSharedAddressbooks (final User user) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("allSharedAddressbooks: user={0} - CALLED!", user)); //NOI18N - - // Is user null? - if (null == user) { - // Throw NPE - throw new NullPointerException("user is null"); //NOI18N - } else if (user.getUserId() == null) { - // Null userId is not allowed - throw new NullPointerException("user.userId is null"); //NOI18N - } else if (user.getUserId() < 1) { - // Not allowed value - throw new IllegalArgumentException(MessageFormat.format("user.UserId={0} is an invalid value", user.getUserId())); //NOI18N - } - - // Get named query - Query query = this.getEntityManager().createNamedQuery("SearchUserSharedAddressbooks", List.class); //NOI18N - - // Set parameter - query.setParameter("user", user); //NOI18N - - // Return full list - List list = query.getResultList(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("allSharedAddressbooks: list.size()={0} - EXIT!", list.size())); - - // Return list - return list; - } - - @Override - @SuppressWarnings ("unchecked") - public List allUsersNotSharing (final User user, final Addressbook addressbook) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("allUsersNotSharing: user={0},addressbook={1} - CALLED!", user, addressbook)); //NOI18N - - // Test parameter - if (null == user) { - // Throw NPE - throw new NullPointerException("user is null"); //NOI18N - } else if (user.getUserId() == null) { - // Throw NPE again - 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 (null == addressbook) { - // Again NPE - throw new NullPointerException("addressbook is null"); //NOI18N - } else if (addressbook.getAddressbookId() == null) { - // Again NPE - throw new NullPointerException("addressbook.addressbookId is null"); //NOI18N - } else if (addressbook.getAddressbookId() < 1) { - // Invalid id - throw new IllegalArgumentException(MessageFormat.format("addressbook.getAddressbookId={0} is invalid", addressbook.getAddressbookId())); //NOI18N - } - - // Get named query for a user list without given user - Query allUsersExceptQuery = this.getEntityManager().createNamedQuery("SearchAllUsersExcept", List.class); //NOI18N - - // Set parameter - allUsersExceptQuery.setParameter("user", user); //NOI18N - - // Get full list - List allUsersExcept = allUsersExceptQuery.getResultList(); - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("allUsersNotSharing: allUsersExcept.size()={0}", allUsersExcept.size())); //NOI18N - - // Now get all shares this user has created - Query allSharesQuery = this.getEntityManager().createNamedQuery("SearchUserSharedAddressbooks", List.class); //NOI18N - - // Set parameter - allSharesQuery.setParameter("user", user); //NOI18N - - // Get full list again - List allShares = allSharesQuery.getResultList(); - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("allUsersNotSharing: allShares.size()={0}", allShares.size())); //NOI18N - - // List for users aharing with given - List sharingUsers = new ArrayList<>(allShares.size()); - - // Check all entries - for (final ShareableAddressbook share : allShares) { - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("allUsersNotSharing: share.shareUserSharee={0}", share.getShareUserSharee())); //NOI18N - - // Add it - sharingUsers.add(share.getShareUserSharee()); - } - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("allUsersNotSharing: sharingUsers.size()={0}", sharingUsers.size())); //NOI18N - - // Init final user list - List userList = new LinkedList<>(); - - // Walk through all users - for (final User foundUser : allUsersExcept) { - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("allUsersNotSharing: foundUser={0}", foundUser)); //NOI18N - - // Does the list contain it ? - if (!sharingUsers.contains(foundUser)) { - // Found one to add - this.getLoggerBeanLocal().logDebug(MessageFormat.format("allUsersNotSharing: foundUser={0} - ADDING!", foundUser)); //NOI18N - - // Add it - userList.add(foundUser); - } - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("allUsersNotSharing: userList.size()={0} - EXIT!", userList.size())); //NOI18N - - // Return it - return userList; - } - - @Override - @SuppressWarnings ("unchecked") - public Integer countAllUserSharedAddressbooks (final User user) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("countAllUserSharedAddressbooks: user={0} - CALLED!", user)); //NOI18N - - // user should be valid - if (null == user) { - // Throw NPE - throw new NullPointerException("user is null"); //NOI18N - } else if (user.getUserId() == null) { - // Throw NPE again - 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 - } - - // Get named query - Query query = this.getEntityManager().createNamedQuery("SearchUserSharedAddressbooks", List.class); //NOI18N - - // Set parameter - query.setParameter("user", user); //NOI18N - - // Default is zero - Integer count = 0; - - // Try it - try { - // Get whole list - List dummy = query.getResultList(); - - // Set size - count = dummy.size(); - } catch (final NoResultException ex) { - // Need to catch this, so log it - this.getLoggerBeanLocal().logDebug(MessageFormat.format("countAllUserSharedAddressbooks: getResultList() failed: {0}", ex)); //NOI18N - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("countAllUserSharedAddressbooks: count={0} - EXIT!", count)); //NOI18N - - // Return count - return count; - } - - @Override - public Boolean isUserSharingAddressbooks (final User user) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("isUserSharingAddressbooks: user={0} - CALLED!", user)); //NOI18N - - // Is user null? - if (null == user) { - // Throw NPE - throw new NullPointerException("user is null"); //NOI18N - } else if (user.getUserId() == null) { - // Null userId is not allowed - throw new NullPointerException("user.userId is null"); //NOI18N - } else if (user.getUserId() < 1) { - // Not allowed value - throw new IllegalArgumentException(MessageFormat.format("user.UserId={0} is an invalid value", user.getUserId())); //NOI18N - } - - // Get results - List list = this.allSharedAddressbooks(user); - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("isUserSharingAddressbooks: list.size()={0}", list.size())); //NOI18N - - // Is it not empty? - Boolean isSharing = (!list.isEmpty()); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("isUserSharingAddressbooks: iSharing={0} - EXIT!", isSharing)); //NOI18N - - // Return it - return isSharing; - } - - @Override - public ShareableAddressbook startSharing (final User sharee, final Addressbook addressbook) throws UserAlreadySharingAddressbookException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("startSharing: sharee={0},addressbook={1} - CALLED!", sharee, addressbook)); //NOI18N - - // Check all conditions - if (null == sharee) { - // Throw NPE - throw new NullPointerException("sharee is null"); //NOI18N - } else if (sharee.getUserId() == null) { - // Throw NPE again - throw new NullPointerException("sharee.userId is null"); //NOI18N - } else if (sharee.getUserId() < 1) { - // Invalid id number - throw new IllegalStateException(MessageFormat.format("sharee.userId={0} is invalid", sharee.getUserId())); //NOI18N - } else if (null == addressbook) { - // Throw NPE again - throw new NullPointerException("addressbook is null"); //NOI18N - } else if (addressbook.getAddressbookId() == null) { - // Throw NPE again - throw new NullPointerException("addressbook.addressbookId is null"); //NOI18N - } else if (addressbook.getAddressbookId() < 1) { - // Invalid id number - throw new IllegalArgumentException(MessageFormat.format("addressbook.addressbookId={0} is invalid.", addressbook.getAddressbookId())); //NOI18N - } else if (Objects.equals(addressbook.getAddressbookUser(), sharee)) { - // Sharing with yourself! - throw new IllegalStateException("User tries to share with himself."); //NOI18N - } - - // Is the entry already there? - if (this.isUserAlreadySharingAddressbook(addressbook, sharee)) { - // Abort here - throw new UserAlreadySharingAddressbookException(addressbook, sharee); - } - - // All fine so far, then create the instance - ShareableAddressbook share = new AddressbookShare(addressbook, sharee); - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("startSharing: share={0}", share)); //NOI18N - - // Persist it - this.getEntityManager().persist(share); - - // Flush to get id number - this.getEntityManager().flush(); - - // Return updated instance - return share; - } - - /** - * Checks whether the owner of the given address book is already sharing it - * with the sharee. - *

- * @param addressbook Address book to be shared with - * @param sharee User sharee instance - *

- * @return Wether the address book is already shared with the sharee - */ - private boolean isUserAlreadySharingAddressbook (final Addressbook addressbook, final User sharee) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("isUserAlreadySharingAddressbook: addressbook={0},sharee={1} - CALLED!", addressbook, sharee)); //NOI18N - - // Get named query - Query query = this.getEntityManager().createNamedQuery("SearchShareeAddressbookShare", AddressbookShare.class); //NOI18N - - // Set parameter - query.setParameter("addressbook", addressbook); //NOI18N - query.setParameter("sharee", sharee); //NOI18N - - // Default is not found - boolean isFound = false; - - // Try it - try { - // Get single instance - ShareableAddressbook share = (ShareableAddressbook) query.getSingleResult(); - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("isUserAlreadySharingAddressbook: share={0} - FOUND!", share)); //NOI18N - - // Set found - isFound = true; - } catch (final NoResultException ex) { - // Not found, log exception - this.getLoggerBeanLocal().logDebug(MessageFormat.format("isUserAlreadySharingAddressbook: Notfound. Exception: {0}", ex)); //NOI18N - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("isUserAlreadySharingAddressbook: isFound={0} - EXIT!", isFound)); //NOI18N - - // Return it - return isFound; - } -} diff --git a/src/java/org/mxchange/jcontacts/contact/AddressbookAdminContactSessionBean.java b/src/java/org/mxchange/jcontacts/contact/AddressbookAdminContactSessionBean.java deleted file mode 100644 index baff654..0000000 --- a/src/java/org/mxchange/jcontacts/contact/AddressbookAdminContactSessionBean.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * 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.jcontacts.contact; - -import java.text.MessageFormat; -import java.util.GregorianCalendar; -import javax.ejb.Stateless; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; -import org.mxchange.jcontacts.exceptions.ContactAlreadyAddedException; - -/** - * An administrative contact EJB - *

- * @author Roland Häder - */ -@Stateless (name = "adminContact", description = "An administrative contact EJB") -public class AddressbookAdminContactSessionBean extends BaseAddressbookDatabaseBean implements AdminContactSessionBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 542_145_347_916L; - - /** - * Default constructor - */ - public AddressbookAdminContactSessionBean () { - // Call super constructor - super(); - } - - @Override - public Contact addContact (final Contact contact) throws ContactAlreadyAddedException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.addContact: contact={1} - CALLED!", this.getClass().getSimpleName(), contact)); //NOI18N - - // Is the instance set? - if (null == contact) { - // Throw NPE - throw new NullPointerException("contact is null"); //NOI18N - } else if (contact.getContactId() != null) { - // Should be null - throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} - is not null", contact.getContactId())); //NOI18N - } - - // Set created timestamp - contact.setContactCreated(new GregorianCalendar()); - - // Set all created timestamps, if instance is there - this.setAllContactPhoneEntriesCreated(contact); - - // Persist it - this.getEntityManager().persist(contact); - - // Flush it to get contactId set - this.getEntityManager().flush(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.addContact: contact.contactId={1} after persisting - EXIT!", this.getClass().getSimpleName(), contact.getContactId())); //NOI18N - - // Return it - return contact; - } - - @Override - public void deleteContactData (final Contact contact) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.deleteContactData: contact={1} - CALLED!", this.getClass().getSimpleName(), contact)); //NOI18N - - // Is the instance set? - if (null == contact) { - // Throw NPE - throw new NullPointerException("contact is null"); //NOI18N - } else if (contact.getContactId() == null) { - // Should not be null - 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 - } - - // Merge it to get a managed entity back - Contact managedContact = this.getEntityManager().getReference(contact.getClass(), contact.getContactId()); - - // Remove it from database - this.getEntityManager().remove(managedContact); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.deleteContactData: EXIT!", this.getClass().getSimpleName())); //NOI18N - } - -} diff --git a/src/java/org/mxchange/jcontacts/contact/AddressbookContactSessionBean.java b/src/java/org/mxchange/jcontacts/contact/AddressbookContactSessionBean.java deleted file mode 100644 index 2610872..0000000 --- a/src/java/org/mxchange/jcontacts/contact/AddressbookContactSessionBean.java +++ /dev/null @@ -1,326 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * 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.jcontacts.contact; - -import java.text.MessageFormat; -import java.util.Iterator; -import java.util.List; -import java.util.Objects; -import javax.ejb.Stateless; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; -import org.mxchange.jcontacts.exceptions.ContactNotFoundException; - -/** - * A contact EJB - *

- * @author Roland Häder - */ -@Stateless (name = "contact", description = "A bean handling contact data") -public class AddressbookContactSessionBean extends BaseAddressbookDatabaseBean implements ContactSessionBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 542_145_347_916L; - - /** - * Default constructor - */ - public AddressbookContactSessionBean () { - // Call super constructor - super(); - } - - @Override - public Contact findContactByEmailAddress (final String emailAddress) throws ContactNotFoundException { - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findContactByEmailAddress: emailAddress={1} - CALLED!", this.getClass().getSimpleName(), emailAddress)); //NOI18N - - // The 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 - } - - // Get query instance - Query query = this.getEntityManager().createNamedQuery("SearchContactByEmailAddress", UserContact.class); //NOI18N - - // Set parameter - query.setParameter("emailAddress", emailAddress); //NOI18N - - // Init contact instance - Contact contact; - - // Try to find a result - try { - // Find a single result - contact = (Contact) query.getSingleResult(); - - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findContactByEmailAddress: Found contact={1}", this.getClass().getSimpleName(), contact)); //NOI18N - } catch (final NoResultException ex) { - // No result found - throw new ContactNotFoundException(emailAddress, ex); - } - - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findContactByEmailAddress: contact={1} - EXIT!", this.getClass().getSimpleName(), contact)); //NOI18N - - // Return found instance - return contact; - } - - @Override - public Contact findContactById (final Long contactId) throws ContactNotFoundException { - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findContactById: contactId={1} - CALLED!", this.getClass().getSimpleName(), contactId)); //NOI18N - - // The parameter must be valid - if (null == contactId) { - // Throw NPE - throw new NullPointerException("contactId is null"); //NOI18N - } else if (contactId < 1) { - // Not valid - throw new IllegalArgumentException(MessageFormat.format("contactId={0} is not valid", contactId)); //NOI18N - } - - // Get query instance - Query query = this.getEntityManager().createNamedQuery("SearchContactById", UserContact.class); //NOI18N - - // Set parameter - query.setParameter("contactId", contactId); //NOI18N - - // Init contact instance - Contact contact; - - // Try to find a result - try { - // Find a single result - contact = (Contact) query.getSingleResult(); - - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findContactById: Found contact={1}", this.getClass().getSimpleName(), contact)); //NOI18N - } catch (final NoResultException ex) { - // No result found - throw new ContactNotFoundException(contactId, ex); - } - - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findContactById: contact={1} - EXIT!", this.getClass().getSimpleName(), contact)); //NOI18N - - // Return found instance - return contact; - } - - @Override - @SuppressWarnings ("unchecked") - public List getAllContacts () { - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getAllContacts - CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Create query instance - Query query = this.getEntityManager().createNamedQuery("AllContacts"); //NOI18N - - // Get list - List contacts = query.getResultList(); - - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getAllContacts: contacts.size()={1} - EXIT!", this.getClass().getSimpleName(), contacts.size())); //NOI18N - - // Return it - return contacts; - } - - @Override - @SuppressWarnings ("unchecked") - public List getEmailAddressList () { - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getEmailAddressList - CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Create query instance - Query query = this.getEntityManager().createNamedQuery("AllContactEmailAddresses"); //NOI18N - - // Get list - List emailAddresses = query.getResultList(); - - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getEmailAddressList: emailAddresses.size()={1} - EXIT!", this.getClass().getSimpleName(), emailAddresses.size())); //NOI18N - - // Return it - return emailAddresses; - } - - @Override - public boolean isEmailAddressRegistered (final String emailAddress) { - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isEmailAddressRegistered: emailAddress={1} - CALLED!", this.getClass().getSimpleName(), emailAddress)); //NOI18N - - // The email address should be valid - if (null == emailAddress) { - // Is null - throw new NullPointerException("emailAddress is null"); //NOI18N - } else if (emailAddress.isEmpty()) { - // Is empty - throw new IllegalArgumentException("emailAddress is empty"); //NOI18N - } - - // Default is not found - boolean isFound = false; - - try { - // Ask other method for contact instance - Contact contact = this.findContactByEmailAddress(emailAddress); - - // Log debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.isEmailAddressRegistered: Found contact={1} for emailAddress={2}", this.getClass().getSimpleName(), contact, emailAddress)); //NOI18N - - // It is found ... - isFound = true; - } catch (final ContactNotFoundException ex) { - // @TODO Was not found, log exception for spam check? - } - - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isEmailAddressRegistered: isFound={1} - EXIT!", this.getClass().getSimpleName(), isFound)); //NOI18N - - // Return status - return isFound; - } - - @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() > 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 - List contacts = this.getAllContacts(); - - // 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; - } - - // Get iterator - Iterator iterator = contacts.iterator(); - - // Loop through all - while (iterator.hasNext()) { - // Get contact - Contact next = iterator.next(); - - // Is same contact? - if ((Objects.equals(contact, next)) || (ContactUtils.isSameContact(contact, next))) { - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.isContactFound: Found same contact: contactId={1}", this.getClass().getSimpleName(), next.getContactId())); //NOI18N - - // Found it - foundContact = next; - 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 isMobileUnlinked, final boolean isLandlineUnlinked, final boolean isFaxUnlinked) { - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.updateContactData: contact={1},isMobileUnlinked={2},isLandlineUnlinked={3},isFaxUnlinked={4} - CALLED!", this.getClass().getSimpleName(), contact, isMobileUnlinked, isLandlineUnlinked, isFaxUnlinked)); //NOI18N - - // The contact instance must be valid - if (null == contact) { - // Throw NPE again - throw new NullPointerException("contact is null"); //NOI18N - } else if (contact.getContactId() == null) { - // Throw NPE again - throw new NullPointerException("contact.contactId is null"); //NOI18N - } else if (contact.getContactId() < 1) { - // Not valid - throw new IllegalStateException(MessageFormat.format("contact.contactId={0} is not valid.", contact.getContactId())); //NOI18N - } - - // Merge cellphone, land-line and fix - Contact managedContact = this.mergeContactData(contact); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.updateContactData: managedContact={1} - EXIT!", this.getClass().getSimpleName(), managedContact)); //NOI18N - - // Return it - return managedContact; - } - - @Override - public Contact updateContactData (final Contact contact) { - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.updateContactData: contact={1} - CALLED!", this.getClass().getSimpleName(), contact)); //NOI18N - - // The contact instance must be valid - if (null == contact) { - // Throw NPE again - throw new NullPointerException("contact is null"); //NOI18N - } else if (contact.getContactId() == null) { - // Throw NPE again - throw new NullPointerException("contact.contactId is null"); //NOI18N - } else if (contact.getContactId() < 1) { - // Not valid - throw new IllegalStateException(MessageFormat.format("contact.contactId={0} is not valid.", contact.getContactId())); //NOI18N - } - - // Is cell phone/land-line/fax number unlinked? - boolean isMobileUnlinked = (contact.getContactMobileNumber() == null); - boolean isLandLineUnlinked = (contact.getContactLandLineNumber() == null); - boolean isFaxUnlinked = (contact.getContactFaxNumber() == null); - - // Call other Method - Contact managedContact = this.updateContactData(contact, isMobileUnlinked, isLandLineUnlinked, isFaxUnlinked); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.updateContactData: managedContact={1} - EXIT!", this.getClass().getSimpleName(), managedContact)); //NOI18N - - // Return it - return managedContact; - } - -} diff --git a/src/java/org/mxchange/jcontacts/phone/AddressbookAdminContactPhoneSessionBean.java b/src/java/org/mxchange/jcontacts/phone/AddressbookAdminContactPhoneSessionBean.java deleted file mode 100644 index 8ef28c2..0000000 --- a/src/java/org/mxchange/jcontacts/phone/AddressbookAdminContactPhoneSessionBean.java +++ /dev/null @@ -1,544 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * 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.jcontacts.phone; - -import java.text.MessageFormat; -import java.util.GregorianCalendar; -import java.util.Objects; -import javax.ejb.EJB; -import javax.ejb.Stateless; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; -import org.mxchange.jcontacts.contact.Contact; -import org.mxchange.jcontacts.contact.ContactSessionBeanRemote; -import org.mxchange.jcontacts.contact.UserContact; -import org.mxchange.jphone.exceptions.PhoneNumberAlreadyLinkedException; -import org.mxchange.jphone.exceptions.PhoneNumberNotLinkedException; -import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber; -import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber; -import org.mxchange.jphone.phonenumbers.mobile.DialableMobileNumber; - -/** - * A session EJB for administrative contact's phone number purposes - *

- * @author Roland Häder - */ -@Stateless (name = "adminContactPhone", description = "An administrative bean handling contact's phone data") -public class AddressbookAdminContactPhoneSessionBean extends BaseAddressbookDatabaseBean implements AdminContactsPhoneSessionBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 189_217_561_460_237_108L; - - /** - * Contact EJB - */ - @EJB - private ContactSessionBeanRemote contactBean; - - /** - * Default constructor - */ - public AddressbookAdminContactPhoneSessionBean () { - // Call super constructor - super(); - } - - @Override - public Contact linkExistingFaxNumberWithContact (final Contact contact, final DialableFaxNumber faxNumber) throws PhoneNumberAlreadyLinkedException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.linkExistingFaxNumberWithContact: contact={1},faxNumber={2} - CALLED!", this.getClass().getSimpleName(), contact, faxNumber)); //NOI18N - - // Is the contact set? - if (null == contact) { - // Throw NPE - throw new NullPointerException("contact is null"); //NOI18N - } else if (contact.getContactId() == null) { - // ... and throw again - throw new NullPointerException("contact.contactId is null"); //NOI18N - } else if (contact.getContactId() < 1) { - // Invalid id number - throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} is not valid.", contact.getContactId())); //NOI18N - } else if (contact.getContactFaxNumber() instanceof DialableFaxNumber) { - // Not set cell phone instance - throw new PhoneNumberAlreadyLinkedException(faxNumber); - } else if (null == faxNumber) { - // Throw NPE - throw new NullPointerException("faxNumber is null"); //NOI18N - } else if (faxNumber.getPhoneId() == null) { - // Throw it again - throw new NullPointerException("faxNumber.phoneId is null"); //NOI18N - } else if (faxNumber.getPhoneId() < 1) { - // Invalid id - throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneId={0} is not valid", faxNumber.getPhoneId())); //NOI18N - } else if (faxNumber.getPhoneCountry() == null) { - // ... and again - throw new NullPointerException("faxNumber.phoneCountry is null"); //NOI18N - } else if (faxNumber.getPhoneAreaCode() == null) { - // Throw it again - throw new NullPointerException("faxNumber.phoneAreaCode is null"); //NOI18N - } else if (faxNumber.getPhoneAreaCode() < 1) { - // Invalid id - throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneAreaCode={0} is not valid", faxNumber.getPhoneAreaCode())); //NOI18N - } else if (faxNumber.getPhoneNumber() == null) { - // Throw it again - throw new NullPointerException("faxNumber.phoneNumber is null"); //NOI18N - } else if (faxNumber.getPhoneNumber() < 1) { - // Invalid id - throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneNumber={0} is not valid", faxNumber.getPhoneNumber())); //NOI18N - } - - // Find contact - Contact managedContact = this.getEntityManager().find(UserContact.class, contact.getContactId()); - - // Merge phone number - DialableFaxNumber managedNumber = this.getEntityManager().merge(faxNumber); - - // Set fax number in contact - managedContact.setContactFaxNumber(managedNumber); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.linkExistingFaxNumberWithContact: managedContact={1} - EXIT!", this.getClass().getSimpleName(), managedContact)); //NOI18N - - // Return it - return managedContact; - } - - @Override - public Contact linkExistingLandLineNumberWithContact (final Contact contact, final DialableLandLineNumber landLineNumber) throws PhoneNumberAlreadyLinkedException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.linkExistingLandLineNumberWithContact: contact={1},landLineNumber={2} - CALLED!", this.getClass().getSimpleName(), contact, landLineNumber)); //NOI18N - - // Is the contact set? - if (null == contact) { - // Throw NPE - throw new NullPointerException("contact is null"); //NOI18N - } else if (contact.getContactId() == null) { - // ... and throw again - throw new NullPointerException("contact.contactId is null"); //NOI18N - } else if (contact.getContactId() < 1) { - // Invalid id number - throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} is not valid.", contact.getContactId())); //NOI18N - } else if (contact.getContactLandLineNumber() instanceof DialableLandLineNumber) { - // Not set cell phone instance - throw new PhoneNumberAlreadyLinkedException(landLineNumber); - } else if (null == landLineNumber) { - // Throw NPE - throw new NullPointerException("landLineNumber is null"); //NOI18N - } else if (landLineNumber.getPhoneId() == null) { - // Throw it again - throw new NullPointerException("landLineNumber.phoneId is null"); //NOI18N - } else if (landLineNumber.getPhoneId() < 1) { - // Invalid id - throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneId={0} is not valid", landLineNumber.getPhoneId())); //NOI18N - } else if (landLineNumber.getPhoneCountry() == null) { - // ... and again - throw new NullPointerException("landLineNumber.phoneCountry is null"); //NOI18N - } else if (landLineNumber.getPhoneAreaCode() == null) { - // Throw it again - throw new NullPointerException("landLineNumber.phoneAreaCode is null"); //NOI18N - } else if (landLineNumber.getPhoneAreaCode() < 1) { - // Invalid id - throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneAreaCode={0} is not valid", landLineNumber.getPhoneAreaCode())); //NOI18N - } else if (landLineNumber.getPhoneNumber() == null) { - // Throw it again - throw new NullPointerException("landLineNumber.phoneNumber is null"); //NOI18N - } else if (landLineNumber.getPhoneNumber() < 1) { - // Invalid id - throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneNumber={0} is not valid", landLineNumber.getPhoneNumber())); //NOI18N - } - - // Find contact - Contact managedContact = this.getEntityManager().find(UserContact.class, contact.getContactId()); - - // Merge phone number - DialableLandLineNumber managedNumber = this.getEntityManager().merge(landLineNumber); - - // Set fax number in contact - managedContact.setContactLandLineNumber(managedNumber); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.linkExistingLandLineNumberWithContact: managedContact={1} - EXIT!", this.getClass().getSimpleName(), managedContact)); //NOI18N - - // Return it - return managedContact; - } - - @Override - public Contact linkExistingMobileNumberWithContact (final Contact contact, final DialableMobileNumber mobileNumber) throws PhoneNumberAlreadyLinkedException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.linkExistingMobileNumberWithContact: contact={1},mobileNumber={2} - CALLED!", this.getClass().getSimpleName(), contact, mobileNumber)); //NOI18N - - // Is the contact set? - if (null == contact) { - // Throw NPE - throw new NullPointerException("contact is null"); //NOI18N - } else if (contact.getContactId() == null) { - // ... and throw again - throw new NullPointerException("contact.contactId is null"); //NOI18N - } else if (contact.getContactId() < 1) { - // Invalid id number - throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} is not valid.", contact.getContactId())); //NOI18N - } else if (contact.getContactMobileNumber() instanceof DialableMobileNumber) { - // Not set cell phone instance - throw new PhoneNumberAlreadyLinkedException(mobileNumber); - } else if (null == mobileNumber) { - // Throw NPE - throw new NullPointerException("mobileNumber is null"); //NOI18N - } else if (mobileNumber.getPhoneId() == null) { - // Throw it again - throw new NullPointerException("mobileNumber.phoneId is null"); //NOI18N - } else if (mobileNumber.getPhoneId() < 1) { - // Invalid id - throw new IllegalArgumentException(MessageFormat.format("mobileNumber.phoneId={0} is not valid", mobileNumber.getPhoneId())); //NOI18N - } else if (mobileNumber.getMobileProvider() == null) { - // Throw NPE again - throw new NullPointerException("mobileNumber.mobileProvider is null"); //NOI18N - } else if (mobileNumber.getMobileProvider().getProviderId() == null) { - // Throw NPE again - throw new NullPointerException("mobileNumber.mobileProvider.providerId is null"); //NOI18N - } else if (mobileNumber.getMobileProvider().getProviderId() < 1) { - // Throw NPE again - throw new IllegalArgumentException(MessageFormat.format("mobileNumber.mobileProvider.providerId={0} is not valid", mobileNumber.getMobileProvider().getProviderId())); //NOI18N - } - - // Find contact - Contact managedContact = this.getEntityManager().find(UserContact.class, contact.getContactId()); - - // Merge phone number - DialableMobileNumber managedNumber = this.getEntityManager().merge(mobileNumber); - - // Set fax number in contact - managedContact.setContactMobileNumber(managedNumber); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.linkExistingMobileNumberWithContact: managedContact={1} - EXIT!", this.getClass().getSimpleName(), managedContact)); //NOI18N - - // Return it - return managedContact; - } - - @Override - public Contact linkNewFaxNumberWithContact (final Contact contact, final DialableFaxNumber faxNumber) throws PhoneNumberAlreadyLinkedException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.linkNewFaxNumberWithContact: contact={1},faxNumber={2} - CALLED!", this.getClass().getSimpleName(), contact, faxNumber)); //NOI18N - - // Is the contact set? - if (null == contact) { - // Throw NPE - throw new NullPointerException("contact is null"); //NOI18N - } else if (contact.getContactId() == null) { - // ... and throw again - throw new NullPointerException("contact.contactId is null"); //NOI18N - } else if (contact.getContactId() < 1) { - // Invalid id number - throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} is not valid.", contact.getContactId())); //NOI18N - } else if (contact.getContactFaxNumber() instanceof DialableFaxNumber) { - // Not set cell phone instance - throw new PhoneNumberAlreadyLinkedException(faxNumber); - } else if (null == faxNumber) { - // Throw NPE - throw new NullPointerException("faxNumber is null"); //NOI18N - } else if (faxNumber.getPhoneId() instanceof Long) { - // Throw it again - throw new IllegalStateException(MessageFormat.format("faxNumber.phoneId={0} is not null", faxNumber.getPhoneId())); //NOI18N - } else if (faxNumber.getPhoneCountry() == null) { - // ... and again - throw new NullPointerException("faxNumber.phoneCountry is null"); //NOI18N - } else if (faxNumber.getPhoneAreaCode() == null) { - // Throw it again - throw new NullPointerException("faxNumber.phoneAreaCode is null"); //NOI18N - } else if (faxNumber.getPhoneAreaCode() < 1) { - // Invalid id - throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneAreaCode={0} is not valid", faxNumber.getPhoneAreaCode())); //NOI18N - } else if (faxNumber.getPhoneNumber() == null) { - // Throw it again - throw new NullPointerException("faxNumber.phoneNumber is null"); //NOI18N - } else if (faxNumber.getPhoneNumber() < 1) { - // Invalid id - throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneNumber={0} is not valid", faxNumber.getPhoneNumber())); //NOI18N - } - - // Set created instance - faxNumber.setPhoneEntryCreated(new GregorianCalendar()); - - // Persist it - this.getEntityManager().persist(faxNumber); - - // Flush it - this.getEntityManager().flush(); - - // Find contact - Contact managedContact = this.getEntityManager().find(UserContact.class, contact.getContactId()); - - // Set fax number in contact - managedContact.setContactFaxNumber(faxNumber); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.linkNewFaxNumberWithContact: managedContact={1} - EXIT!", this.getClass().getSimpleName(), managedContact)); //NOI18N - - // Return it - return managedContact; - } - - @Override - public Contact linkNewLandLineNumberWithContact (final Contact contact, final DialableLandLineNumber landLineNumber) throws PhoneNumberAlreadyLinkedException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.linkNewLandLineNumberWithContact: contact={1},landLineNumber={2} - CALLED!", this.getClass().getSimpleName(), contact, landLineNumber)); //NOI18N - - // Is the contact set? - if (null == contact) { - // Throw NPE - throw new NullPointerException("contact is null"); //NOI18N - } else if (contact.getContactId() == null) { - // ... and throw again - throw new NullPointerException("contact.contactId is null"); //NOI18N - } else if (contact.getContactId() < 1) { - // Invalid id number - throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} is not valid.", contact.getContactId())); //NOI18N - } else if (contact.getContactLandLineNumber() instanceof DialableLandLineNumber) { - // Not set cell phone instance - throw new PhoneNumberAlreadyLinkedException(landLineNumber); - } else if (null == landLineNumber) { - // Throw NPE - throw new NullPointerException("landLineNumber is null"); //NOI18N - } else if (landLineNumber.getPhoneId() instanceof Long) { - // Throw it again - throw new IllegalStateException(MessageFormat.format("landLineNumber.phoneId={0} is not null", landLineNumber.getPhoneId())); //NOI18N - } else if (landLineNumber.getPhoneCountry() == null) { - // ... and again - throw new NullPointerException("landLineNumber.phoneCountry is null"); //NOI18N - } else if (landLineNumber.getPhoneAreaCode() == null) { - // Throw it again - throw new NullPointerException("landLineNumber.phoneAreaCode is null"); //NOI18N - } else if (landLineNumber.getPhoneAreaCode() < 1) { - // Invalid id - throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneAreaCode={0} is not valid", landLineNumber.getPhoneAreaCode())); //NOI18N - } else if (landLineNumber.getPhoneNumber() == null) { - // Throw it again - throw new NullPointerException("landLineNumber.phoneNumber is null"); //NOI18N - } else if (landLineNumber.getPhoneNumber() < 1) { - // Invalid id - throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneNumber={0} is not valid", landLineNumber.getPhoneNumber())); //NOI18N - } - - // Set created instance - landLineNumber.setPhoneEntryCreated(new GregorianCalendar()); - - // Persist it - this.getEntityManager().persist(landLineNumber); - - // Flush it - this.getEntityManager().flush(); - - // Find contact - Contact managedContact = this.getEntityManager().find(UserContact.class, contact.getContactId()); - - // Set land-line number in contact - managedContact.setContactLandLineNumber(landLineNumber); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.linkNewLandLineNumberWithContact: managedContact={1} - EXIT!", this.getClass().getSimpleName(), managedContact)); //NOI18N - - // Return it - return managedContact; - } - - @Override - public Contact linkNewMobileNumberWithContact (final Contact contact, final DialableMobileNumber mobileNumber) throws PhoneNumberAlreadyLinkedException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.linkNewMobileNumberWithContact: contact={1},mobileNumber={2} - CALLED!", this.getClass().getSimpleName(), contact, mobileNumber)); //NOI18N - - // Is the contact set? - if (null == contact) { - // Throw NPE - throw new NullPointerException("contact is null"); //NOI18N - } else if (contact.getContactId() == null) { - // ... and throw again - throw new NullPointerException("contact.contactId is null"); //NOI18N - } else if (contact.getContactId() < 1) { - // Invalid id number - throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} is not valid.", contact.getContactId())); //NOI18N - } else if (contact.getContactMobileNumber() instanceof DialableMobileNumber) { - // Not set cell phone instance - throw new PhoneNumberAlreadyLinkedException(mobileNumber); - } else if (null == mobileNumber) { - // Throw NPE - throw new NullPointerException("mobileNumber is null"); //NOI18N - } else if (mobileNumber.getPhoneId() instanceof Long) { - // Throw it again - throw new IllegalStateException(MessageFormat.format("mobileNumber.phoneId={0} is not null", mobileNumber.getPhoneId())); //NOI18N - } else if (mobileNumber.getMobileProvider() == null) { - // Throw NPE again - throw new NullPointerException("mobileNumber.mobileProvider is null"); //NOI18N - } else if (mobileNumber.getMobileProvider().getProviderId() == null) { - // Throw NPE again - throw new NullPointerException("mobileNumber.mobileProvider.providerId is null"); //NOI18N - } else if (mobileNumber.getMobileProvider().getProviderId() < 1) { - // Throw NPE again - throw new IllegalArgumentException(MessageFormat.format("mobileNumber.mobileProvider.providerId={0} is not valid", mobileNumber.getMobileProvider().getProviderId())); //NOI18N - } - - // Set created instance - mobileNumber.setPhoneEntryCreated(new GregorianCalendar()); - - // Persist it - this.getEntityManager().persist(mobileNumber); - - // Flush it - this.getEntityManager().flush(); - - // Find contact - Contact managedContact = this.getEntityManager().find(UserContact.class, contact.getContactId()); - - // Set land-line number in contact - managedContact.setContactMobileNumber(mobileNumber); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.linkNewMobileNumberWithContact: managedContact={1} - EXIT!", this.getClass().getSimpleName(), managedContact)); //NOI18N - - // Return it - return managedContact; - } - - @Override - public Contact unlinkFaxDataFromContact (final Contact contact, final DialableFaxNumber faxNumber) throws PhoneNumberNotLinkedException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.unlinkFaxDataFromContact: contact={1},faxNumber={2} - CALLED!", this.getClass().getSimpleName(), contact, faxNumber)); //NOI18N - - // Is the contact set? - if (null == contact) { - // Throw NPE - throw new NullPointerException("contact is null"); //NOI18N - } else if (contact.getContactId() == null) { - // ... and throw again - throw new NullPointerException("contact.contactId is null"); //NOI18N - } else if (contact.getContactId() < 1) { - // Invalid id number - throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} is not valid.", contact.getContactId())); //NOI18N - } else if (contact.getContactFaxNumber() == null) { - // Not set cell phone instance - throw new PhoneNumberNotLinkedException(faxNumber); - } else if (contact.getContactFaxNumber().getPhoneId() == null) { - // Throw NPE again - throw new NullPointerException("contact.contactFaxNumber.phoneId is null"); //NOI18N - } else if (contact.getContactFaxNumber().getPhoneId() < 1) { - // Invalid id number - throw new IllegalArgumentException(MessageFormat.format("contact.contactFaxNumber.phoneId={0} is invalid.", contact.getContactFaxNumber().getPhoneId())); //NOI18N - } else if (!Objects.equals(faxNumber.getPhoneId(), contact.getContactFaxNumber().getPhoneId())) { - // Not same object - throw new IllegalArgumentException(MessageFormat.format("contact.contactFaxNumber.phoneId={0} and faxNumber.phoneId={1} are not the same.", contact.getContactFaxNumber().getPhoneId(), faxNumber.getPhoneId())); //NOI18N - } - - // Find contact - Contact managedContact = this.getEntityManager().find(UserContact.class, contact.getContactId()); - - // Remove it from contact - managedContact.setContactFaxNumber(null); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.unlinkFaxDataFromContact: managedContact={1} - EXIT!", this.getClass().getSimpleName(), managedContact)); //NOI18N - - // Return it - return managedContact; - } - - @Override - public Contact unlinkLandLineDataFromContact (final Contact contact, final DialableLandLineNumber landLineNumber) throws PhoneNumberNotLinkedException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.unlinkLandLineDataFromContact: contact={1},landLineNumber={2} - CALLED!", this.getClass().getSimpleName(), contact, landLineNumber)); //NOI18N - - // Is the contact set? - if (null == contact) { - // Throw NPE - throw new NullPointerException("contact is null"); //NOI18N - } else if (contact.getContactId() == null) { - // ... and throw again - throw new NullPointerException("contact.contactId is null"); //NOI18N - } else if (contact.getContactId() < 1) { - // Invalid id number - throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} is not valid.", contact.getContactId())); //NOI18N - } else if (contact.getContactLandLineNumber() == null) { - // Not set cell phone instance - throw new PhoneNumberNotLinkedException(landLineNumber); - } else if (contact.getContactLandLineNumber().getPhoneId() == null) { - // Throw NPE again - throw new NullPointerException("contact.contactLandLineNumber.phoneId is null"); //NOI18N - } else if (contact.getContactLandLineNumber().getPhoneId() < 1) { - // Invalid id number - throw new IllegalArgumentException(MessageFormat.format("contact.contactLandLineNumber.phoneId={0} is invalid.", contact.getContactLandLineNumber().getPhoneId())); //NOI18N - } else if (!Objects.equals(landLineNumber.getPhoneId(), contact.getContactLandLineNumber().getPhoneId())) { - // Not same object - throw new IllegalArgumentException(MessageFormat.format("contact.contactLandLineNumber.phoneId={0} and landLineNumber.phoneId={1} are not the same.", contact.getContactLandLineNumber().getPhoneId(), landLineNumber.getPhoneId())); //NOI18N - } - - // Find contact - Contact managedContact = this.getEntityManager().find(UserContact.class, contact.getContactId()); - - // Remove it from contact - managedContact.setContactLandLineNumber(null); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.unlinkLandLineDataFromContact: managedContact={1} - EXIT!", this.getClass().getSimpleName(), managedContact)); //NOI18N - - // Return it - return managedContact; - } - - @Override - public Contact unlinkMobileDataFromContact (final Contact contact, final DialableMobileNumber mobileNumber) throws PhoneNumberNotLinkedException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.unlinkMobileDataFromContact: contact={1},mobileNumber={2} - CALLED!", this.getClass().getSimpleName(), contact, mobileNumber)); //NOI18N - - // Is the contact set? - if (null == contact) { - // Throw NPE - throw new NullPointerException("contact is null"); //NOI18N - } else if (contact.getContactId() == null) { - // ... and throw again - throw new NullPointerException("contact.contactId is null"); //NOI18N - } else if (contact.getContactId() < 1) { - // Invalid id number - throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} is not valid.", contact.getContactId())); //NOI18N - } else if (contact.getContactMobileNumber() == null) { - // Not set cell phone instance - throw new PhoneNumberNotLinkedException(mobileNumber); - } else if (contact.getContactMobileNumber().getPhoneId() == null) { - // Throw NPE again - throw new NullPointerException("contact.contactMobileNumber.phoneId is null"); //NOI18N - } else if (contact.getContactMobileNumber().getPhoneId() < 1) { - // Invalid id number - throw new IllegalArgumentException(MessageFormat.format("contact.contactMobileNumber.phoneId={0} is invalid.", contact.getContactMobileNumber().getPhoneId())); //NOI18N - } else if (!Objects.equals(mobileNumber.getPhoneId(), contact.getContactMobileNumber().getPhoneId())) { - // Not same object - throw new IllegalArgumentException(MessageFormat.format("contact.contactMobileNumber.phoneId={0} and mobileNumber.phoneId={1} are not the same.", contact.getContactMobileNumber().getPhoneId(), mobileNumber.getPhoneId())); //NOI18N - } - - // Find contact - Contact managedContact = this.getEntityManager().find(UserContact.class, contact.getContactId()); - - // Remove it from contact - managedContact.setContactMobileNumber(null); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.unlinkMobileDataFromContact: managedContact={1} - EXIT!", this.getClass().getSimpleName(), managedContact)); //NOI18N - - // Return it - return managedContact; - } - -} diff --git a/src/java/org/mxchange/jcountry/data/AddressbookCountrySingletonBean.java b/src/java/org/mxchange/jcountry/data/AddressbookCountrySingletonBean.java deleted file mode 100644 index 8d1f5a4..0000000 --- a/src/java/org/mxchange/jcountry/data/AddressbookCountrySingletonBean.java +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * 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.jcountry.data; - -import java.text.MessageFormat; -import java.util.GregorianCalendar; -import java.util.List; -import javax.ejb.Singleton; -import javax.ejb.Startup; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; -import org.mxchange.jcountry.exceptions.CountryAlreadyAddedException; - -/** - * A singleton EJB for country informations - *

- * @author Roland Häder - */ -@Startup -@Singleton (name = "country", description = "A singleton session-scoped bean for country informations") -public class AddressbookCountrySingletonBean extends BaseAddressbookDatabaseBean implements CountrySingletonBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 15_846_983_298_691_207L; - - /** - * Default constructor - */ - public AddressbookCountrySingletonBean () { - // Call super constructor - super(); - } - - @Override - public Country addCountry (final Country country) throws CountryAlreadyAddedException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.addCountry: country={1} - CALLED!", this.getClass().getSimpleName(), country)); //NOI18N - - // Is it already there? - if (null == country) { - // Throw NPE - throw new NullPointerException("country is null"); //NOI18N - } else if (country.getCountryCode().isEmpty()) { - // Code is not set - throw new IllegalArgumentException("country.countryCode is empty"); //NOI18N - } else if (country.getCountryI18nKey().isEmpty()) { - // I18n key is not set - throw new IllegalArgumentException("country.countryI18nKey is empty"); //NOI18N - } else if (country.getCountryId() != null) { - // Should be null - throw new IllegalArgumentException(MessageFormat.format("country.countryId is not null ({0})", country.getCountryId())); //NOI18N - } else if (this.isCountryAdded(country)) { - // Yes, then abort here - throw new CountryAlreadyAddedException(country); - } - - // Add timestamp - country.setCountryEntryCreated(new GregorianCalendar()); - - // It is not added, so persist it - this.getEntityManager().persist(country); - - // Flush it to get id number back, maybe it is directly needed? - this.getEntityManager().flush(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.addCountry: country={1} - EXIT!", this.getClass().getSimpleName(), country)); //NOI18N - - // Return updated instance - return country; - } - - @Override - @SuppressWarnings ("unchecked") - public List allCountries () { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allCountries: CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Init query - Query query = this.getEntityManager().createNamedQuery("AllCountries", CountryData.class); //NOI18N - - // Get list - List countries = query.getResultList(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allCountries: countries.size()={1} - EXIT!", this.getClass().getSimpleName(), countries.size())); //NOI18N - - // Return it - return countries; - } - - /** - * Checks whether given country is already added by i18n key or country - * code, what comes first. - *

- * @param country Country instance to check - *

- * @return Whether the country was found - */ - private boolean isCountryAdded (final Country country) { - if (null == country) { - // Throw NPE - throw new NullPointerException("country is null"); //NOI18N - } else if (country.getCountryCode().isEmpty()) { - // Code is not set - throw new IllegalArgumentException("country.countryCode is empty"); //NOI18N - } else if (country.getCountryI18nKey().isEmpty()) { - // I18n key is not set - throw new IllegalArgumentException("country.countryI18nKey is empty"); //NOI18N - } else if (country.getCountryId() != null) { - // Should be null - throw new IllegalArgumentException(MessageFormat.format("country.countryId is not null ({0})", country.getCountryId())); //NOI18N - } - - // Default is not found - boolean isAdded = false; - - // Get query instance - Query query = this.getEntityManager().createNamedQuery("SearchCountryByCodeI18nKey", CountryData.class); //NOI18N - - // Assign all parameters - query.setParameter("code", country.getCountryCode()); //NOI18N - query.setParameter("key", country.getCountryI18nKey()); //NOI18N - - // Try to get a single result - try { - // Get single result - Country foundCountry = (Country) query.getSingleResult(); - - // Found it? - isAdded = (foundCountry instanceof Country); - } catch (final NoResultException ex) { - // Not found, don't log this - } - - // Return result - return isAdded; - } - -} diff --git a/src/java/org/mxchange/jphone/phonenumbers/mobileprovider/AddressbookAdminMobileProviderSessionBean.java b/src/java/org/mxchange/jphone/phonenumbers/mobileprovider/AddressbookAdminMobileProviderSessionBean.java deleted file mode 100644 index 923ad7f..0000000 --- a/src/java/org/mxchange/jphone/phonenumbers/mobileprovider/AddressbookAdminMobileProviderSessionBean.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * 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.phonenumbers.mobileprovider; - -import java.text.MessageFormat; -import java.util.GregorianCalendar; -import javax.ejb.Stateless; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; -import org.mxchange.jphone.exceptions.MobileProviderAlreadyAddedException; - -/** - * An administrative singleton EJB for mobile provider informations - *

- * @author Roland Häder - */ -@Stateless (name = "adminMobileProvider", description = "A singleton session-scoped bean for mobile provider informations, admin-edition") -public class AddressbookAdminMobileProviderSessionBean extends BaseAddressbookDatabaseBean implements AdminMobileProviderSessionBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 15_846_983_298_691_207L; - - /** - * Default constructor - */ - public AddressbookAdminMobileProviderSessionBean () { - // Call super constructor - super(); - } - - @Override - public MobileProvider addMobileProvider (final MobileProvider mobileProvider) throws MobileProviderAlreadyAddedException { - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.addMobileProvider: mobileProvider={1} - CALLED!", this.getClass().getSimpleName(), mobileProvider)); //NOI18N - - // Is the instance valid? - if (null == mobileProvider) { - // Throw NPE - throw new NullPointerException("mobileProvider is null"); //NOI18N - } else if (mobileProvider.getProviderDialPrefix() == null) { - // Throw NPE again - throw new NullPointerException("mobileProvider.providerDialPrefix is null"); //NOI18N - } else if (mobileProvider.getProviderDialPrefix() < 1) { - // Not valid - throw new IllegalArgumentException(MessageFormat.format("mobileProvider.providerDialPrefix={0} is not valid.", mobileProvider.getProviderDialPrefix())); //NOI18N - } else if (mobileProvider.getProviderCountry() == null) { - // Throw again a NPE - throw new NullPointerException("mobileProvider.providerCountry is null"); //NOI18N - } else if (mobileProvider.getProviderMailPattern() == null) { - // ... and again ... - throw new NullPointerException("mobileProvider.providerMailPattern is null"); //NOI18N - } else if (mobileProvider.getProviderMailPattern().isEmpty()) { - // Empty pattern set (not allowed) - throw new IllegalArgumentException("mobileProvider.providerMailPattern is empty."); //NOI18N - } else if (!mobileProvider.getProviderMailPattern().contains("%s")) { //NOI18N - // No place-holder found - throw new IllegalArgumentException(MessageFormat.format("mobileProvider.providerMailPattern={0} does not contain '%s' which is need to be replaced with the full mobile number.", mobileProvider.getProviderMailPattern())); //NOI18N - } else if (mobileProvider.getProviderName() == null) { - // Throw NPE again - throw new NullPointerException("mobileProvider.providerName is null"); //NOI18N - } else if (mobileProvider.getProviderName().isEmpty()) { - // Empty name is not allowed - throw new IllegalArgumentException("mobileProvider.providerName is empty"); //NOI18N - } - - // Set creation timestamp - mobileProvider.setProviderEntryCreated(new GregorianCalendar()); - - // Persist it - this.getEntityManager().persist(mobileProvider); - - // ... and flush it to get id back - this.getEntityManager().flush(); - - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.addMobileProvider: mobileProvider.providerId={1} - EXIT!", this.getClass().getSimpleName(), mobileProvider.getProviderId())); //NOI18N - - // Return updated - return mobileProvider; - } - -} diff --git a/src/java/org/mxchange/jphone/phonenumbers/mobileprovider/AddressbookMobileProviderSingletonBean.java b/src/java/org/mxchange/jphone/phonenumbers/mobileprovider/AddressbookMobileProviderSingletonBean.java deleted file mode 100644 index 3de7139..0000000 --- a/src/java/org/mxchange/jphone/phonenumbers/mobileprovider/AddressbookMobileProviderSingletonBean.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * 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.phonenumbers.mobileprovider; - -import java.text.MessageFormat; -import java.util.List; -import javax.ejb.Singleton; -import javax.ejb.Startup; -import javax.persistence.Query; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; - -/** - * A singleton EJB for mobile provider informations - *

- * @author Roland Häder - */ -@Startup -@Singleton (name = "mobileprovider", description = "A singleton session-scoped bean for SMS provider informations") -public class AddressbookMobileProviderSingletonBean extends BaseAddressbookDatabaseBean implements MobileProviderSingletonBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 15_846_983_298_691_207L; - - /** - * Default constructor - */ - public AddressbookMobileProviderSingletonBean () { - // Call super constructor - super(); - } - - @Override - @SuppressWarnings ("unchecked") - public List allMobileProvider () { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allMobileProvider: CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Init query - Query query = this.getEntityManager().createNamedQuery("AllMobileProvider", CellphoneProvider.class); //NOI18N - - // Get list from it - List mobileProviders = query.getResultList(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allMobileProvider: mobileProviders.size()={1} - EXIT!", this.getClass().getSimpleName(), mobileProviders.size())); //NOI18N - - // Return it - return mobileProviders; - } - -} diff --git a/src/java/org/mxchange/jphone/phonenumbers/phone/AddressbookAdminPhoneSessionBean.java b/src/java/org/mxchange/jphone/phonenumbers/phone/AddressbookAdminPhoneSessionBean.java deleted file mode 100644 index 1d63242..0000000 --- a/src/java/org/mxchange/jphone/phonenumbers/phone/AddressbookAdminPhoneSessionBean.java +++ /dev/null @@ -1,357 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * 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.phonenumbers.phone; - -import java.text.MessageFormat; -import java.util.GregorianCalendar; -import javax.ejb.Stateless; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; -import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber; -import org.mxchange.jphone.phonenumbers.fax.FaxNumbers; -import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber; -import org.mxchange.jphone.phonenumbers.landline.LandLineNumbers; -import org.mxchange.jphone.phonenumbers.mobile.DialableMobileNumber; -import org.mxchange.jphone.phonenumbers.mobile.MobileNumbers; - -/** - * An EJB for administrative phone purposes - *

- * @author Roland Häder - */ -@Stateless (name = "adminPhone", description = "An administrative bean handling phone data") -public class AddressbookAdminPhoneSessionBean extends BaseAddressbookDatabaseBean implements AdminPhoneSessionBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 18_597_165_817_401_853L; - - /** - * Default constructor - */ - public AddressbookAdminPhoneSessionBean () { - // Call super constructor - super(); - } - - @Override - public void deleteFaxData (final DialableFaxNumber faxNumber) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.deleteFaxData: faxNumber={1} - CALLED!", this.getClass().getSimpleName(), faxNumber)); - - // Is all data set - if (faxNumber == null) { - // Not set, throw NPE - throw new NullPointerException("faxNumber is null"); //NOI18N - } else if (faxNumber.getPhoneId() == null) { - // Throw NPE again - throw new NullPointerException("faxNumber.phoneId is null"); //NOI18N - } else if (faxNumber.getPhoneId() < 1) { - // Invalid number - throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneId={0} is not valid", faxNumber.getPhoneId())); //NOI18N - } else if (faxNumber.getPhoneCountry() == null) { - // Throw NPE - throw new NullPointerException("faxNumber.phoneCountry is null"); //NOI18N - } else if (faxNumber.getPhoneCountry().getCountryId() == null) { - // Throw NPE - throw new NullPointerException("faxNumber.phoneCountry.countryId is null"); //NOI18N - } else if (faxNumber.getPhoneCountry().getCountryId() < 1) { - // Throw NPE - throw new NullPointerException(MessageFormat.format("faxNumber.phoneCountry.countryId={0} is not valid", faxNumber.getPhoneCountry().getCountryId())); //NOI18N - } else if (faxNumber.getPhoneAreaCode() == null) { - // ... throw again - throw new NullPointerException("faxNumber.phoneAreaCode is null"); //NOI18N - } else if (faxNumber.getPhoneAreaCode() < 1) { - // Id not valid - throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneAreaCode={0} is not valid.", faxNumber.getPhoneAreaCode())); //NOI18N - } else if (faxNumber.getPhoneNumber() == null) { - // Throw NPE again - throw new NullPointerException("faxNumber.phoneNumber is null"); //NOI18N - } else if (faxNumber.getPhoneNumber() < 1) { - // Throw NPE again - throw new NullPointerException(MessageFormat.format("faxNumber.phoneNumber={0} is not valid.", faxNumber.getPhoneNumber())); //NOI18N - } - - // Get a managed instance - DialableFaxNumber managedNumber = this.getEntityManager().getReference(faxNumber.getClass(), faxNumber.getPhoneId()); - - // Remove it from database - this.getEntityManager().remove(managedNumber); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.deleteMobileData: EXIT!", this.getClass().getSimpleName())); - } - - @Override - public void deleteLandLineData (final DialableLandLineNumber landLineNumber) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.deleteLandLineData: landLineNumber={1} - CALLED!", this.getClass().getSimpleName(), landLineNumber)); - - // Is all data set - if (landLineNumber == null) { - // Not set, throw NPE - throw new NullPointerException("landLineNumber is null"); //NOI18N - } else if (landLineNumber.getPhoneId() == null) { - // Throw NPE again - throw new NullPointerException("landLineNumber.phoneId is null"); //NOI18N - } else if (landLineNumber.getPhoneId() < 1) { - // Invalid number - throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneId={0} is not valid", landLineNumber.getPhoneId())); //NOI18N - } else if (landLineNumber.getPhoneCountry() == null) { - // Throw NPE - throw new NullPointerException("landLineNumber.phoneCountry is null"); //NOI18N - } else if (landLineNumber.getPhoneCountry().getCountryId() == null) { - // Throw NPE - throw new NullPointerException("landLineNumber.phoneCountry.countryId is null"); //NOI18N - } else if (landLineNumber.getPhoneCountry().getCountryId() < 1) { - // Throw NPE - throw new NullPointerException(MessageFormat.format("landLineNumber.phoneCountry.countryId={0} is not valid", landLineNumber.getPhoneCountry().getCountryId())); //NOI18N - } else if (landLineNumber.getPhoneAreaCode() == null) { - // ... throw again - throw new NullPointerException("landLineNumber.phoneAreaCode is null"); //NOI18N - } else if (landLineNumber.getPhoneAreaCode() < 1) { - // Id not valid - throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneAreaCode={0} is not valid.", landLineNumber.getPhoneAreaCode())); //NOI18N - } else if (landLineNumber.getPhoneNumber() == null) { - // Throw NPE again - throw new NullPointerException("landLineNumber.phoneNumber is null"); //NOI18N - } else if (landLineNumber.getPhoneNumber() < 1) { - // Throw NPE again - throw new NullPointerException(MessageFormat.format("landLineNumber.phoneNumber={0} is not valid.", landLineNumber.getPhoneNumber())); //NOI18N - } - - // Get a managed instance - DialableLandLineNumber managedNumber = this.getEntityManager().getReference(landLineNumber.getClass(), landLineNumber.getPhoneId()); - - // Remove it from database - this.getEntityManager().remove(managedNumber); - - // Trace message - 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.getPhoneId() == null) { - // Throw NPE again - throw new NullPointerException("mobileNumber.phoneId is null"); //NOI18N - } else if (mobileNumber.getPhoneId() < 1) { - // Invalid number - throw new IllegalArgumentException(MessageFormat.format("mobileNumber.phoneId={0} is not valid", mobileNumber.getPhoneId())); //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.getPhoneNumber() == null) { - // Throw NPE again - throw new NullPointerException("mobileNumber.phoneNumber is null"); //NOI18N - } else if (mobileNumber.getPhoneNumber() < 1) { - // Throw NPE again - throw new NullPointerException(MessageFormat.format("mobileNumber.phoneNumber={0} is not valid.", mobileNumber.getPhoneNumber())); //NOI18N - } - - // Get a managed instance - DialableMobileNumber managedNumber = this.getEntityManager().getReference(mobileNumber.getClass(), mobileNumber.getPhoneId()); - - // 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 - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.updateFaxData: faxNumber={1} - CALLED!", this.getClass().getSimpleName(), faxNumber)); - - // Is all data set - if (faxNumber == null) { - // Not set, throw NPE - throw new NullPointerException("faxNumber is null"); //NOI18N - } else if (faxNumber.getPhoneId() == null) { - // Throw NPE again - throw new NullPointerException("faxNumber.phoneId is null"); //NOI18N - } else if (faxNumber.getPhoneId() < 1) { - // Invalid number - throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneId={0} is not valid", faxNumber.getPhoneId())); //NOI18N - } else if (faxNumber.getPhoneCountry() == null) { - // Throw NPE - throw new NullPointerException("faxNumber.phoneCountry is null"); //NOI18N - } else if (faxNumber.getPhoneCountry().getCountryId() == null) { - // Throw NPE - throw new NullPointerException("faxNumber.phoneCountry.countryId is null"); //NOI18N - } else if (faxNumber.getPhoneCountry().getCountryId() < 1) { - // Throw NPE - throw new NullPointerException(MessageFormat.format("faxNumber.phoneCountry.countryId={0} is not valid", faxNumber.getPhoneCountry().getCountryId())); //NOI18N - } else if (faxNumber.getPhoneAreaCode() == null) { - // ... throw again - throw new NullPointerException("faxNumber.phoneAreaCode is null"); //NOI18N - } else if (faxNumber.getPhoneAreaCode() < 1) { - // Id not valid - throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneAreaCode={0} is not valid.", faxNumber.getPhoneAreaCode())); //NOI18N - } else if (faxNumber.getPhoneNumber() == null) { - // Throw NPE again - throw new NullPointerException("faxNumber.phoneNumber is null"); //NOI18N - } else if (faxNumber.getPhoneNumber() < 1) { - // Throw NPE again - throw new NullPointerException(MessageFormat.format("faxNumber.phoneNumber={0} is not valid.", faxNumber.getPhoneNumber())); //NOI18N - } - - // Get contact from it and find it - DialableFaxNumber managedNumber = this.getEntityManager().find(faxNumber.getClass(), faxNumber.getPhoneId()); - - // Should be found - assert (managedNumber instanceof DialableFaxNumber) : MessageFormat.format("Cell phone number with id {0} not found, but should be.", faxNumber.getPhoneId()); //NOI18N - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.updateFaxData: managedNumber.phoneId={1}", this.getClass().getSimpleName(), managedNumber.getPhoneId())); //NOI18N - - // Set updated timestamp - FaxNumbers.copyAll(faxNumber, managedNumber); - managedNumber.setPhoneEntryUpdated(new GregorianCalendar()); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.updateFaxData: managedNumber={1} - EXIT!", this.getClass().getSimpleName(), managedNumber)); //NOI18N - - // Return it - return managedNumber; - } - - @Override - public DialableLandLineNumber updateLandLineData (final DialableLandLineNumber landLineNumber) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.updateLandLineData: landLineNumber={1} - CALLED!", this.getClass().getSimpleName(), landLineNumber)); - - // Is all data set - if (landLineNumber == null) { - // Not set, throw NPE - throw new NullPointerException("landLineNumber is null"); //NOI18N - } else if (landLineNumber.getPhoneId() == null) { - // Throw NPE again - throw new NullPointerException("landLineNumber.phoneId is null"); //NOI18N - } else if (landLineNumber.getPhoneId() < 1) { - // Invalid number - throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneId={0} is not valid", landLineNumber.getPhoneId())); //NOI18N - } else if (landLineNumber.getPhoneCountry() == null) { - // Throw NPE - throw new NullPointerException("landLineNumber.phoneCountry is null"); //NOI18N - } else if (landLineNumber.getPhoneCountry().getCountryId() == null) { - // Throw NPE - throw new NullPointerException("landLineNumber.phoneCountry.countryId is null"); //NOI18N - } else if (landLineNumber.getPhoneCountry().getCountryId() < 1) { - // Throw NPE - throw new NullPointerException(MessageFormat.format("landLineNumber.phoneCountry.countryId={0} is not valid", landLineNumber.getPhoneCountry().getCountryId())); //NOI18N - } else if (landLineNumber.getPhoneAreaCode() == null) { - // ... throw again - throw new NullPointerException("landLineNumber.phoneAreaCode is null"); //NOI18N - } else if (landLineNumber.getPhoneAreaCode() < 1) { - // Id not valid - throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneAreaCode={0} is not valid.", landLineNumber.getPhoneAreaCode())); //NOI18N - } else if (landLineNumber.getPhoneNumber() == null) { - // Throw NPE again - throw new NullPointerException("landLineNumber.phoneNumber is null"); //NOI18N - } else if (landLineNumber.getPhoneNumber() < 1) { - // Throw NPE again - throw new NullPointerException(MessageFormat.format("landLineNumber.phoneNumber={0} is not valid.", landLineNumber.getPhoneNumber())); //NOI18N - } - - // Get contact from it and find it - DialableLandLineNumber managedNumber = this.getEntityManager().find(landLineNumber.getClass(), landLineNumber.getPhoneId()); - - // Should be found - assert (managedNumber instanceof DialableLandLineNumber) : MessageFormat.format("Cell phone number with id {0} not found, but should be.", landLineNumber.getPhoneId()); //NOI18N - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.updateLandLineData: managedNumber.phoneId={1}", this.getClass().getSimpleName(), managedNumber.getPhoneId())); //NOI18N - - // Set updated timestamp - LandLineNumbers.copyAll(landLineNumber, managedNumber); - managedNumber.setPhoneEntryUpdated(new GregorianCalendar()); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.updateLandLineData: managedNumber={1} - EXIT!", this.getClass().getSimpleName(), managedNumber)); //NOI18N - - // Return it - 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.getPhoneId() == null) { - // Throw NPE again - throw new NullPointerException("mobileNumber.phoneId is null"); //NOI18N - } else if (mobileNumber.getPhoneId() < 1) { - // Invalid number - throw new IllegalArgumentException(MessageFormat.format("mobileNumber.phoneId={0} is not valid", mobileNumber.getPhoneId())); //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.getPhoneNumber() == null) { - // Throw NPE again - throw new NullPointerException("mobileNumber.phoneNumber is null"); //NOI18N - } else if (mobileNumber.getPhoneNumber() < 1) { - // Throw NPE again - throw new NullPointerException(MessageFormat.format("mobileNumber.phoneNumber={0} is not valid.", mobileNumber.getPhoneNumber())); //NOI18N - } - - // Get contact from it and find it - DialableMobileNumber managedNumber = this.getEntityManager().find(mobileNumber.getClass(), mobileNumber.getPhoneId()); - - // Should be found - assert (managedNumber instanceof DialableMobileNumber) : MessageFormat.format("Cell phone number with id {0} not found, but should be.", mobileNumber.getPhoneId()); //NOI18N - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.updateMobileData: managedNumber.phoneId={1}", this.getClass().getSimpleName(), managedNumber.getPhoneId())); //NOI18N - - // Set updated timestamp - MobileNumbers.copyAll(mobileNumber, managedNumber); - managedNumber.setPhoneEntryUpdated(new GregorianCalendar()); - - // 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/phonenumbers/phone/AddressbookPhoneSessionBean.java b/src/java/org/mxchange/jphone/phonenumbers/phone/AddressbookPhoneSessionBean.java deleted file mode 100644 index 63084f5..0000000 --- a/src/java/org/mxchange/jphone/phonenumbers/phone/AddressbookPhoneSessionBean.java +++ /dev/null @@ -1,228 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * 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.phonenumbers.phone; - -import java.text.MessageFormat; -import java.util.List; -import javax.ejb.Stateless; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; -import org.mxchange.jphone.exceptions.PhoneEntityNotFoundException; -import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber; -import org.mxchange.jphone.phonenumbers.fax.FaxNumber; -import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber; -import org.mxchange.jphone.phonenumbers.landline.LandLineNumber; -import org.mxchange.jphone.phonenumbers.mobile.DialableMobileNumber; -import org.mxchange.jphone.phonenumbers.mobile.MobileNumber; - -/** - * A general phone EJB - *

- * @author Roland Häder - */ -@Stateless (name = "phone", description = "A bean handling phone data") -public class AddressbookPhoneSessionBean extends BaseAddressbookDatabaseBean implements PhoneSessionBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 134_945_698_127_601L; - - /** - * Default constructor - */ - public AddressbookPhoneSessionBean () { - // Call super constructor - super(); - } - - @SuppressWarnings ("unchecked") - @Override - public List allFaxNumbers () { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allFaxNumbers: CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Get query - Query query = this.getEntityManager().createNamedQuery("AllFaxNumbers", FaxNumber.class); //NOI18N - - // Get list from it - List list = query.getResultList(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allFaxNumbers: list.size()={1} - EXIT!", this.getClass().getSimpleName(), list.size())); //NOI18N - - // Return it - return list; - } - - @SuppressWarnings ("unchecked") - @Override - public List allLandLineNumbers () { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allLandLineNumbers: CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Get query - Query query = this.getEntityManager().createNamedQuery("AllLandLineNumbers", LandLineNumber.class); //NOI18N - - // Get list from it - List list = query.getResultList(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allLandLineNumbers: list.size()={1} - EXIT!", this.getClass().getSimpleName(), list.size())); //NOI18N - - // Return it - return list; - } - - @SuppressWarnings ("unchecked") - @Override - public List allMobileNumbers () { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allMobileNumbers: CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Get query - Query query = this.getEntityManager().createNamedQuery("AllMobileNumbers", MobileNumber.class); //NOI18N - - // Get list from it - 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; - } - - @Override - public DialableFaxNumber findFaxNumberById (final Long faxNumberId) throws PhoneEntityNotFoundException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findFaxNumberById: mobileNumberId={1} - CALLED!", this.getClass().getSimpleName(), faxNumberId)); //NOI18N - - // The id number should be valid - if (null == faxNumberId) { - // Throw NPE - throw new NullPointerException("faxNumberId is null"); //NOI18N - } else if (faxNumberId < 1) { - // Not valid - throw new IllegalArgumentException(MessageFormat.format("faxNumberId={0} is not valid.", faxNumberId)); //NOI18N - } - - // Now find it - Query query = this.getEntityManager().createNamedQuery("SearchFaxNumberId", FaxNumber.class); //NOI18N - - // Set parameter - query.setParameter("faxNumberId", faxNumberId); //NOI18N - - // Init instance - DialableFaxNumber faxNumber = null; - - // Try to get a result - try { - // Get a single result - faxNumber = (DialableFaxNumber) query.getSingleResult(); - } catch (NoResultException ex) { - // The entry was not found, so throw it again - throw new PhoneEntityNotFoundException(faxNumberId, ex); - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findFaxNumberById: cellphone={1} - EXIT!", this.getClass().getSimpleName(), faxNumber)); //NOI18N - - // Return found instance - return faxNumber; - } - - @Override - public DialableLandLineNumber findLandLineNumberById (final Long landLineNumberId) throws PhoneEntityNotFoundException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findLandLineNumberById: mobileNumberId={1} - CALLED!", this.getClass().getSimpleName(), landLineNumberId)); //NOI18N - - // The id number should be valid - if (null == landLineNumberId) { - // Throw NPE - throw new NullPointerException("landLineNumberId is null"); //NOI18N - } else if (landLineNumberId < 1) { - // Not valid - throw new IllegalArgumentException(MessageFormat.format("landLineNumberId={0} is not valid.", landLineNumberId)); //NOI18N - } - - // Now find it - Query query = this.getEntityManager().createNamedQuery("SearchLandLineNumberId", LandLineNumber.class); //NOI18N - - // Set parameter - query.setParameter("landLineNumberId", landLineNumberId); //NOI18N - - // Init instance - DialableLandLineNumber landLineNumber = null; - - // Try to get a result - try { - // Get a single result - landLineNumber = (DialableLandLineNumber) query.getSingleResult(); - } catch (NoResultException ex) { - // The entry was not found, so throw it again - throw new PhoneEntityNotFoundException(landLineNumberId, ex); - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findLandLineNumberById: cellphone={1} - EXIT!", this.getClass().getSimpleName(), landLineNumber)); //NOI18N - - // Return found instance - return landLineNumber; - } - - @Override - public DialableMobileNumber findMobileNumberById (final Long mobileNumberId) throws PhoneEntityNotFoundException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findMobileNumberById: mobileNumberId={1} - CALLED!", this.getClass().getSimpleName(), mobileNumberId)); //NOI18N - - // The id number should be valid - if (null == mobileNumberId) { - // Throw NPE - throw new NullPointerException("mobileNumberId is null"); //NOI18N - } else if (mobileNumberId < 1) { - // Not valid - throw new IllegalArgumentException(MessageFormat.format("mobileNumberId={0} is not valid.", mobileNumberId)); //NOI18N - } - - // Now find it - Query query = this.getEntityManager().createNamedQuery("SearchMobileNumberId", MobileNumber.class); //NOI18N - - // Set parameter - query.setParameter("mobileNumberId", mobileNumberId); //NOI18N - - // Init instance - DialableMobileNumber cellphone = null; - - // Try to get a result - try { - // Get a single result - cellphone = (DialableMobileNumber) query.getSingleResult(); - } catch (NoResultException ex) { - // The entry was not found, so throw it again - throw new PhoneEntityNotFoundException(mobileNumberId, ex); - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findMobileNumberById: cellphone={1} - EXIT!", this.getClass().getSimpleName(), cellphone)); //NOI18N - - // Return found instance - return cellphone; - } - -} diff --git a/src/java/org/mxchange/jusercore/model/user/AddressbookAdminUserSessionBean.java b/src/java/org/mxchange/jusercore/model/user/AddressbookAdminUserSessionBean.java deleted file mode 100644 index 1dc8927..0000000 --- a/src/java/org/mxchange/jusercore/model/user/AddressbookAdminUserSessionBean.java +++ /dev/null @@ -1,337 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * 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.jusercore.model.user; - -import java.text.MessageFormat; -import java.util.GregorianCalendar; -import javax.ejb.EJB; -import javax.ejb.Stateless; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; -import org.mxchange.jcontacts.contact.Contact; -import org.mxchange.jusercore.exceptions.EmailAddressAlreadyRegisteredException; -import org.mxchange.jusercore.exceptions.UserNameAlreadyRegisteredException; -import org.mxchange.jusercore.exceptions.UserNotFoundException; -import org.mxchange.jusercore.exceptions.UserStatusConfirmedException; -import org.mxchange.jusercore.exceptions.UserStatusLockedException; -import org.mxchange.jusercore.exceptions.UserStatusUnconfirmedException; -import org.mxchange.jusercore.model.user.register.UserRegistrationSessionBeanRemote; -import org.mxchange.jusercore.model.user.status.UserAccountStatus; - -/** - * An administrative user EJB - *

- * @author Roland Häder - */ -@Stateless (name = "adminUser", description = "A bean handling the user data") -public class AddressbookAdminUserSessionBean extends BaseAddressbookDatabaseBean implements AdminUserSessionBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 542_145_347_916L; - - /** - * Registration EJB - */ - @EJB - private UserRegistrationSessionBeanRemote registerBean; - - /** - * Regular user bean - */ - @EJB - private UserSessionBeanRemote userBean; - - /** - * Default constructor - */ - public AddressbookAdminUserSessionBean () { - // Call super constructor - super("jms/addressbook-queue-factory", "jms/addressbook-email-queue"); //NOI18N - } - - @Override - public User addUser (final User user) throws UserNameAlreadyRegisteredException, EmailAddressAlreadyRegisteredException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.addUser: 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.getUserId() instanceof Long) { - // Not allowed here - throw new IllegalStateException(MessageFormat.format("user.userId must be null, is: {0}", user.getUserId())); //NOI18N - } - - // Check if user is registered - if (this.registerBean.isUserNameRegistered(user)) { - // Abort here - throw new UserNameAlreadyRegisteredException(user); - } else if (this.registerBean.isEmailAddressRegistered(user)) { - // Abort here - throw new EmailAddressAlreadyRegisteredException(user); - } - - // Set created timestamp - user.setUserCreated(new GregorianCalendar()); - user.getUserContact().setContactCreated(new GregorianCalendar()); - - // Update cellphone, land-line and fax instance - this.setAllContactPhoneEntriesCreated(user.getUserContact()); - - // Persist it - this.getEntityManager().persist(user); - - // Flush to get id back - this.getEntityManager().flush(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.addUser: user={1},user.userId={2} - EXIT!", this.getClass().getSimpleName(), user, user.getUserId())); //NOI18N - - // Return it - return user; - } - - @Override - public void deleteUser (final User user, final String userDeleteReason) throws UserNotFoundException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.deleteUser: 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.getUserId() == null) { - // Id is set - throw new NullPointerException("user.userId is null"); //NOI18N - } else if (user.getUserId() < 1) { - // Not valid id number - throw new IllegalArgumentException(MessageFormat.format("user.userId={0} is not valid", user.getUserId())); //NOI18N - } else if (user.getUserContact() == null) { - // Throw NPE again - throw new NullPointerException("user.userContact is null"); //NOI18N - } else if (user.getUserContact().getContactId() == null) { - // Throw NPE again - throw new NullPointerException("user.userContact.contactId is null"); //NOI18N - } else if (user.getUserContact().getContactId() < 1) { - // Not valid id number - throw new IllegalArgumentException(MessageFormat.format("user.userContact.contactId={0} is not valid", user.getUserContact().getContactId())); //NOI18N - } else if (user.getUserAccountStatus() == null) { - // Throw NPE again - throw new NullPointerException("user.userAccountStatus is null"); //NOI18N - } else if (!this.userBean.ifUserExists(user)) { - // Name already found - throw new UserNotFoundException(user); - } - - // Get a managed instance - User managedUser = this.getManagedUser(user); - - // Should be found! - assert (managedUser instanceof User) : MessageFormat.format("User with id {0} not found, but should be.", user.getUserId()); //NOI18N - - // Delete it - this.getEntityManager().remove(managedUser); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.deleteUser: EXIT!", this.getClass().getSimpleName())); //NOI18N - } - - @Override - public User linkUser (final User user) throws UserNameAlreadyRegisteredException, EmailAddressAlreadyRegisteredException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.linkUser: user={0} - 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.getUserId() instanceof Long) { - // Id is set - throw new IllegalArgumentException("user.userId is not null"); //NOI18N - } else if (user.getUserContact() == null) { - // Throw NPE again - throw new NullPointerException("user.userContact is null"); //NOI18N - } else if (user.getUserContact().getContactId() == null) { - // Throw NPE again - throw new NullPointerException("user.userContact.contactId is null"); //NOI18N - } else if (user.getUserContact().getContactId() < 1) { - // Not valid id number - throw new IllegalArgumentException(MessageFormat.format("user.userContact.contactId={0} is not valid", user.getUserContact().getContactId())); //NOI18N - } else if (user.getUserAccountStatus() == null) { - // Throw NPE again - throw new NullPointerException("user.userAccountStatus is null"); //NOI18N - } else if (this.userBean.ifUserNameExists(user.getUserName())) { - // Name already found - throw new UserNameAlreadyRegisteredException(user.getUserName()); - } - - // Try to find the contact - Contact managedContact = this.getEntityManager().find(user.getUserContact().getClass(), user.getUserContact().getContactId()); - - // Should be found! - assert (managedContact instanceof Contact) : MessageFormat.format("Contact with id {0} not found, but should be.", user.getUserContact().getContactId()); //NOI18N - - // Set detached object in rexcruiter instance - user.setUserContact(managedContact); - - // Set timestamp - user.setUserCreated(new GregorianCalendar()); - - // Perist it - this.getEntityManager().persist(user); - - // Flush it to get updated instance back - this.getEntityManager().flush(); - - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.linkUser: user={1} - EXIT!", this.getClass().getSimpleName(), user)); //NOI18N - - // Return updated instanc - return user; - } - - @Override - public User lockUserAccount (final User user, final String userLockReason, final String baseUrl) throws UserStatusLockedException, UserStatusUnconfirmedException, UserNotFoundException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.lockUserAccount: user={1},userLockReason={2},baseUrl={3} - CALLED!", this.getClass().getSimpleName(), user, userLockReason, baseUrl)); //NOI18N - - // user should not be null - if (null == user) { - // Abort here - throw new NullPointerException("user is null"); //NOI18N - } else if (user.getUserId() == null) { - // Id is set - throw new NullPointerException("user.userId is null"); //NOI18N - } else if (user.getUserId() < 1) { - // Id is set - throw new IllegalArgumentException(MessageFormat.format("user.userId={0} is null", user.getUserId())); //NOI18N - } else if (user.getUserContact() == null) { - // Throw NPE again - throw new NullPointerException("user.userContact is null"); //NOI18N - } else if (user.getUserContact().getContactId() == null) { - // Throw NPE again - throw new NullPointerException("user.userContact.contactId is null"); //NOI18N - } else if (user.getUserContact().getContactId() < 1) { - // Not valid id number - throw new IllegalArgumentException(MessageFormat.format("user.userContact.contactId={0} is not valid", user.getUserContact().getContactId())); //NOI18N - } else if (user.getUserAccountStatus() == null) { - // Throw NPE again - throw new NullPointerException("user.userAccountStatus is null"); //NOI18N - } else if (!this.userBean.ifUserExists(user)) { - // Name already found - throw new UserNotFoundException(user); - } else if (user.getUserAccountStatus() == UserAccountStatus.LOCKED) { - // Account is locked - throw new UserStatusLockedException(user); - } else if (user.getUserAccountStatus() == UserAccountStatus.UNCONFIRMED) { - // Account is unconfirmed - throw new UserStatusUnconfirmedException(user); - } else if (null == userLockReason) { - // Throw NPE again - throw new NullPointerException("userLockReason is null"); //NOI18N - } else if (userLockReason.isEmpty()) { - // Is empty - throw new IllegalArgumentException("userLockReason is empty"); //NOI18N - } - - // Remove contact instance as this is not updated - user.setUserContact(null); - - // Set as locked, set timestamp and lock reason - user.setUserAccountStatus(UserAccountStatus.LOCKED); - user.setUserLastLocked(new GregorianCalendar()); - user.setUserLastLockedReason(userLockReason); - - // Update user - User managedUser = this.userBean.updateUserData(user); - - // @TODO Create user lock history entry - - // Send out email - // @TODO externalize subject line - this.sendEmail("User account locked", "user_account_locked", managedUser, baseUrl, null); //NOI18N - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.lockUserAccount: managedUser={1} - EXIT!", this.getClass().getSimpleName(), managedUser)); //NOI18N - - // Return detached (and updated) user - return managedUser; - } - - @Override - public User unlockUserAccount (final User user, final String baseUrl) throws UserStatusConfirmedException, UserStatusUnconfirmedException, UserNotFoundException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.lockUserAccount: user={1},baseUrl={2} - CALLED!", this.getClass().getSimpleName(), user, baseUrl)); //NOI18N - - // user should not be null - if (null == user) { - // Abort here - throw new NullPointerException("user is null"); //NOI18N - } else if (user.getUserId() == null) { - // Id is set - throw new NullPointerException("user.userId is null"); //NOI18N - } else if (user.getUserId() < 1) { - // Id is set - throw new IllegalArgumentException(MessageFormat.format("user.userId={0} is null", user.getUserId())); //NOI18N - } else if (user.getUserContact() == null) { - // Throw NPE again - throw new NullPointerException("user.userContact is null"); //NOI18N - } else if (user.getUserContact().getContactId() == null) { - // Throw NPE again - throw new NullPointerException("user.userContact.contactId is null"); //NOI18N - } else if (user.getUserContact().getContactId() < 1) { - // Not valid id number - throw new IllegalArgumentException(MessageFormat.format("user.userContact.contactId={0} is not valid", user.getUserContact().getContactId())); //NOI18N - } else if (user.getUserAccountStatus() == null) { - // Throw NPE again - throw new NullPointerException("user.userAccountStatus is null"); //NOI18N - } else if (!this.userBean.ifUserExists(user)) { - // Name already found - throw new UserNotFoundException(user); - } else if (user.getUserAccountStatus() == UserAccountStatus.CONFIRMED) { - // Account is confirmed - throw new UserStatusConfirmedException(user); - } else if (user.getUserAccountStatus() == UserAccountStatus.UNCONFIRMED) { - // Account is unconfirmed - throw new UserStatusUnconfirmedException(user); - } - - // Remove contact instance as this is not updated - user.setUserContact(null); - - // Unlock account - user.setUserAccountStatus(UserAccountStatus.CONFIRMED); - - // Update user - User managedUser = this.userBean.updateUserData(user); - - // @TODO Create user lock history entry - - // Send out email - // @TODO externalize subject line - this.sendEmail("User account unlocked", "user_account_unlocked", managedUser, baseUrl, null); //NOI18N - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.lockUserAccount: managedUser={1} - EXIT!", this.getClass().getSimpleName(), managedUser)); //NOI18N - - // Return changed account - return managedUser; - } - -} diff --git a/src/java/org/mxchange/jusercore/model/user/AddressbookUserSessionBean.java b/src/java/org/mxchange/jusercore/model/user/AddressbookUserSessionBean.java deleted file mode 100644 index 9cdc6a7..0000000 --- a/src/java/org/mxchange/jusercore/model/user/AddressbookUserSessionBean.java +++ /dev/null @@ -1,800 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * 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.jusercore.model.user; - -import java.text.MessageFormat; -import java.util.GregorianCalendar; -import java.util.List; -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.addressbook.database.BaseAddressbookDatabaseBean; -import org.mxchange.jcontacts.contact.Contact; -import org.mxchange.jcontacts.contact.ContactUtils; -import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber; -import org.mxchange.jphone.phonenumbers.fax.FaxNumbers; -import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber; -import org.mxchange.jphone.phonenumbers.landline.LandLineNumbers; -import org.mxchange.jphone.phonenumbers.mobile.DialableMobileNumber; -import org.mxchange.jphone.phonenumbers.mobile.MobileNumbers; -import org.mxchange.jusercore.exceptions.UserNotFoundException; -import org.mxchange.jusercore.exceptions.UserStatusConfirmedException; -import org.mxchange.jusercore.exceptions.UserStatusLockedException; -import org.mxchange.jusercore.exceptions.UserStatusUnconfirmedException; -import org.mxchange.jusercore.model.user.password_history.PasswordHistory; -import org.mxchange.jusercore.model.user.password_history.UserPasswordHistory; -import org.mxchange.jusercore.model.user.profilemodes.ProfileMode; -import org.mxchange.jusercore.model.user.register.UserRegistrationSessionBeanRemote; -import org.mxchange.jusercore.model.user.status.UserAccountStatus; - -/** - * A user EJB - *

- * @author Roland Häder - */ -@Stateless (name = "user", description = "A bean handling the user data") -public class AddressbookUserSessionBean extends BaseAddressbookDatabaseBean implements UserSessionBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 542_145_347_916L; - - /** - * Registration EJB - */ - @EJB - private UserRegistrationSessionBeanRemote registerBean; - - /** - * Default constructor - */ - public AddressbookUserSessionBean () { - // Call super constructor - super("jms/addressbook-queue-factory", "jms/addressbook-email-queue"); //NOI18N - } - - @Override - @SuppressWarnings ("unchecked") - public List allMemberPublicVisibleUsers () { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allMemberPublicVisibleUsers: CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Get named query - Query query = this.getEntityManager().createNamedQuery("AllMemberPublicUsers", LoginUser.class); //NOI18N - - // Set parameters - query.setParameter("status", UserAccountStatus.CONFIRMED); //NOI18N - query.setParameter("members", ProfileMode.MEMBERS); //NOI18N - query.setParameter("public", ProfileMode.PUBLIC); //NOI18N - - // Get result - List users = query.getResultList(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allMemberPublicVisibleUsers: users.size()={1} - EXIT!", this.getClass().getSimpleName(), users.size())); //NOI18N - - // Return full list - return users; - } - - @Override - @SuppressWarnings ("unchecked") - public List allPublicUsers () { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allPublicUsers: CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Get named query - Query query = this.getEntityManager().createNamedQuery("AllPublicUsers", LoginUser.class); //NOI18N - - // Set parameters - query.setParameter("status", UserAccountStatus.CONFIRMED); //NOI18N - query.setParameter("mode", ProfileMode.PUBLIC); //NOI18N - - // Get result - List users = query.getResultList(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allPublicUsers: users.size()={1} - EXIT!", this.getClass().getSimpleName(), users.size())); //NOI18N - - // Return full list - return users; - } - - @Override - @SuppressWarnings ("unchecked") - public List allUsers () { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allUsers: CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Get named query - Query query = this.getEntityManager().createNamedQuery("AllUsers", LoginUser.class); //NOI18N - - // Get result - 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 - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.confirmAccount: user={1},baseUrl={2} - CALLED!", this.getClass().getSimpleName(), user, baseUrl)); //NOI18N - - // Parameter must be valid - if (null == user) { - // Abort here - throw new NullPointerException("user is null"); //NOI18N - } else if (user.getUserId() == null) { - // Abort here - throw new NullPointerException("user.userId is null"); //NOI18N - } else if (user.getUserId() < 1) { - // Invalid number - throw new IllegalArgumentException(MessageFormat.format("userId is not valid: {0}", user.getUserId())); //NOI18N - } else if (user.getUserAccountStatus() == UserAccountStatus.CONFIRMED) { - // Account is already confirmed - throw new UserStatusConfirmedException(user); - } else if (user.getUserAccountStatus() == UserAccountStatus.LOCKED) { - // Account is already confirmed - throw new UserStatusLockedException(user); - } else if (user.getUserConfirmKey() == null) { - // Throw NPE - throw new NullPointerException("user.userConfirmKey is null"); //NOI18N - } else if (null == baseUrl) { - // Throw it again - throw new NullPointerException("baseUrl is null"); //NOI18N - } else if (baseUrl.isEmpty()) { - // Invalid parameter - throw new IllegalArgumentException("baseUrl is empty"); //NOI18N - } - - // Update user status and remove confirmation key - user.setUserAccountStatus(UserAccountStatus.CONFIRMED); - user.setUserConfirmKey(null); - user.setUserUpdated(new GregorianCalendar()); - - // Update user account - User updatedUser = this.updateUserData(user); - - // Send out email - this.sendEmail("User account confirmed", "user_account_confirmed", updatedUser, baseUrl, null); //NOI18N - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.confirmAccount: updatedUser={1} - EXIT!", this.getClass().getSimpleName(), updatedUser)); //NOI18N - - // Return updated instance - return updatedUser; - } - - @Override - public User fillUserData (final User user) { - // 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 - } - - // Try to locate it - Query query = this.getEntityManager().createNamedQuery("SearchUserByName", LoginUser.class); //NOI18N - - // Set parameter - query.setParameter("userName", user.getUserName()); //NOI18N - - // Initialize variable - User foundUser = null; - - // Try it - try { - // Try to get single result - foundUser = (User) query.getSingleResult(); - } catch (final NoResultException ex) { - // Log it - this.getLoggerBeanLocal().logException(ex); - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.fillUserData: foundUser={1} - EXIT!", this.getClass().getSimpleName(), foundUser)); //NOI18N - - // Return prepared instance - return foundUser; - } - - @Override - public User findUserById (final Long userId) throws UserNotFoundException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findUserById: userId={1} - CALLED!", this.getClass().getSimpleName(), userId)); //NOI18N - - // Is the parameter 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 - } else if (!this.ifUserIdExists(userId)) { - // Does not exist - throw new UserNotFoundException(userId); - } - - // Create query instance - Query query = this.getEntityManager().createNamedQuery("SearchUserById", LoginUser.class); //NOI18N - - // Set user id - query.setParameter("id", userId); //NOI18N - - // Fetch the result, it should be there by now - User user = (User) query.getSingleResult(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findUserById: user={1} - EXIT!", this.getClass().getSimpleName(), user)); //NOI18N - - // Return found user - return user; - } - - @Override - public String generateRandomUserName () { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.generateRandomUserName - CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Get full list - List userList = this.getUserNameList(); - - // Init variable - String userName = null; - - // Loop until a user name is found - while ((userName == null) || (userList.contains(userName))) { - // Generate random name - userName = UserUtils.generateRandomUserName(); - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.generateRandomUserName: userName={1} - EXIT!", this.getClass().getSimpleName(), userName)); //NOI18N - - // Found one, so return it - return userName; - } - - @Override - @SuppressWarnings ("unchecked") - public List getEmailAddressList () { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getEmailAddressList: CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Get query - Query query = this.getEntityManager().createNamedQuery("AllEmailAddresses", String.class); //NOI18N - - // Get result list - List emailAddressList = query.getResultList(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getEmailAddressList: emailAddressList.size()={1} - EXIT!", this.getClass().getSimpleName(), emailAddressList.size())); //NOI18N - - // Return it - return emailAddressList; - } - - @Override - @SuppressWarnings ("unchecked") - public List getUserNameList () { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getUserNameList: CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Get query - Query query = this.getEntityManager().createNamedQuery("AllUserNames", String.class); //NOI18N - - // Get result list - 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 - public boolean ifUserExists (final User user) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.ifUserExists: user={1} - CALLED!", this.getClass().getSimpleName(), user)); //NOI18N - - // userId should not be null - if (null == user) { - // Abort here - throw new NullPointerException("user is null"); //NOI18N - } else if (user.getUserId() == null) { - // Abort here - throw new NullPointerException("user.userId is null"); //NOI18N - } else if (user.getUserId() < 1) { - // Invalid number - throw new IllegalArgumentException(MessageFormat.format("userId is not valid: {0}", user.getUserId())); //NOI18N - } - - // Generate query - Query query = this.getEntityManager().createNamedQuery("SearchUserById", LoginUser.class); //NOI18N - - // Set parameter - query.setParameter("id", user.getUserId()); //NOI18N - - // Try this - try { - 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; - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.ifUserExists: Found user {1} - EXIT!", this.getClass().getSimpleName(), user)); //NOI18N - - // Found it - return true; - } - - @Override - public boolean ifUserIdExists (final Long userId) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.ifUserIdExists: userId={1} - CALLED!", this.getClass().getSimpleName(), userId)); //NOI18N - - // userId should not be null - if (null == userId) { - // Abort here - throw new NullPointerException("userId is null"); //NOI18N - } else if (userId < 1) { - // Invalid number - throw new IllegalArgumentException(MessageFormat.format("userId is not valid: {0}", userId)); //NOI18N - } - - // Generate query - Query query = this.getEntityManager().createNamedQuery("SearchUserById", LoginUser.class); //NOI18N - - // Set parameter - query.setParameter("id", userId); //NOI18N - - // Try this - try { - User dummy = (User) query.getSingleResult(); - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.ifUserIdExists: dummy.userId={1} found.", this.getClass().getSimpleName(), dummy.getUserId())); //NOI18N - } catch (final NoResultException ex) { - // Log it - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.ifUserIdExists: 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 user id {0} found.", userId, ex)); //NOI18N - - // Throw again - throw ex; - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.ifUserIdExists: Found userId={1} - EXIT!", this.getClass().getSimpleName(), userId)); //NOI18N - - // Found it - return true; - } - - @Override - public boolean ifUserNameExists (final String userName) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.ifUserNameExists: userName={1} - CALLED!", this.getClass().getSimpleName(), userName)); //NOI18N - - // userId should not be null - if (null == userName) { - // Abort here - throw new NullPointerException("userName is null"); //NOI18N - } else if (userName.isEmpty()) { - // Abort here - throw new NullPointerException("userName is empty"); //NOI18N - } - - // Generate query - Query query = this.getEntityManager().createNamedQuery("SearchUserByName", LoginUser.class); //NOI18N - - // Set parameter - query.setParameter("userName", userName); //NOI18N - - // Try this - try { - 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; - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.ifUserNameExists: Found userName={1} - EXIT!", this.getClass().getSimpleName(), userName)); //NOI18N - - // Found it - return true; - } - - @Override - public boolean isEmailAddressRegistered (final User user) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isEmailAddressRegistered: 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 - } - - // Generate query - Query query = this.getEntityManager().createNamedQuery("SearchUserByEmailAddress", LoginUser.class); //NOI18N - - // Set parameter - query.setParameter("emailAddress", user.getUserContact().getContactEmailAddress()); //NOI18N - - // Search for it - try { - 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; - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isEmailAddressRegistered: Returning true ... - EXIT!", this.getClass().getSimpleName())); //NOI18N - - // Found it - return true; - } - - @Override - public boolean isUserNameRegistered (final User user) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isUserNameRegistered: 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 - } - - // Generate query - Query query = this.getEntityManager().createNamedQuery("SearchUserByName", LoginUser.class); //NOI18N - - // Set parameter - query.setParameter("userName", user.getUserName()); //NOI18N - - // Try this - try { - 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; - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isUserNameRegistered: Returning true ... - EXIT!", this.getClass().getSimpleName())); //NOI18N - - // Found it - return true; - } - - @Override - public User updateUserData (final User user) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.updateUserData: 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.getUserId() == null) { - // Throw NPE again - throw new NullPointerException("user.userId is null"); //NOI18N - } else if (user.getUserId() < 1) { - // Not valid - throw new IllegalArgumentException(MessageFormat.format("user.userId={0} is not valid.", user.getUserId())); //NOI18N - } else if (user.getUserAccountStatus() == null) { - // Throw NPE again - throw new NullPointerException("user.userAccountStatus is null"); //NOI18N - } else if (!this.ifUserExists(user)) { - // User does not exist - throw new EJBException(MessageFormat.format("User with id {0} does not exist.", user.getUserId())); //NOI18N - } - - // Remove contact instance as this is not updated - user.setUserContact(null); - - // Find the instance - User managedUser = this.getEntityManager().find(user.getClass(), user.getUserId()); - - // Should be found! - assert (managedUser instanceof User) : MessageFormat.format("User with id {0} not found, but should be.", user.getUserId()); //NOI18N - - // Copy all data - UserUtils.copyAll(user, managedUser); - - // Set as updated - managedUser.setUserUpdated(new GregorianCalendar()); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.updateUserData: managedUser={1} - CALLED!", this.getClass().getSimpleName(), managedUser)); //NOI18N - - // Return updated instance - return managedUser; - } - - @Override - public PasswordHistory updateUserPassword (final User user, final String baseUrl) throws UserNotFoundException, UserStatusUnconfirmedException, UserStatusLockedException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.updateUserPassword: user={1},baseUrl={2} - CALLED!", this.getClass().getSimpleName(), user, baseUrl)); //NOI18N - - // user should not be null - if (null == user) { - // Abort here - throw new NullPointerException("user is null"); //NOI18N - } else if (user.getUserId() == null) { - // Throw NPE again - throw new NullPointerException("user.userId is null"); //NOI18N - } else if (user.getUserId() < 1) { - // Not valid - throw new IllegalArgumentException(MessageFormat.format("user.userId={0} is not valid", user.getUserId())); //NOI18N - } else if (user.getUserAccountStatus() == null) { - // Throw NPE - throw new NullPointerException("user.userAccountStatus is null"); //NOI18N - } else if (user.getUserContact() == null) { - // Throw it again - throw new NullPointerException("user.userContact is null"); //NOI18N - } else if (user.getUserContact().getContactId() == null) { - // .. and again - throw new NullPointerException("user.userContact.contactId is null"); //NOI18N - } else if (user.getUserContact().getContactId() < 1) { - // Invalid id - throw new IllegalArgumentException(MessageFormat.format("user.userContact.contactId={0} is invalid", user.getUserContact().getContactId())); //NOI18N - } else if (user.getUserContact().getContactPersonalTitle() == null) { - // Throw NPE again - throw new NullPointerException("user.userContact.contactPersonalTitle is null"); //NOI18N - } else if (!this.ifUserExists(user)) { - // User does not exist - throw new EJBException(MessageFormat.format("User with id {0} does not exist.", user.getUserId())); //NOI18N - } else if (null == baseUrl) { - // Throw it again - throw new NullPointerException("baseUrl is null"); //NOI18N - } else if (baseUrl.isEmpty()) { - // Invalid parameter - throw new IllegalArgumentException("baseUrl is empty"); //NOI18N - } - - // Call other method - User updatedUser = this.updateUserData(user); - - // Create history entry - PasswordHistory entry = new UserPasswordHistory(user.getUserEncryptedPassword(), updatedUser); - - // Set created timestamp - entry.setUserPasswordHistoryCreated(new GregorianCalendar()); - - // Persist it - this.getEntityManager().persist(entry); - - // Flush it to get id number back - this.getEntityManager().flush(); - - // Send email to user - this.sendEmail("User password change", "user_password_change", user, baseUrl, null); //NOI18N - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.updateUserPassword: entry.userPasswordHistoryId={1} - EXIT!", this.getClass().getSimpleName(), entry.getUserPasswordHistoryId())); //NOI18N - - // Return it - return entry; - } - - @Override - public User updateUserPersonalData (final User user) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.updateUserPersonalData: 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.getUserId() == null) { - // Throw NPE again - throw new NullPointerException("user.userId is null"); //NOI18N - } else if (user.getUserId() < 1) { - // Not valid - throw new IllegalArgumentException(MessageFormat.format("user.userId={0} is not valid.", user.getUserId())); //NOI18N - } else if (user.getUserAccountStatus() == null) { - // Throw NPE again - throw new NullPointerException("user.userAccountStatus is null"); //NOI18N - } else if (!this.ifUserExists(user)) { - // User does not exist - throw new EJBException(MessageFormat.format("User with id {0} does not exist.", user.getUserId())); //NOI18N - } - - // Find the instance - User managedUser = this.getEntityManager().find(user.getClass(), user.getUserId()); - - // Should be found! - assert (managedUser instanceof User) : MessageFormat.format("User with id {0} not found, but should be.", user.getUserId()); //NOI18N - - // Copy all data - UserUtils.copyAll(user, managedUser); - - // Set as updated - managedUser.setUserUpdated(new GregorianCalendar()); - managedUser.getUserContact().setContactUpdated(new GregorianCalendar()); - - // Get contact from it and find it - Contact managedContact = this.getEntityManager().find(user.getUserContact().getClass(), user.getUserContact().getContactId()); - - // Should be found - assert (managedContact instanceof Contact) : MessageFormat.format("Contact with id {0} not found, but should be.", user.getUserContact().getContactId()); //NOI18N - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("updateUserPersonalData: managedContact.contactId={0}", managedContact.getContactId())); //NOI18N - - // Copy all - ContactUtils.copyAll(user.getUserContact(), managedContact); - - // Set it back in user - user.setUserContact(managedContact); - - // Should be found! - assert (managedContact instanceof Contact) : MessageFormat.format("Contact with id {0} not merged, but should be.", user.getUserContact().getContactId()); //NOI18N - - // Get mobile instance - DialableMobileNumber mobileNumber = managedContact.getContactMobileNumber(); - - // Is there a mobile instance set? - if (mobileNumber instanceof DialableMobileNumber) { - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("updateUserPersonalData: mobile.phoneId={0} is being updated ...", mobileNumber.getPhoneId())); //NOI18N - - // Then find it, too - DialableMobileNumber foundMobile = this.getEntityManager().find(mobileNumber.getClass(), mobileNumber.getPhoneId()); - - // Should be there - assert (foundMobile instanceof DialableMobileNumber) : MessageFormat.format("Mobile number with id {0} not found but should be.", foundMobile.getPhoneId()); //NOI18N - - // Then merge it, too - DialableMobileNumber managedMobile = this.getEntityManager().merge(foundMobile); - - // Should be there - assert (managedMobile instanceof DialableMobileNumber) : MessageFormat.format("Mobile number with id {0} not found but should be.", managedMobile.getPhoneId()); //NOI18N - - // Copy all - MobileNumbers.copyAll(managedUser.getUserContact().getContactMobileNumber(), managedMobile); - - // Set it back - managedContact.setContactMobileNumber(this.getManaged(mobileNumber, mobileNumber)); - } - - // Get mobile instance - DialableFaxNumber faxNumber = managedContact.getContactFaxNumber(); - - // Is there a fax instance set? - if (faxNumber instanceof DialableFaxNumber) { - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("updateUserPersonalData: faxNumber.phoneId={0} is being updated ...", faxNumber.getPhoneId())); //NOI18N - - // Then find it, too - DialableFaxNumber foundFax = this.getEntityManager().find(faxNumber.getClass(), faxNumber.getPhoneId()); - - // Should be there - assert (foundFax instanceof DialableFaxNumber) : MessageFormat.format("Fax number with id {0} not found but should be.", foundFax.getPhoneId()); //NOI18N - - // Then merge it, too - DialableFaxNumber managedFax = this.getEntityManager().merge(foundFax); - - // Should be there - assert (managedFax instanceof DialableFaxNumber) : MessageFormat.format("Fax number with id {0} not found but should be.", managedFax.getPhoneId()); //NOI18N - - // Copy all - FaxNumbers.copyAll(managedUser.getUserContact().getContactFaxNumber(), managedFax); - - // Set it back - managedContact.setContactFaxNumber(managedFax); - } - - // Get mobile instance - DialableLandLineNumber landLineNumber = managedContact.getContactLandLineNumber(); - - // Is there a fax instance set? - if (landLineNumber instanceof DialableLandLineNumber) { - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("updateUserPersonalData: landLineNumber.phoneId={0} is being updated ...", landLineNumber.getPhoneId())); //NOI18N - - // Then find it, too - DialableLandLineNumber foundLandLine = this.getEntityManager().find(landLineNumber.getClass(), landLineNumber.getPhoneId()); - - // Should be there - assert (foundLandLine instanceof DialableLandLineNumber) : MessageFormat.format("Land line number with id {0} not found but should be.", foundLandLine.getPhoneId()); //NOI18N - - // Then merge it, too - DialableLandLineNumber managedLandLine = this.getEntityManager().merge(foundLandLine); - - // Should be there - assert (managedLandLine instanceof DialableLandLineNumber) : MessageFormat.format("Land line number with id {0} not found but should be.", managedLandLine.getPhoneId()); //NOI18N - - // Copy all - LandLineNumbers.copyAll(managedUser.getUserContact().getContactLandLineNumber(), managedLandLine); - - // Set it back - managedContact.setContactLandLineNumber(managedLandLine); - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.updateUserPersonalData: entry.managedUser={1} - EXIT!", this.getClass().getSimpleName(), managedUser)); //NOI18N - - // Return updated user instance - return managedUser; - } - -} diff --git a/src/java/org/mxchange/jusercore/model/user/activity/AddressbookUserActivityLogMessageBean.java b/src/java/org/mxchange/jusercore/model/user/activity/AddressbookUserActivityLogMessageBean.java deleted file mode 100644 index 4d8b70e..0000000 --- a/src/java/org/mxchange/jusercore/model/user/activity/AddressbookUserActivityLogMessageBean.java +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * 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.jusercore.model.user.activity; - -import java.io.Serializable; -import java.text.MessageFormat; -import javax.ejb.ActivationConfigProperty; -import javax.ejb.MessageDriven; -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.MessageListener; -import javax.jms.ObjectMessage; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; -import org.mxchange.jusercore.model.user.User; - -/** - * A message-driven bean for adding user activity log - *

- * @author Roland Häder - */ -@MessageDriven ( - name = "userActivityLog", - description = "A message-driven bean for adding user activity log", - activationConfig = { - @ActivationConfigProperty ( - propertyName = "destinationLookup", - propertyValue = "jms/addressbook-user-activity-log" - ), - @ActivationConfigProperty ( - propertyName = "destinationType", - propertyValue = "javax.jms.Queue" - ) - } -) -public class AddressbookUserActivityLogMessageBean extends BaseAddressbookDatabaseBean implements MessageListener { - - /** - * Serial number - */ - private static final long serialVersionUID = 14_920_686_785_732_054L; - - /** - * Default constructor - */ - public AddressbookUserActivityLogMessageBean () { - // Call super constructor - super(); - } - - @Override - public void onMessage (final Message message) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.onMessage: message={1} - CALLED!", this.getClass().getSimpleName(), message)); //NOI18N - - // The parameter should be valid - if (null == message) { - // Throw NPE - throw new NullPointerException("message is null"); //NOI18N - } else if (!(message instanceof ObjectMessage)) { - // Not implementing right interface - throw new IllegalArgumentException(MessageFormat.format("message={0} does not implemented ObjectMessage", message)); //NOI18N - } - - // Securely cast it - ObjectMessage objectMessage = (ObjectMessage) message; - - // Init variable - Serializable serializable; - - try { - // Get object from message - serializable = objectMessage.getObject(); - } catch (final JMSException ex) { - // Log it and don't continue any further - this.getLoggerBeanLocal().logException(ex); - return; - } - - // Debug message - this.getLoggerBeanLocal().logDebug(MessageFormat.format("{0}.onMessage: serializable={1}", this.getClass().getSimpleName(), serializable)); //NOI18N - - // Okay, is it the right interface? - if (null == serializable) { - // Throw NPE - throw new NullPointerException("serializable is null"); //NOI18N - } else if (!(serializable instanceof LogableUserActivity)) { - // Not correct object send - throw new IllegalArgumentException(MessageFormat.format("serializable={0} does not implement LogableUserActivity", serializable)); //NOI18N - } - - // Securely cast it - LogableUserActivity userActivity = (LogableUserActivity) serializable; - - // Should be valid - if (null == userActivity) { - // Throw NPE - throw new NullPointerException("userActivity is null"); //NOI18N - } else if (userActivity.getActivityId() instanceof Long) { - // Id number should not be set - throw new IllegalArgumentException(MessageFormat.format("userActivity.activityId={0} should be null", userActivity.getActivityId())); //NOI18N - } else if (userActivity.getActivityUser() == null) { - // Throw NPE again - throw new NullPointerException("userActivity.activityUser is null"); //NOI18N - } else if (userActivity.getActivityUser().getUserId() == null) { - // Throw NPE again - throw new NullPointerException("userActivity.activityUser.userId is null"); //NOI18N - } else if (userActivity.getActivityUser().getUserId() < 1) { - // Throw NPE again - throw new IllegalArgumentException(MessageFormat.format("userActivity.activityUser.userId={0} is not valid", userActivity.getActivityUser().getUserId())); //NOI18N - } else if (userActivity.getActivityType() == null) { - // Throw again ... - throw new NullPointerException("userActivity.activityType is null"); //NOI18N - } else if (userActivity.getActivityType().isEmpty()) { - // Empty type - throw new IllegalArgumentException("userActivity.activityType is empty"); //NOI18N - } else if ((userActivity.getActivityMessage() instanceof String) && (userActivity.getActivityMessage().isEmpty())) { - // Set but empty message - throw new IllegalArgumentException("userActivity.activityMessage is empty"); //NOI18N - } else if (userActivity.getActivityTimestamp() == null) { - // Throw NPE again - throw new NullPointerException("userActivity.activityTimestamp is null"); //NOI18N - } - - // Make user instance managed - User managedUser = this.getManagedUser(userActivity.getActivityUser()); - - // Set it back - userActivity.setActivityUser(managedUser); - - // All fine, persist it - this.getEntityManager().persist(userActivity); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.onMessage: EXIT!", this.getClass().getSimpleName())); //NOI18N - } - -} diff --git a/src/java/org/mxchange/jusercore/model/user/activity/AddressbookUserActivitySessionBean.java b/src/java/org/mxchange/jusercore/model/user/activity/AddressbookUserActivitySessionBean.java deleted file mode 100644 index f883689..0000000 --- a/src/java/org/mxchange/jusercore/model/user/activity/AddressbookUserActivitySessionBean.java +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * 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.jusercore.model.user.activity; - -import java.text.MessageFormat; -import java.util.Arrays; -import java.util.List; -import javax.ejb.EJBException; -import javax.ejb.Stateless; -import javax.jms.JMSException; -import javax.jms.ObjectMessage; -import javax.persistence.Query; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; -import org.mxchange.jusercore.model.user.User; - -/** - * An EJB for user activity log. This class extends BaseDatabaseBean and not - * project-specific "base class". The simple reason is that this class requires - * no email queue as no emails are ever being sent from this class. - *

- * @author Roland Häder - */ -@Stateless (name = "userActivity", description = "A bean handling the user data") -public class AddressbookUserActivitySessionBean extends BaseAddressbookDatabaseBean implements UserActivityLogSessionBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 219_568_677_671_054L; - - /** - * Default constructor - */ - public AddressbookUserActivitySessionBean () { - // Call super constructor - super("jms/jjobs-queue-factory", "jms/jjobs-user-activity-log"); //NOI18N - } - - @Override - public void addUserActivityLog (final LogableUserActivity userActivity) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.addUserActivityLog: userActivity={1} CALLED!", this.getClass().getSimpleName(), userActivity)); //NOI18N - - // Should be valid - if (null == userActivity) { - // Throw NPE - throw new NullPointerException("userActivity is null"); //NOI18N - } else if (userActivity.getActivityId() instanceof Long) { - // Id number should not be set - throw new IllegalArgumentException(MessageFormat.format("userActivity.activityId={0} should be null", userActivity.getActivityId())); //NOI18N - } else if (userActivity.getActivityUser() == null) { - // Throw NPE again - throw new NullPointerException("userActivity.activityUser is null"); //NOI18N - } else if (userActivity.getActivityType() == null) { - // Throw again ... - throw new NullPointerException("userActivity.activityType is null"); //NOI18N - } else if (userActivity.getActivityType().isEmpty()) { - // Empty type - throw new NullPointerException("userActivity.activityType is empty"); //NOI18N - } else if ((userActivity.getActivityMessage() instanceof String) && (userActivity.getActivityMessage().isEmpty())) { - // Set but empty message - throw new NullPointerException("userActivity.activityMessage is empty"); //NOI18N - } else if (userActivity.getActivityTimestamp() == null) { - // Throw NPE again - throw new NullPointerException("userActivity.activityTimestamp is null"); //NOI18N - } - - try { - // Send out email change - ObjectMessage message = this.getSession().createObjectMessage(); - message.setObject(userActivity); - - // Send message - this.sendMessage(message); - } catch (final JMSException ex) { - // Throw again - throw new EJBException(ex); - } - } - - @Override - @SuppressWarnings ("unchecked") - public List fetchAllUserActivityLog () { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.fetchAllUserActivityLog: CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Search for user's activity - Query query = this.getEntityManager().createNamedQuery("AllUserActivityLog", UserActivityLog.class); //NOI18N - - // Get list - List list = query.getResultList(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.fetchAllUserActivityLog: list.size()={1} - EXIT!", this.getClass().getSimpleName(), list.size())); //NOI18N - - // Return it - return list; - } - - @Override - @SuppressWarnings ("unchecked") - public List fetchAllUsersActivityLog (final User user) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.fetchAllUsersActivityLog: user={1} - CALLED!", this.getClass().getSimpleName(), user)); //NOI18N - - // Is user valid? - if (null == user) { - // Throw NPE - throw new NullPointerException("user is null"); //NOI18N - } else if (user.getUserId() == null) { - // Throw again - throw new NullPointerException("user.userId is null"); //NOI18N - } else if (user.getUserId() < 1) { - // Invalid id number - throw new IllegalArgumentException(MessageFormat.format("user.userId{0} is not valid", user.getUserId())); //NOI18N - } - - // Search for user's activity - Query query = this.getEntityManager().createNamedQuery("FindAllUsersActivity", UserActivityLog.class); //NOI18N - - // Set parameter - query.setParameter("activityUser", user); //NOI18N - - // Get list - List list = query.getResultList(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.fetchAllUsersActivityLog: list.size()={1} - EXIT!", this.getClass().getSimpleName(), list.size())); //NOI18N - - // Return it - return list; - } - - @Override - @SuppressWarnings ("unchecked") - public List fetchAllUsersActivityLogByMultipleType (final User user, final String[] activityTypes) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.fetchAllUsersActivityLogByType: user={1},activityTypes={2} - CALLED!", this.getClass().getSimpleName(), user, Arrays.toString(activityTypes))); //NOI18N - - // Is user valid? - if (null == user) { - // Throw NPE - throw new NullPointerException("user is null"); //NOI18N - } else if (user.getUserId() == null) { - // Throw again - throw new NullPointerException("user.userId is null"); //NOI18N - } else if (user.getUserId() < 1) { - // Invalid id number - throw new IllegalArgumentException(MessageFormat.format("user.userId{0} is not valid", user.getUserId())); //NOI18N - } else if (null == activityTypes) { - // Throw NPE again - throw new NullPointerException("activityTypes is null"); //NOI18N - } else if (activityTypes.length == 0) { - // Should not be empty - throw new IllegalArgumentException("activityTypes is empty"); //NOI18N - } - - // Search for user's activity - Query query = this.getEntityManager().createNamedQuery("FindUsersActivityByMultipleTypes", UserActivityLog.class); //NOI18N - - // Set parameters - query.setParameter("activityUser", user); //NOI18N - query.setParameter("activityTypes", Arrays.asList(activityTypes)); //NOI18N - - // Get list - List list = query.getResultList(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.fetchAllUsersActivityLogByType: list.size()={1} - EXIT!", this.getClass().getSimpleName(), list.size())); //NOI18N - - // Return it - return list; - } - - @Override - @SuppressWarnings ("unchecked") - public List fetchAllUsersActivityLogByType (final User user, final String activityType) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.fetchAllUsersActivityLogByType: user={1},activityType={2} - CALLED!", this.getClass().getSimpleName(), user, activityType)); //NOI18N - - // Is user valid? - if (null == user) { - // Throw NPE - throw new NullPointerException("user is null"); //NOI18N - } else if (user.getUserId() == null) { - // Throw again - throw new NullPointerException("user.userId is null"); //NOI18N - } else if (user.getUserId() < 1) { - // Invalid id number - throw new IllegalArgumentException(MessageFormat.format("user.userId{0} is not valid", user.getUserId())); //NOI18N - } else if (null == activityType) { - // Throw NPE again - throw new NullPointerException("activityType is null"); //NOI18N - } else if (activityType.isEmpty()) { - // Should not be empty - throw new IllegalArgumentException("activityType is empty"); //NOI18N - } - - // Search for user's activity - Query query = this.getEntityManager().createNamedQuery("FindUsersActivityByType", UserActivityLog.class); //NOI18N - - // Set parameters - query.setParameter("activityUser", user); //NOI18N - query.setParameter("activityType", activityType); //NOI18N - - // Get list - List list = query.getResultList(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.fetchAllUsersActivityLogByType: list.size()={1} - EXIT!", this.getClass().getSimpleName(), list.size())); //NOI18N - - // Return it - return list; - } - -} diff --git a/src/java/org/mxchange/jusercore/model/user/email_address/AddressbookUserEmailChangeSessionBean.java b/src/java/org/mxchange/jusercore/model/user/email_address/AddressbookUserEmailChangeSessionBean.java deleted file mode 100644 index c035310..0000000 --- a/src/java/org/mxchange/jusercore/model/user/email_address/AddressbookUserEmailChangeSessionBean.java +++ /dev/null @@ -1,235 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * 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.jusercore.model.user.email_address; - -import java.text.MessageFormat; -import java.util.GregorianCalendar; -import java.util.List; -import javax.ejb.EJB; -import javax.ejb.EJBException; -import javax.ejb.Stateless; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; -import org.mxchange.jusercore.model.email_address.ChangeableEmailAddress; -import org.mxchange.jusercore.model.email_address.EmailAddressChange; -import org.mxchange.jusercore.model.user.UserSessionBeanRemote; -import org.mxchange.jusercore.model.user.UserUtils; - -/** - * A session-scoped bean for changing email addresses - *

- * @author Roland Häder - */ -@Stateless (name = "userEmailChange", description = "A bean handling user email changes") -public class AddressbookUserEmailChangeSessionBean extends BaseAddressbookDatabaseBean implements UserEmailChangeSessionBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 182_698_165_971_548L; - - /** - * User bean - */ - @EJB - private UserSessionBeanRemote userBean; - - /** - * Default constructor - */ - public AddressbookUserEmailChangeSessionBean () { - // Call super constructor - super("jms/addressbook-queue-factory", "jms/addressbook-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 - Query query = this.getEntityManager().createNamedQuery("AllEmailAddressChanges", String.class); //NOI18N - - // Get all entries - 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 - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.enqueueEmailAddressForChange: emailChange={1},baseUrl={2} - CALLED!", this.getClass().getSimpleName(), emailChange, baseUrl)); //NOI18N - - // Email address change should be valid - if (null == emailChange) { - // Abort here - throw new NullPointerException("emailChange is null"); //NOI18N - } else if (emailChange.getEmailChangeUser() == null) { - // Throw NPE again - throw new NullPointerException("emailChange.emailChangeUser is null"); //NOI18N - } else if (emailChange.getEmailChangeUser().getUserId() == null) { - // Throw NPE again - throw new NullPointerException("emailChange.emailChangeUser.userId is null"); //NOI18N - } 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 - } else if (this.isEmailAddressEnqueued(emailChange.getEmailAddress())) { - // Email address is already enqueued - throw new EJBException(MessageFormat.format("Email address {0} is already enqueued.", emailChange.getEmailAddress())); //NOI18N - } - - // The email change is not (yet) there, add secure hash and "created" timestamp - emailChange.setEmailChangeCreated(new GregorianCalendar()); - this.generateSecureHash(emailChange); - - // Persist it - //@TODO Fix email delivery then allow this: this.getEntityManager().persist(emailChange); - - // Send email - this.sendEmail("User email change", "user_email_change", emailChange.getEmailChangeUser(), baseUrl, null); //NOI18N - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.enqueueEmailAddressForChange - EXIT!", this.getClass().getSimpleName())); //NOI18N - } - - @Override - public boolean isEmailAddressEnqueued (final String emailAddress) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isEmailAddressEnqueued: emailAddress={1} - CALLED!", this.getClass().getSimpleName(), emailAddress)); //NOI18N - - // Create query instance - Query query = this.getEntityManager().createNamedQuery("SearchEmailChangeByEmail"); //NOI18N - - // Add email address as parameter - query.setParameter("email", emailAddress); //NOI18N - - // Initialize variable - boolean isFound = false; - - // Try it - try { - // Try to get single result - ChangeableEmailAddress dummy = (ChangeableEmailAddress) query.getSingleResult(); - - // Found it - isFound = true; - } catch (final NoResultException ex) { - // Log it - this.getLoggerBeanLocal().logException(ex); - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isEmailAddressEnqueued: isFound={1} - EXIT!", this.getClass().getSimpleName(), isFound)); //NOI18N - - // Return it - return isFound; - } - - @Override - public void updateEmailAddress (final ChangeableEmailAddress emailAddress) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.updateEmailAddress: emailAddress={1} - CALLED!", this.getClass().getSimpleName(), emailAddress)); //NOI18N - - // Email address change should be valid - if (null == emailAddress) { - // Abort here - throw new NullPointerException("emailAddress is null"); //NOI18N - } else if (emailAddress.getEmailChangeId() == null) { - // Throw NPE again - throw new NullPointerException("emailAddress.emailChangeId is null"); //NOI18N - } else if (emailAddress.getEmailChangeId() < 1) { - // Not valid - throw new IllegalArgumentException(MessageFormat.format("emailAddress.emailChangeId={0} is not valid.", emailAddress.getEmailChangeId())); //NOI18N - } 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 - } - - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. - } - - /** - * Generates a secure, unique hash for given email address change. This - * requires to check if the hash is really not there. - *

- * @param emailAddress Email address change - */ - private void generateSecureHash (final ChangeableEmailAddress emailAddress) { - // Email address change should be valid - if (null == emailAddress) { - // Abort here - throw new NullPointerException("emailAddress is null"); //NOI18N - } else if (emailAddress.getEmailAddress().trim().isEmpty()) { - // Email address is empty - throw new IllegalArgumentException("emailAddress.emaiLAddress is empty."); //NOI18N - } - - // Initialize loop with null - String hash = null; - - // Default is not used - boolean isUsed = true; - - // Search for free hash - while (isUsed) { - // Generate hash, there is already in UserUtils a nice method that can be used for this purpose. - hash = UserUtils.encryptPassword(String.format("%s:%s", emailAddress.getEmailAddress(), emailAddress.toString())); //NOI18N - - // The hash *may* be unique, better test it - Query query = this.getEntityManager().createNamedQuery("SearchEmailChangeByHash", EmailAddressChange.class); //NOI18N - - // Set hash as parameter - query.setParameter("hash", hash); //NOI18N - - // Try to get single result - try { - // Get single result - ChangeableEmailAddress dummy = (ChangeableEmailAddress) query.getSingleResult(); - } catch (final NoResultException ex) { - // Not found - isUsed = false; - } - } - - // hash should not be null and set - assert (hash != null) : "hash is null"; //NOI18N - assert (!hash.isEmpty()) : "hash is empty"; //NOI18N - - // Set it in email change - emailAddress.setEmailChangeHash(hash); - } - -} diff --git a/src/java/org/mxchange/jusercore/model/user/login/FinancialsUserLoginSessionBean.java b/src/java/org/mxchange/jusercore/model/user/login/FinancialsUserLoginSessionBean.java deleted file mode 100644 index 699565c..0000000 --- a/src/java/org/mxchange/jusercore/model/user/login/FinancialsUserLoginSessionBean.java +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * 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.jusercore.model.user.login; - -import java.text.MessageFormat; -import javax.ejb.EJB; -import javax.ejb.Stateless; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; -import org.mxchange.jusercore.container.login.LoginContainer; -import org.mxchange.jusercore.exceptions.UserNotFoundException; -import org.mxchange.jusercore.exceptions.UserPasswordMismatchException; -import org.mxchange.jusercore.exceptions.UserStatusLockedException; -import org.mxchange.jusercore.exceptions.UserStatusUnconfirmedException; -import org.mxchange.jusercore.model.login.user.UserLoginSessionBeanRemote; -import org.mxchange.jusercore.model.user.User; -import org.mxchange.jusercore.model.user.UserSessionBeanRemote; -import org.mxchange.jusercore.model.user.UserUtils; -import org.mxchange.jusercore.model.user.register.UserRegistrationSessionBeanRemote; -import org.mxchange.jusercore.model.user.status.UserAccountStatus; - -/** - * A session EJB for user logins - *

- * @author Roland Häder - */ -@Stateless (name = "userLogin", description = "A bean handling the user login for Financials project") -public class FinancialsUserLoginSessionBean extends BaseAddressbookDatabaseBean implements UserLoginSessionBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 21_785_978_127_581_965L; - - /** - * Registration EJB - */ - @EJB - private UserRegistrationSessionBeanRemote registerBean; - - /** - * User EJB - */ - @EJB - 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 - - // Check some beans - assert (this.userBean instanceof UserSessionBeanRemote) : "this.userBean is not set"; //NOI18N - assert (this.registerBean instanceof UserRegistrationSessionBeanRemote) : "this.registerBean is not set"; //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.registerBean.isUserNameRegistered(container.getUser())) { - // Not registered - throw new UserNotFoundException(container.getUser()); - } - - // Get user instance from persistance - 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 UserUtils.ifPasswordMatches(container, updatedUser); - } - -} diff --git a/src/java/org/mxchange/jusercore/model/user/password_history/AddressbookUserPasswordHistorySessionBean.java b/src/java/org/mxchange/jusercore/model/user/password_history/AddressbookUserPasswordHistorySessionBean.java deleted file mode 100644 index dfb2503..0000000 --- a/src/java/org/mxchange/jusercore/model/user/password_history/AddressbookUserPasswordHistorySessionBean.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * 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.jusercore.model.user.password_history; - -import java.text.MessageFormat; -import java.util.List; -import javax.ejb.Stateless; -import javax.persistence.Query; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; -import org.mxchange.jusercore.model.user.User; - -/** - * A user password history EJB - *

- * @author Roland Häder - */ -@Stateless (name = "userPasswordHistory", description = "A stateless EJB for user's password history. This bean does return the full user's password history and not limited. The application then needs to limit it to it's purpose.") -public class AddressbookUserPasswordHistorySessionBean extends BaseAddressbookDatabaseBean implements UserPasswordHistorySessionBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 395_767_546_195_014L; - - /** - * Default constructor - */ - public AddressbookUserPasswordHistorySessionBean () { - // Call super constructor - super(); - } - - @Override - @SuppressWarnings ("unchecked") - public List getUserPasswordHistory (final User user) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getUserPasswordHistory(): user={1} - EXIT!", 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.getUserId() == null) { - // Throw NPE again - throw new NullPointerException("user.userId is null"); //NOI18N - } else if (user.getUserId() < 1) { - // Illegal id number - throw new IllegalArgumentException(MessageFormat.format("user.userId={0} is not allowed.", user.getUserId())); //NOI18N - } - - // Get named query - Query query = this.getEntityManager().createNamedQuery("AllUsersHistoryEntries", UserPasswordHistory.class); //NOI18N - - // Set parameter - query.setParameter("user", user); //NOI18N - - // Get full history - List history = query.getResultList(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getUserPasswordHistory(): history.size()={1} - EXIT !", this.getClass().getSimpleName(), history.size())); //NOI18N - - // Return it - return history; - } - -} diff --git a/src/java/org/mxchange/jusercore/model/user/register/AddressbookUserRegistrationSessionBean.java b/src/java/org/mxchange/jusercore/model/user/register/AddressbookUserRegistrationSessionBean.java deleted file mode 100644 index 385111d..0000000 --- a/src/java/org/mxchange/jusercore/model/user/register/AddressbookUserRegistrationSessionBean.java +++ /dev/null @@ -1,202 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * 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.jusercore.model.user.register; - -import java.text.MessageFormat; -import java.util.Objects; -import javax.ejb.EJB; -import javax.ejb.Stateless; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; -import org.mxchange.jcontacts.contact.Contact; -import org.mxchange.jusercore.exceptions.EmailAddressAlreadyRegisteredException; -import org.mxchange.jusercore.exceptions.UserNameAlreadyRegisteredException; -import org.mxchange.jusercore.model.user.AdminUserSessionBeanRemote; -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.UserUtils; - -/** - * A session-scoped bean for user registration - *

- * @author Roland Häder - */ -@Stateless (name = "userRegistration", description = "A bean handling the user registration") -public class AddressbookUserRegistrationSessionBean extends BaseAddressbookDatabaseBean implements UserRegistrationSessionBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 12_348_958_986_818_627L; - - /** - * Administrative user bean - */ - @EJB - private AdminUserSessionBeanRemote adminUserBean; - - /** - * Regular user EJB - */ - @EJB - private UserSessionBeanRemote userBean; - - /** - * Default constructor - */ - public AddressbookUserRegistrationSessionBean () { - // Call super constructor - super("jms/addressbook-queue-factory", "jms/addressbook-email-queue"); //NOI18N - } - - @Override - public String generateConfirmationKey (final User user) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.generateConfirmationKey: 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 - } - - // Create named instance - Query query = this.getEntityManager().createNamedQuery("SearchUserByConfirmKey", LoginUser.class); //NOI18N - - // Init confirmation key - String confirmationKey = null; - - // Find a free one - while (confirmationKey == null) { - // Create new one - String key = UserUtils.generatedConfirmationKey(user); - - // Set key as parameter - query.setParameter("confirmKey", key); //NOI18N - - // Try it - try { - // Get contact instance - Contact contact = (Contact) query.getSingleResult(); - - // Warning message - this.getLoggerBeanLocal().logWarning(MessageFormat.format("{0}.generateConfirmationKey: key {1} already found: contact.contactId={2}", this.getClass().getSimpleName(), key, contact.getContactId())); //NOI18N - } catch (final NoResultException ex) { - // Not found, normal case - confirmationKey = key; - break; - } - } - - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.generateConfirmationKey: confirmationKey={1} - EXIT!", this.getClass().getSimpleName(), confirmationKey)); //NOI18N - - // Return it - return confirmationKey; - } - - @Override - public boolean isEmailAddressRegistered (final User user) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isEmailAddressRegistered: user={1} - CALLED!", this.getClass().getSimpleName(), user)); //NOI18N - - // Check bean - assert (this.userBean instanceof UserSessionBeanRemote) : "this.userBean is not set"; //NOI18N - - // user should not be null - if (null == user) { - // Abort here - throw new NullPointerException("user is null"); //NOI18N - } - - // Call other bean - return this.userBean.isEmailAddressRegistered(user); - } - - @Override - public boolean isUserNameRegistered (final User user) { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.isUserNameRegistered: user={1} - CALLED!", this.getClass().getSimpleName(), user)); //NOI18N - - // Check bean - assert (this.userBean instanceof UserSessionBeanRemote) : "this.userBean is not set"; //NOI18N - - // user should not be null - if (null == user) { - // Abort here - throw new NullPointerException("user is null"); //NOI18N - } - - // Call other bean - return this.userBean.isUserNameRegistered(user); - } - - @Override - public User registerUser (final User user, final String baseUrl, final String randomPassword) throws UserNameAlreadyRegisteredException, EmailAddressAlreadyRegisteredException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.registerUser: user={1},baseUrl={2},randomPassword[]={3} - CALLED!", this.getClass().getSimpleName(), user, baseUrl, Objects.toString(randomPassword))); //NOI18N - - // user should not be null - if (null == user) { - // Abort here - throw new NullPointerException("user is null"); //NOI18N - } else if (user.getUserContact() == null) { - // Throw NPE again - throw new NullPointerException("user.userContact is null"); //NOI18N - } else if (user.getUserContact().getContactEmailAddress() == null) { - // Throw NPE again - throw new NullPointerException("user.userContact.contactEmailAddress is null"); //NOI18N - } else if (user.getUserContact().getContactEmailAddress().isEmpty()) { - // Is empty - throw new IllegalArgumentException("user.userContact.contactEmailAddress is empty"); //NOI18N - } - - // Check if user is registered - if (this.isUserNameRegistered(user)) { - // Abort here - throw new UserNameAlreadyRegisteredException(user); - } else if (this.isEmailAddressRegistered(user)) { - // Abort here - throw new EmailAddressAlreadyRegisteredException(user); - } - - // Call other EJB - User addedUser = this.adminUserBean.addUser(user); - - // Default template is with no random password - String templateName = "user_registration"; //NOI18N - - // Is password set? - if ((randomPassword instanceof String) && (!randomPassword.isEmpty())) { - // Switch to other template - templateName = "user_registration_random"; //NOI18N - } - - // Send email - // @TODO: Internationlize the subject line somehow - this.sendEmail("Registration", templateName, addedUser, baseUrl, randomPassword); //NOI18N - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.registerUser: addedUser={1},addedUser.userId={2} - EXIT!", this.getClass().getSimpleName(), addedUser, addedUser.getUserId())); //NOI18N - - // Return it - return addedUser; - } - -} diff --git a/src/java/org/mxchange/jusercore/model/user/resendlink/AddressbookResendLinkSessionBean.java b/src/java/org/mxchange/jusercore/model/user/resendlink/AddressbookResendLinkSessionBean.java deleted file mode 100644 index 70ed720..0000000 --- a/src/java/org/mxchange/jusercore/model/user/resendlink/AddressbookResendLinkSessionBean.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (C) 2016, 2017 Roland Häder - * - * 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.jusercore.model.user.resendlink; - -import java.text.MessageFormat; -import java.util.Locale; -import javax.ejb.EJB; -import javax.ejb.Stateless; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; -import org.mxchange.jusercore.exceptions.UserNotFoundException; -import org.mxchange.jusercore.exceptions.UserStatusConfirmedException; -import org.mxchange.jusercore.exceptions.UserStatusLockedException; -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.register.UserRegistrationSessionBeanRemote; -import org.mxchange.jusercore.model.user.status.UserAccountStatus; - -/** - * A session-based EJB for resending confirmation links - *

- * @author Roland Häder - */ -@Stateless (name = "userResendConfirmationLink", description = "A bean resending confirmation links") -public class AddressbookResendLinkSessionBean extends BaseAddressbookDatabaseBean implements ResendLinkSessionBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 71_546_726_857_195_360L; - - /** - * Registration bean - */ - @EJB - private UserRegistrationSessionBeanRemote registerBean; - - /** - * Regular user bean - */ - @EJB - private UserSessionBeanRemote userBean; - - /** - * Default constructor - */ - public AddressbookResendLinkSessionBean () { - // Call super constructor - super("jms/addressbook-queue-factory", "jms/addressbook-email-queue"); //NOI18N - } - - @Override - public void resendConfirmationLink (final User user, final Locale locale, final String baseUrl) throws UserNotFoundException, UserStatusConfirmedException, UserStatusLockedException { - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.resendConfirmationLink: user={1},locale={2},baseUrl={3} - CALLED!", this.getClass().getSimpleName(), user, locale, baseUrl)); //NOI18N - - // The user instance should be valid - if (null == user) { - // Throw NPE - throw new NullPointerException("user is null"); //NOI18N - } else if (user.getUserId() == null) { - // Throw NPE again - throw new NullPointerException("user.userId is null"); //NOI18N - } else if (user.getUserId() < 1) { - // Invalid id number - throw new IllegalArgumentException(MessageFormat.format("user.userId={0} is not valid", user.getUserId())); //NOI18N - } else if (!this.userBean.ifUserExists(user)) { - // User not found - throw new UserNotFoundException(user); - } else if (user.getUserConfirmKey() == null) { - // Throw NPE again - throw new NullPointerException("this.userConfirmKey is null"); //NOI18N - } else if (user.getUserAccountStatus() == UserAccountStatus.CONFIRMED) { - // User account status is not UNCONFIRMED - throw new UserStatusConfirmedException(user); - } else if (user.getUserAccountStatus() == UserAccountStatus.LOCKED) { - // User account status is not UNCONFIRMED - throw new UserStatusLockedException(user); - } else if (null == locale) { - // Locale should be set - throw new NullPointerException("locale is null"); //NOI18N - } - - // Get new registration key - String confirmationKey = this.registerBean.generateConfirmationKey(user); - - // Get managed instance - User managedUser = this.getEntityManager().find(LoginUser.class, user.getUserId()); - - // Set it in user - managedUser.setUserConfirmKey(confirmationKey); - - // Send email - // @TODO: Internationlize the subject line somehow - this.sendEmail("Resend user confirmation link", "user_resend_confirmation_link", user, baseUrl, null); //NOI18N - - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.resendConfirmationLink: EXIT!", this.getClass().getSimpleName())); //NOI18N - } - -} diff --git a/src/java/templates/de/account_confirmed.vm b/src/java/templates/de/account_confirmed.vm new file mode 100644 index 0000000..f56ac6c --- /dev/null +++ b/src/java/templates/de/account_confirmed.vm @@ -0,0 +1,10 @@ +Hallo $contactPersonalTitle $contactFirstName $contactFamilyName, + +Sie hatten soeben ($userUpdated) Ihren Account bestätigt. Vielen Dank. + +Sie können sich mit Ihrem Benutzernamen $userName und Ihrem vergebenen Passwort im Mitgliedsbereich einloggen. + +Mit freundlichen Grüßen + +Kontaktmöglichkeit und Impressum: +$baseUrl/imprint.xhtml diff --git a/src/java/templates/de/account_confirmed_1.vm b/src/java/templates/de/account_confirmed_1.vm new file mode 100644 index 0000000..f56ac6c --- /dev/null +++ b/src/java/templates/de/account_confirmed_1.vm @@ -0,0 +1,10 @@ +Hallo $contactPersonalTitle $contactFirstName $contactFamilyName, + +Sie hatten soeben ($userUpdated) Ihren Account bestätigt. Vielen Dank. + +Sie können sich mit Ihrem Benutzernamen $userName und Ihrem vergebenen Passwort im Mitgliedsbereich einloggen. + +Mit freundlichen Grüßen + +Kontaktmöglichkeit und Impressum: +$baseUrl/imprint.xhtml diff --git a/src/java/templates/de/registration.vm b/src/java/templates/de/registration.vm new file mode 100644 index 0000000..c0e5baa --- /dev/null +++ b/src/java/templates/de/registration.vm @@ -0,0 +1,53 @@ +Hallo $contactPersonalTitle $contactFirstName $contactFamilyName, + +Sie hatten sich eben ($userCreated) bei uns angemeldet. Sollten Sie dies nicht gewesen sein, so melden Sie sich bitter per Kontaktformular bei uns. + +Hier sind Ihre Daten: +--------------------- +Benuzter-Id: +$userId +--------------------- +Benutzername: +$userName +--------------------- +Anrede: +$contactPersonalTitle +--------------------- +Titel: +$contactTitle +--------------------- +Vorname: +$contactFirstName +--------------------- +Nachname: +$contactFamilyName +--------------------- +Straße + Hausnummer: +$contactStreet $contactHouseNumber +--------------------- +PLZ, Wohnort: +$contactZipCode $contactCity +--------------------- +Geburtsdatum: +$contactBirthday +--------------------- +Email-Adresse: +$contactEmailAddress +--------------------- + +Wenn Sie sich anmelden möchten, so müssen Sie Ihren Account bestätigen. Bitte klicken Sie oder kopieren Sie den unten stehenden Link in Ihren Browser: + +- - - - - - - - - - - - - - - - - - - - - +$baseUrl/guest/user/user_confirm_account.xhtml?confirmKey=$userConfirmKey +- - - - - - - - - - - - - - - - - - - - - + +Falls der Link nicht funktioniert, rufen Sie bitte folgenden auf und lassen sich einen neuen Link zuschicken: + +- - - - - - - - - - - - - - - - - - - - - +$baseUrl/guest/user/resend_link.xhtml +- - - - - - - - - - - - - - - - - - - - - + +Mit freundlichen Grüßen + +Kontaktmöglichkeit und Impressum: +$baseUrl/imprint.xhtml diff --git a/src/java/templates/de/registration_1.vm b/src/java/templates/de/registration_1.vm new file mode 100644 index 0000000..c0e5baa --- /dev/null +++ b/src/java/templates/de/registration_1.vm @@ -0,0 +1,53 @@ +Hallo $contactPersonalTitle $contactFirstName $contactFamilyName, + +Sie hatten sich eben ($userCreated) bei uns angemeldet. Sollten Sie dies nicht gewesen sein, so melden Sie sich bitter per Kontaktformular bei uns. + +Hier sind Ihre Daten: +--------------------- +Benuzter-Id: +$userId +--------------------- +Benutzername: +$userName +--------------------- +Anrede: +$contactPersonalTitle +--------------------- +Titel: +$contactTitle +--------------------- +Vorname: +$contactFirstName +--------------------- +Nachname: +$contactFamilyName +--------------------- +Straße + Hausnummer: +$contactStreet $contactHouseNumber +--------------------- +PLZ, Wohnort: +$contactZipCode $contactCity +--------------------- +Geburtsdatum: +$contactBirthday +--------------------- +Email-Adresse: +$contactEmailAddress +--------------------- + +Wenn Sie sich anmelden möchten, so müssen Sie Ihren Account bestätigen. Bitte klicken Sie oder kopieren Sie den unten stehenden Link in Ihren Browser: + +- - - - - - - - - - - - - - - - - - - - - +$baseUrl/guest/user/user_confirm_account.xhtml?confirmKey=$userConfirmKey +- - - - - - - - - - - - - - - - - - - - - + +Falls der Link nicht funktioniert, rufen Sie bitte folgenden auf und lassen sich einen neuen Link zuschicken: + +- - - - - - - - - - - - - - - - - - - - - +$baseUrl/guest/user/resend_link.xhtml +- - - - - - - - - - - - - - - - - - - - - + +Mit freundlichen Grüßen + +Kontaktmöglichkeit und Impressum: +$baseUrl/imprint.xhtml diff --git a/src/java/templates/de/resend_confirmation_link.vm b/src/java/templates/de/resend_confirmation_link.vm new file mode 100644 index 0000000..6782f02 --- /dev/null +++ b/src/java/templates/de/resend_confirmation_link.vm @@ -0,0 +1,21 @@ +Hallo $contactPersonalTitle $contactFirstName $contactFamilyName, + +Sie hatten soeben ($userUpdated) einen neuen Bestätigungslink angefordert. Die Anmeldung war $userCreated . + +Hier ist der neue Link: +- - - - - - - - - - - - - - - - - - - - - +$baseUrl/guest/user/user_confirm_account.xhtml?confirmKey=$userConfirmKey +- - - - - - - - - - - - - - - - - - - - - + +Falls der Link nicht funktioniert, rufen Sie bitte folgenden auf und lassen sich einen neuen Link zuschicken: + +- - - - - - - - - - - - - - - - - - - - - +$baseUrl/guest/user/resend_link.xhtml +- - - - - - - - - - - - - - - - - - - - - + +Sollten Sie dies bereits getan haben und nicht weiterkommen, so melden Sie sich bitte bei uns. + +Mit freundlichen Grüßen + +Kontaktmöglichkeit und Impressum: +$baseUrl/imprint.xhtml diff --git a/src/java/templates/de/resend_confirmation_link_1.vm b/src/java/templates/de/resend_confirmation_link_1.vm new file mode 100644 index 0000000..6782f02 --- /dev/null +++ b/src/java/templates/de/resend_confirmation_link_1.vm @@ -0,0 +1,21 @@ +Hallo $contactPersonalTitle $contactFirstName $contactFamilyName, + +Sie hatten soeben ($userUpdated) einen neuen Bestätigungslink angefordert. Die Anmeldung war $userCreated . + +Hier ist der neue Link: +- - - - - - - - - - - - - - - - - - - - - +$baseUrl/guest/user/user_confirm_account.xhtml?confirmKey=$userConfirmKey +- - - - - - - - - - - - - - - - - - - - - + +Falls der Link nicht funktioniert, rufen Sie bitte folgenden auf und lassen sich einen neuen Link zuschicken: + +- - - - - - - - - - - - - - - - - - - - - +$baseUrl/guest/user/resend_link.xhtml +- - - - - - - - - - - - - - - - - - - - - + +Sollten Sie dies bereits getan haben und nicht weiterkommen, so melden Sie sich bitte bei uns. + +Mit freundlichen Grüßen + +Kontaktmöglichkeit und Impressum: +$baseUrl/imprint.xhtml diff --git a/src/java/templates/de/user_password_change.vm b/src/java/templates/de/user_password_change.vm new file mode 100644 index 0000000..1757a45 --- /dev/null +++ b/src/java/templates/de/user_password_change.vm @@ -0,0 +1,13 @@ +Hallo $contactPersonalTitle $contactFirstName $contactFamilyName, + +Sie haben soeben Ihr Zugangspasswort geändert. Das alte Passwort ist somit nicht mehr gültig. Aus Sicherheitsgründen kann Ihr neuesd Passwort hier nicht mit gesendet werden. + +----------------------------------- +Ihr Benutzername: $userName +Benutzer-Id: $userId +----------------------------------- + +Mit freundlichen Grüßen + +Kontaktmöglichkeit und Impressum: +$baseUrl/imprint.xhtml diff --git a/src/java/templates/de/user_password_change_1.vm b/src/java/templates/de/user_password_change_1.vm new file mode 100644 index 0000000..1757a45 --- /dev/null +++ b/src/java/templates/de/user_password_change_1.vm @@ -0,0 +1,13 @@ +Hallo $contactPersonalTitle $contactFirstName $contactFamilyName, + +Sie haben soeben Ihr Zugangspasswort geändert. Das alte Passwort ist somit nicht mehr gültig. Aus Sicherheitsgründen kann Ihr neuesd Passwort hier nicht mit gesendet werden. + +----------------------------------- +Ihr Benutzername: $userName +Benutzer-Id: $userId +----------------------------------- + +Mit freundlichen Grüßen + +Kontaktmöglichkeit und Impressum: +$baseUrl/imprint.xhtml diff --git a/src/java/templates/en/user_account_confirmed.vm b/src/java/templates/en/user_account_confirmed.vm new file mode 100644 index 0000000..b19185f --- /dev/null +++ b/src/java/templates/en/user_account_confirmed.vm @@ -0,0 +1,10 @@ +Hello $contactPersonalTitle $contactFirstName $contactFamilyName, + +You have just ($userUpdated) confirmed your account. Thank you. + +You can now login with your username $userName and password into the member area. + +Best regards + +Contact us: +$baseUrl/imprint.xhtml diff --git a/src/java/templates/en/user_account_confirmed_1.vm b/src/java/templates/en/user_account_confirmed_1.vm new file mode 100644 index 0000000..b19185f --- /dev/null +++ b/src/java/templates/en/user_account_confirmed_1.vm @@ -0,0 +1,10 @@ +Hello $contactPersonalTitle $contactFirstName $contactFamilyName, + +You have just ($userUpdated) confirmed your account. Thank you. + +You can now login with your username $userName and password into the member area. + +Best regards + +Contact us: +$baseUrl/imprint.xhtml diff --git a/src/java/templates/en/user_password_change.vm b/src/java/templates/en/user_password_change.vm new file mode 100644 index 0000000..07c1ec2 --- /dev/null +++ b/src/java/templates/en/user_password_change.vm @@ -0,0 +1,13 @@ +Hello $contactPersonalTitle $contactFirstName $contactFamilyName, + +You have just changed your password. Your old password is no longer valid. For security reasons your new password is not included in this email. + +----------------------------------- +Your user name: $userName +User id: $userId +----------------------------------- + +Best regards + +Contact us: +$baseUrl/imprint.xhtml diff --git a/src/java/templates/en/user_password_change_1.vm b/src/java/templates/en/user_password_change_1.vm new file mode 100644 index 0000000..07c1ec2 --- /dev/null +++ b/src/java/templates/en/user_password_change_1.vm @@ -0,0 +1,13 @@ +Hello $contactPersonalTitle $contactFirstName $contactFamilyName, + +You have just changed your password. Your old password is no longer valid. For security reasons your new password is not included in this email. + +----------------------------------- +Your user name: $userName +User id: $userId +----------------------------------- + +Best regards + +Contact us: +$baseUrl/imprint.xhtml diff --git a/src/java/templates/en/user_registration.vm b/src/java/templates/en/user_registration.vm new file mode 100644 index 0000000..f38cffe --- /dev/null +++ b/src/java/templates/en/user_registration.vm @@ -0,0 +1,53 @@ +Hello $contactPersonalTitle $contactFirstName $contactFamilyName, + +You have just ($userCreated) registered. If this wasn't you, please contact us immediately. + +Here is your data: +--------------------- +User id: +$userId +--------------------- +User name: +$userName +--------------------- +Personal title: +$contactPersonalTitle +--------------------- +Academical title: +$contactTitle +--------------------- +First name: +$contactFirstName +--------------------- +Family name: +$contactFamilyName +--------------------- +Street + house number: +$contactStreet $contactHouseNumber +--------------------- +ZIP code + city: +$contactZipCode $contactCity +--------------------- +Date of birth: +$contactBirthday +--------------------- +Email address: +$contactEmailAddress +--------------------- + +If you want to register, you have confirm your account. Please click on following link or copy it into your browser: + +- - - - - - - - - - - - - - - - - - - - - +$baseUrl/guest/user/user_confirm_account.xhtml?confirmKey=$userConfirmKey +- - - - - - - - - - - - - - - - - - - - - + +If the above link is not working, please visit following link and send out a new link: + +- - - - - - - - - - - - - - - - - - - - - +$baseUrl/guest/user/resend_link.xhtml +- - - - - - - - - - - - - - - - - - - - - + +Best regards + +Contact us: +$baseUrl/imprint.xhtml diff --git a/src/java/templates/en/user_registration_1.vm b/src/java/templates/en/user_registration_1.vm new file mode 100644 index 0000000..f38cffe --- /dev/null +++ b/src/java/templates/en/user_registration_1.vm @@ -0,0 +1,53 @@ +Hello $contactPersonalTitle $contactFirstName $contactFamilyName, + +You have just ($userCreated) registered. If this wasn't you, please contact us immediately. + +Here is your data: +--------------------- +User id: +$userId +--------------------- +User name: +$userName +--------------------- +Personal title: +$contactPersonalTitle +--------------------- +Academical title: +$contactTitle +--------------------- +First name: +$contactFirstName +--------------------- +Family name: +$contactFamilyName +--------------------- +Street + house number: +$contactStreet $contactHouseNumber +--------------------- +ZIP code + city: +$contactZipCode $contactCity +--------------------- +Date of birth: +$contactBirthday +--------------------- +Email address: +$contactEmailAddress +--------------------- + +If you want to register, you have confirm your account. Please click on following link or copy it into your browser: + +- - - - - - - - - - - - - - - - - - - - - +$baseUrl/guest/user/user_confirm_account.xhtml?confirmKey=$userConfirmKey +- - - - - - - - - - - - - - - - - - - - - + +If the above link is not working, please visit following link and send out a new link: + +- - - - - - - - - - - - - - - - - - - - - +$baseUrl/guest/user/resend_link.xhtml +- - - - - - - - - - - - - - - - - - - - - + +Best regards + +Contact us: +$baseUrl/imprint.xhtml diff --git a/src/java/templates/en/user_resend_confirmation_link.vm b/src/java/templates/en/user_resend_confirmation_link.vm new file mode 100644 index 0000000..fcc12ec --- /dev/null +++ b/src/java/templates/en/user_resend_confirmation_link.vm @@ -0,0 +1,21 @@ +Hello $contactPersonalTitle $contactFirstName $contactFamilyName, + +you have just ($userUpdated) requested a new confirmation link. Your registration happened on $userCreated . + +Here is your new link: +- - - - - - - - - - - - - - - - - - - - - +$baseUrl/guest/user/user_confirm_account.xhtml?confirmKey=$userConfirmKey +- - - - - - - - - - - - - - - - - - - - - + +If the link is not working, please visit following link and send a new link to this email address.: + +- - - - - - - - - - - - - - - - - - - - - +$baseUrl/guest/user/resend_link.xhtml +- - - - - - - - - - - - - - - - - - - - - + +If you have already tried this and you are stuck here, please contact us. + +Best regards + +Contact us: +$baseUrl/imprint.xhtml diff --git a/src/java/templates/en/user_resend_confirmation_link_1.vm b/src/java/templates/en/user_resend_confirmation_link_1.vm new file mode 100644 index 0000000..fcc12ec --- /dev/null +++ b/src/java/templates/en/user_resend_confirmation_link_1.vm @@ -0,0 +1,21 @@ +Hello $contactPersonalTitle $contactFirstName $contactFamilyName, + +you have just ($userUpdated) requested a new confirmation link. Your registration happened on $userCreated . + +Here is your new link: +- - - - - - - - - - - - - - - - - - - - - +$baseUrl/guest/user/user_confirm_account.xhtml?confirmKey=$userConfirmKey +- - - - - - - - - - - - - - - - - - - - - + +If the link is not working, please visit following link and send a new link to this email address.: + +- - - - - - - - - - - - - - - - - - - - - +$baseUrl/guest/user/resend_link.xhtml +- - - - - - - - - - - - - - - - - - - - - + +If you have already tried this and you are stuck here, please contact us. + +Best regards + +Contact us: +$baseUrl/imprint.xhtml -- 2.39.2