import java.util.Collections;
import java.util.GregorianCalendar;
import java.util.List;
+import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import javax.annotation.PostConstruct;
import org.mxchange.addressbook.model.addressbook.AddressbookSessionBeanRemote;
import org.mxchange.addressbook.model.addressbook.UserAddressbook;
import org.mxchange.addressbook.model.addressbook.entry.AddressbookEntry;
-import org.mxchange.addressbook.model.addressbook.shared.ShareableAddressbook;
import org.mxchange.addressbook.model.addressbook.status.AddressbokStatus;
import org.mxchange.jusercore.events.login.UserLoggedInEvent;
import org.mxchange.jusercore.model.user.User;
@SessionScoped
public class AddressbookWebBean implements AddressbookWebController {
+ /**
+ * Map for count of user's shared addresses
+ */
+ private static ConcurrentMap<User, Integer> countSharesList;
+
/**
* Serial number
*/
private static final long serialVersionUID = 185_781_756_712_969L;
+ /**
+ * Address book instance
+ */
+ private Addressbook addressbook;
+
/**
* Remote address book bean
*/
*/
private User addressbookUser;
- /**
- * Map for count of user's shared addresses
- */
- private static ConcurrentMap<User, Integer> countSharesList;
-
/**
* Login controller
*/
@Inject
private UserLoginWebController loginController;
- /**
- * A list of all user's shared (with others) address books
- */
- private List<ShareableAddressbook> sharedAddressbooks;
-
/**
* A list of all user's address books
*/
}
// Create address book instance with name
- Addressbook addressbook = new UserAddressbook(this.getAddressbookName());
+ Addressbook book = new UserAddressbook(this.getAddressbookName());
// Set default status to UNLOCKED and owner
- addressbook.setAddressbookStatus(AddressbokStatus.UNLOCKED);
- addressbook.setAddressbookUser(this.loginController.getLoggedInUser());
- addressbook.setAddressbookCreated(new GregorianCalendar());
+ book.setAddressbookStatus(AddressbokStatus.UNLOCKED);
+ book.setAddressbookUser(this.loginController.getLoggedInUser());
+ book.setAddressbookCreated(new GregorianCalendar());
try {
// Register this address book
- Addressbook updatedAddressbook = this.addressbookBean.createAddressbook(addressbook);
+ Addressbook updatedAddressbook = this.addressbookBean.createAddressbook(book);
// Remove name
this.setAddressbookName(null);
// event should not be null
if (null == event) {
// Throw NPE
- throw new NullPointerException("event is null");
+ throw new NullPointerException("event is null"); //NOI18N
} else if (event.getAddressbook() == null) {
// Throw NPE again
- throw new NullPointerException("event.addressbook is null");
+ throw new NullPointerException("event.addressbook is null"); //NOI18N
} else if (event.getAddressbook().getAddressbookId() == null) {
// And again a NPE
- throw new NullPointerException("event.addressbook.addressbookId is null");
+ throw new NullPointerException("event.addressbook.addressbookId is null"); //NOI18N
} else if (event.getAddressbook().getAddressbookId() < 1) {
// Invalid id number
- throw new IllegalArgumentException("Address book instance " + event.getAddressbook() + " has invalid id number: " + event.getAddressbook().getAddressbookId());
+ throw new IllegalArgumentException(MessageFormat.format("Address book instance {0} has invalid id number: {1}", event.getAddressbook(), event.getAddressbook().getAddressbookId())); //NOI18N
} else if (event.getAddressbook().getAddressbookUser() == null) {
// One more NPE ...
- throw new NullPointerException("event.addressbook.addressbookUser is null");
+ throw new NullPointerException("event.addressbook.addressbookUser is null"); //NOI18N
}
// Get address book instance
- Addressbook addressbook = event.getAddressbook();
+ Addressbook book = event.getAddressbook();
// Set address book data
- this.setAddressbookId(addressbook.getAddressbookId());
- this.setAddressbookName(addressbook.getAddressbookName());
- this.setAddressbookUser(addressbook.getAddressbookUser());
- this.setAddressbookCreated(addressbook.getAddressbookCreated());
+ this.setAddressbookId(book.getAddressbookId());
+ this.setAddressbookName(book.getAddressbookName());
+ this.setAddressbookUser(book.getAddressbookUser());
+ this.setAddressbookCreated(book.getAddressbookCreated());
+
+ // And instance ...
+ this.setAddressbook(book);
+ }
+
+ @Override
+ public void afterLoginEvent (final @Observes UserLoggedInEvent event) {
+ // Is the user logged in?
+ if (null == event) {
+ // Is null
+ throw new NullPointerException("event is null"); //NOI18N
+ } else if (event.getUser() == null) {
+ // user is null
+ throw new NullPointerException("event.user is null"); //NOI18N
+ } else if (!event.getUser().equals(this.loginController.getLoggedInUser())) {
+ // Not matching
+ throw new IllegalStateException("event.user and loginController.loggedInUser don't match."); //NOI18N
+ } else if (!this.loginController.isUserLoggedIn()) {
+ // Not logged in
+ throw new FaceletException("This method can only be called as logged-in user."); //NOI18N
+ }
+
+ // Init user's address book list
+ this.initAddressbookList();
}
@Override
}
@Override
- public List<ShareableAddressbook> allShares () {
+ public List<User> allUsersNotSharing () {
// Is the user logged in?
if (!this.loginController.isUserLoggedIn()) {
// Not logged in
throw new FaceletException("This method can only be called as logged-in user."); //NOI18N
}
- return Collections.unmodifiableList(this.sharedAddressbooks);
+ // Call EJB
+ return this.addressbookBean.allUsersNotSharing(this.loginController.getLoggedInUser(), this.getAddressbook());
}
@Override
return count;
}
+ @Override
+ public Addressbook getAddressbook () {
+ return this.addressbook;
+ }
+
+ @Override
+ public void setAddressbook (final Addressbook addressbook) {
+ this.addressbook = addressbook;
+ }
+
@Override
public Calendar getAddressbookCreated () {
return this.addressbookCreated;
boolean isFound = false;
// Check all entries
- for (final Addressbook addressbook : this.usersAddressbooks) {
+ for (final Addressbook book : this.usersAddressbooks) {
// Is the name same?
- if (addressbook.getAddressbookName().equals(addressbookName)) {
+ if (book.getAddressbookName().equals(addressbookName)) {
// Found a match
isFound = true;
break;
}
@Override
- public void afterLoginEvent (final @Observes UserLoggedInEvent event) {
+ public boolean isOtherAddressbook () {
+ // Just call the other method and invert it
+ return (!this.isOwnAddressbook());
+ }
+
+ @Override
+ public boolean isOwnAddressbook () {
// Is the user logged in?
- if (null == event) {
- // Is null
- throw new NullPointerException("event is null");
- } else if (event.getUser() == null) {
- // user is null
- throw new NullPointerException("event.user is null");
- } else if (!event.getUser().equals(this.loginController.getLoggedInUser())) {
- // Not matching
- throw new IllegalStateException("event.user and loginController.loggedInUser don't match.");
- } else if (!this.loginController.isUserLoggedIn()) {
- // Not logged in
- throw new FaceletException("This method can only be called as logged-in user."); //NOI18N
+ if (!this.loginController.isUserLoggedIn()) {
+ // No, then no own address book
+ return false;
}
- // Init user's address book list
- this.initAddressbookList();
+ // Is same user?
+ return Objects.equals(this.getAddressbookUser(), this.loginController.getLoggedInUser());
}
/**
* Initializes the user user's address book list
*/
private void initAddressbookList () {
+ // Get user instance
+ User user = this.loginController.getLoggedInUser();
+
// Fill list with entries
- this.usersAddressbooks = this.addressbookBean.getUsersList(this.loginController.getLoggedInUser());
+ this.usersAddressbooks = this.addressbookBean.getUsersAddressbookList(user);
}
}