2 * Copyright (C) 2015 Roland Haeder
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 package org.mxchange.addressbook.model.addressbook;
19 import java.util.List;
21 import javax.ejb.Stateless;
22 import javax.persistence.Query;
23 import org.mxchange.addressbook.exceptions.AddressbookNameAlreadyUsedException;
24 import org.mxchange.jcoreee.database.BaseDatabaseBean;
25 import org.mxchange.jusercore.model.login.UserLoginSessionBeanRemote;
26 import org.mxchange.jusercore.model.user.User;
29 * A stateless bean handling addressbooks
31 * @author Roland Haeder
33 @Stateless(name = "addressbook", mappedName = "ejb/stateless-addressbook", description = "A stateless bean for handling addressbooks")
34 public class AddressbookSessionBean extends BaseDatabaseBean implements AddressbookSessionBeanRemote {
39 private static final long serialVersionUID = 129_857_871_287_691L;
44 @EJB(mappedName = "ejb/stateless-login")
45 private UserLoginSessionBeanRemote loginBean;
48 @SuppressWarnings("unchecked")
49 public List<Addressbook> getUsersList(final User loggedInUser) {
51 Query query = this.getEntityManager().createNamedQuery("AllUsersAddressbooks"); //NOI18N
54 query.setParameter("param", loggedInUser); //NOI18N
56 // Get full list from JPA
57 List<Addressbook> addressbooks = query.getResultList();
64 public Addressbook createAddressbook(final Addressbook addressbook) throws AddressbookNameAlreadyUsedException {
66 if (null == addressbook) {
68 throw new NullPointerException("addressbook is null");
69 } else if (addressbook.getAddressbookUser() == null) {
70 // User instance is null
71 throw new IllegalArgumentException("addressbook.user should not be null.");
72 } else if (addressbook.getAddressbookName() == null) {
73 // Address book name not set
74 throw new IllegalArgumentException("addressbook.addressbookName should not be null");
75 } else if (addressbook.getAddressbookName().isEmpty()) {
76 // Address book name not set
77 throw new IllegalArgumentException("addressbook.addressbookName should not be empty");
78 } else if (this.isAddressbookNameUsed(addressbook)) {
79 // The assigned user already used that name
80 throw new AddressbookNameAlreadyUsedException(addressbook);
84 this.getEntityManager().persist(addressbook);
86 // Flush it to get all data
87 this.getEntityManager().flush();
94 public boolean isAddressbookNameUsed(final Addressbook addressbook) {
95 throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.