package org.mxchange.addressbook.model.addressbook;
import java.text.MessageFormat;
-import java.util.ArrayList;
import java.util.GregorianCalendar;
-import java.util.LinkedList;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.NoResultException;
import javax.persistence.Query;
-import org.mxchange.jaddressbookcore.exceptions.AddressbookNameAlreadyUsedException;
-import org.mxchange.jaddressbookcore.exceptions.AddressbookNotFoundException;
-import org.mxchange.jaddressbookcore.model.addressbook.Addressbook;
-import org.mxchange.jaddressbookcore.model.addressbook.UserAddressbook;
-import org.mxchange.jaddressbookcore.model.addressbook.entry.AddressbookEntry;
-import org.mxchange.jaddressbookcore.model.addressbook.shared.ShareableAddressbook;
+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.jcoreee.database.BaseDatabaseBean;
import org.mxchange.jusercore.model.user.User;
return query.getResultList();
}
- @Override
- @SuppressWarnings ("unchecked")
- public List<User> 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<User> 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<ShareableAddressbook> allShares = allSharesQuery.getResultList();
-
- // Debug message
- this.getLoggerBeanLocal().logDebug(MessageFormat.format("allUsersNotSharing: allShares.size()={0}", allShares.size())); //NOI18N
-
- // List for users aharing with given
- List<User> 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<User> 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<ShareableAddressbook> 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 Addressbook createAddressbook (final Addressbook addressbook) throws AddressbookNameAlreadyUsedException {
// Is it not null?