2 * Copyright (C) 2016 Roland Haeder
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Affero General Public License as
6 * published by the Free Software Foundation, either version 3 of the
7 * License, or (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 Affero General Public License for more details.
14 * You should have received a copy of the GNU Affero General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 package org.mxchange.pizzaapplication.model.customer;
19 import java.text.MessageFormat;
20 import java.util.List;
21 import javax.ejb.Stateless;
22 import javax.persistence.NoResultException;
23 import javax.persistence.Query;
24 import org.mxchange.jcustomercore.model.customer.Customer;
25 import org.mxchange.jcustomercore.utils.CustomerUtils;
26 import org.mxchange.pizzaaplication.database.BasePizzaDatabaseBean;
29 * A stateless administrative customer session bean (EJB)
31 * @author Roland Haeder<roland@mxchange.org>
33 @Stateless (name = "admincustomer", description = "Administrative bean handling customer data")
34 public class PizzaAdminCustomerSessionBean extends BasePizzaDatabaseBean implements PizzaAdminCustomerSessionBeanRemote {
39 private static final long serialVersionUID = 19_845_893_648_175_427L;
42 @SuppressWarnings ("unchecked")
43 public List<Customer> allCustomers () {
45 this.getLoggerBeanLocal().logTrace("allCustomers: CALLED!"); //NOI18N
48 Query query = this.getEntityManager().createNamedQuery("AllCustomers", List.class); //NOI18N
51 List<Customer> customers = query.getResultList();
54 this.getLoggerBeanLocal().logTrace(MessageFormat.format("allCustomers: customers.size()={0} - EXIT!", customers.size())); //NOI18N
61 public String createCustomerNumber () {
63 Query query = this.getEntityManager().createNamedQuery("SearchCustomerByNumber", Customer.class); //NOI18N
65 // Default is not found
66 String customerNumber = null;
68 // Search until a free number was found
69 while (null == customerNumber) {
71 String cn = CustomerUtils.generateCustomerNumber(PizzaAdminCustomerSessionBeanRemote.CUSTOMER_NUMBER_LENGTH, PizzaAdminCustomerSessionBeanRemote.CUSTOMER_NUMBER_BLOCK_SIZE, PizzaAdminCustomerSessionBeanRemote.CUSTOMER_NUMBER_SEPARATOR);
73 // Set the generated number as param
74 query.setParameter("customerNumber", cn); //NOI18N
78 // Get a single result
79 Customer customer = (Customer) query.getSingleResult();
80 } catch (final NoResultException ex) {
86 // Return generated number
87 return customerNumber;