From: Roland Häder Date: Thu, 10 Aug 2017 20:47:54 +0000 (+0200) Subject: Also needs to be moved as jcontact-business-core has changed (good convention). X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=f794ca9fd2dd02df6bf7998f01220964ebbe2bda;p=addressbook-ejb.git Also needs to be moved as jcontact-business-core has changed (good convention). Signed-off-by: Roland Häder --- 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 e5507bc..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 Whether 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/jaddressbook/model/addressbook/AddressbookSessionBean.java b/src/java/org/mxchange/jaddressbook/model/addressbook/AddressbookSessionBean.java new file mode 100644 index 0000000..44bc7e8 --- /dev/null +++ b/src/java/org/mxchange/jaddressbook/model/addressbook/AddressbookSessionBean.java @@ -0,0 +1,264 @@ +/* + * 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.jaddressbook.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.addressbook.model.addressbook.AddressbookSessionBeanRemote; +import org.mxchange.jaddressbook.exceptions.AddressbookNameAlreadyUsedException; +import org.mxchange.jaddressbook.exceptions.AddressbookNotFoundException; +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/jaddressbookshare/model/addressbook/shared/SharedAddressbooksSessionBean.java b/src/java/org/mxchange/jaddressbookshare/model/addressbook/shared/SharedAddressbooksSessionBean.java new file mode 100644 index 0000000..43b1b51 --- /dev/null +++ b/src/java/org/mxchange/jaddressbookshare/model/addressbook/shared/SharedAddressbooksSessionBean.java @@ -0,0 +1,345 @@ +/* + * 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.jaddressbookshare.model.addressbook.shared; + +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.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 Whether 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/jcontactsbusiness/AddressbookAdminBusinessDataSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/AddressbookAdminBusinessDataSessionBean.java deleted file mode 100644 index 9467200..0000000 --- a/src/java/org/mxchange/jcontactsbusiness/AddressbookAdminBusinessDataSessionBean.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 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.jcontactsbusiness; - -import java.text.MessageFormat; -import java.util.List; -import javax.ejb.Stateless; -import javax.persistence.Query; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; - -/** - * An administrative stateless session bean for business data - *

- * @author Roland Häder - */ -@Stateless (name = "adminBusinessData", description = "An administrative statless bean for handling business data (all)") -public class AddressbookAdminBusinessDataSessionBean extends BaseAddressbookDatabaseBean implements BusinessDataAdminSessionBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 56_389_504_892_184_572L; - - /** - * Default constructor - */ - public AddressbookAdminBusinessDataSessionBean () { - // Call super constructor - super(); - } - - @Override - @SuppressWarnings ("unchecked") - public List allBusinessContacts () { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allBusinessContacts: CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Get query - Query query = this.getEntityManager().createNamedQuery("AllBusinessData"); //NOI18N - - // Get list from it - List list = query.getResultList(); - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allBusinessContacts: list.size()={1} - EXIT!", this.getClass().getSimpleName(), list.size())); //NOI18N - - // Return it - return list; - } - -} diff --git a/src/java/org/mxchange/jcontactsbusiness/AddressbookBusinessDataSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/AddressbookBusinessDataSessionBean.java deleted file mode 100644 index 2fb4156..0000000 --- a/src/java/org/mxchange/jcontactsbusiness/AddressbookBusinessDataSessionBean.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (C) 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.jcontactsbusiness; - -import java.text.MessageFormat; -import javax.ejb.Stateless; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; -import org.mxchange.jcontactsbusiness.exceptions.BusinessDataNotFoundException; - -/** - * A stateless session bean for business data - *

- * @author Roland Häder - */ -@Stateless (name = "businessData", description = "A general statless bean for handling business data (all)") -public class AddressbookBusinessDataSessionBean extends BaseAddressbookDatabaseBean implements BusinessDataSessionBeanRemote { - - /** - * Serial number - */ - private static final long serialVersionUID = 56_389_504_892_184_571L; - - /** - * Default constructor - */ - public AddressbookBusinessDataSessionBean () { - // Call super constructor - super(); - } - - @Override - public BusinessBasicData findBusinessDataById (final Long businessDataId) throws BusinessDataNotFoundException { - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findBusinessDataById: CALLED!", this.getClass().getSimpleName())); //NOI18N - - // Get query - Query query = this.getEntityManager().createNamedQuery("SearchBusinessDataById", CompanyBasicData.class); //NOI18N - - // Set parameter - query.setParameter("businessDataId", businessDataId); //NOI18N - - // Get single instance - BusinessBasicData businessData = null; - - // Try to find a result - try { - // Find a single result - businessData = (BusinessBasicData) query.getSingleResult(); - - // Log trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findBusinessDataById: Found contact={1}", this.getClass().getSimpleName(), businessData)); //NOI18N - } catch (final NoResultException ex) { - // No result found - throw new BusinessDataNotFoundException(businessDataId, ex); - } - - // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findBusinessDataById: businessData={1} - EXIT!", this.getClass().getSimpleName(), businessData)); //NOI18N - - // Return it - return businessData; - } - -} diff --git a/src/java/org/mxchange/jcontactsbusiness/basicdata/AddressbookAdminBusinessDataSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/basicdata/AddressbookAdminBusinessDataSessionBean.java new file mode 100644 index 0000000..9e37bb5 --- /dev/null +++ b/src/java/org/mxchange/jcontactsbusiness/basicdata/AddressbookAdminBusinessDataSessionBean.java @@ -0,0 +1,65 @@ +/* + * Copyright (C) 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.jcontactsbusiness.basicdata; + +import java.text.MessageFormat; +import java.util.List; +import javax.ejb.Stateless; +import javax.persistence.Query; +import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; + +/** + * An administrative stateless session bean for business data + *

+ * @author Roland Häder + */ +@Stateless (name = "adminBusinessData", description = "An administrative statless bean for handling business data (all)") +public class AddressbookAdminBusinessDataSessionBean extends BaseAddressbookDatabaseBean implements BusinessDataAdminSessionBeanRemote { + + /** + * Serial number + */ + private static final long serialVersionUID = 56_389_504_892_184_572L; + + /** + * Default constructor + */ + public AddressbookAdminBusinessDataSessionBean () { + // Call super constructor + super(); + } + + @Override + @SuppressWarnings ("unchecked") + public List allBusinessContacts () { + // Trace message + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allBusinessContacts: CALLED!", this.getClass().getSimpleName())); //NOI18N + + // Get query + Query query = this.getEntityManager().createNamedQuery("AllBusinessData"); //NOI18N + + // Get list from it + List list = query.getResultList(); + + // Trace message + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.allBusinessContacts: list.size()={1} - EXIT!", this.getClass().getSimpleName(), list.size())); //NOI18N + + // Return it + return list; + } + +} diff --git a/src/java/org/mxchange/jcontactsbusiness/basicdata/AddressbookBusinessDataSessionBean.java b/src/java/org/mxchange/jcontactsbusiness/basicdata/AddressbookBusinessDataSessionBean.java new file mode 100644 index 0000000..2b76263 --- /dev/null +++ b/src/java/org/mxchange/jcontactsbusiness/basicdata/AddressbookBusinessDataSessionBean.java @@ -0,0 +1,80 @@ +/* + * Copyright (C) 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.jcontactsbusiness.basicdata; + +import java.text.MessageFormat; +import javax.ejb.Stateless; +import javax.persistence.NoResultException; +import javax.persistence.Query; +import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean; +import org.mxchange.jcontactsbusiness.exceptions.BusinessDataNotFoundException; + +/** + * A stateless session bean for business data + *

+ * @author Roland Häder + */ +@Stateless (name = "businessData", description = "A general statless bean for handling business data (all)") +public class AddressbookBusinessDataSessionBean extends BaseAddressbookDatabaseBean implements BusinessDataSessionBeanRemote { + + /** + * Serial number + */ + private static final long serialVersionUID = 56_389_504_892_184_571L; + + /** + * Default constructor + */ + public AddressbookBusinessDataSessionBean () { + // Call super constructor + super(); + } + + @Override + public BusinessBasicData findBusinessDataById (final Long businessDataId) throws BusinessDataNotFoundException { + // Trace message + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findBusinessDataById: CALLED!", this.getClass().getSimpleName())); //NOI18N + + // Get query + Query query = this.getEntityManager().createNamedQuery("SearchBusinessDataById", CompanyBasicData.class); //NOI18N + + // Set parameter + query.setParameter("businessDataId", businessDataId); //NOI18N + + // Get single instance + BusinessBasicData businessData = null; + + // Try to find a result + try { + // Find a single result + businessData = (BusinessBasicData) query.getSingleResult(); + + // Log trace message + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findBusinessDataById: Found contact={1}", this.getClass().getSimpleName(), businessData)); //NOI18N + } catch (final NoResultException ex) { + // No result found + throw new BusinessDataNotFoundException(businessDataId, ex); + } + + // Trace message + this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.findBusinessDataById: businessData={1} - EXIT!", this.getClass().getSimpleName(), businessData)); //NOI18N + + // Return it + return businessData; + } + +}