X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjava%2Forg%2Fmxchange%2Fpizzaapplication%2Fbeans%2Fcustomer%2FPizzaAdminCustomerWebRequestBean.java;h=0c16549d1112d5ec0009c8fb8dc74a4784c2548f;hb=e3e16631dafe1f66f9225208dd375e4c1e365818;hp=7c9bbd62b4c1d20268e4e6b142d807e9aeaf0f09;hpb=9641a385a1ebefa3c8627dd61f6b2696adc9a97e;p=pizzaservice-war.git diff --git a/src/java/org/mxchange/pizzaapplication/beans/customer/PizzaAdminCustomerWebRequestBean.java b/src/java/org/mxchange/pizzaapplication/beans/customer/PizzaAdminCustomerWebRequestBean.java index 7c9bbd62..0c16549d 100644 --- a/src/java/org/mxchange/pizzaapplication/beans/customer/PizzaAdminCustomerWebRequestBean.java +++ b/src/java/org/mxchange/pizzaapplication/beans/customer/PizzaAdminCustomerWebRequestBean.java @@ -16,6 +16,7 @@ */ package org.mxchange.pizzaapplication.beans.customer; +import java.text.MessageFormat; import javax.annotation.PostConstruct; import javax.enterprise.context.RequestScoped; import javax.enterprise.event.Event; @@ -29,13 +30,16 @@ import javax.naming.NamingException; import org.mxchange.jcontacts.contact.Contact; import org.mxchange.jcontacts.contact.gender.Gender; import org.mxchange.jcontacts.exceptions.ContactAlreadyAddedException; -import org.mxchange.jcustomercore.events.AdminAddedCustomerEvent; -import org.mxchange.jcustomercore.events.CustomerAdminAddedEvent; +import org.mxchange.jcustomercore.events.customer.added.AdminAddedCustomerEvent; +import org.mxchange.jcustomercore.events.customer.added.CustomerAdminAddedEvent; import org.mxchange.jcustomercore.exceptions.CustomerAlreadyRegisteredException; import org.mxchange.jcustomercore.model.customer.Customer; import org.mxchange.jcustomercore.model.customer.status.CustomerAccountStatus; +import org.mxchange.pizzaapplication.beans.BasePizzaController; import org.mxchange.pizzaapplication.beans.contact.PizzaAdminContactWebRequestController; import org.mxchange.pizzaapplication.model.customer.PizzaAdminCustomerSessionBeanRemote; +import org.mxchange.pizzaapplication.model.customer.PizzaCustomer; +import org.mxchange.pizzaapplication.beans.helper.PizzaWebRequestController; /** * Administrative customer bean (controller) @@ -44,7 +48,7 @@ import org.mxchange.pizzaapplication.model.customer.PizzaAdminCustomerSessionBea */ @Named ("adminCustomerController") @RequestScoped -public class PizzaAdminCustomerWebRequestBean implements PizzaAdminCustomerWebRequestController { +public class PizzaAdminCustomerWebRequestBean extends BasePizzaController implements PizzaAdminCustomerWebRequestController { /** * Serial number @@ -62,6 +66,12 @@ public class PizzaAdminCustomerWebRequestBean implements PizzaAdminCustomerWebRe */ private PizzaAdminCustomerSessionBeanRemote adminCustomerBean; + /** + * Admin helper instance + */ + @Inject + private PizzaWebRequestController adminHelper; + /** * An event being fired when an administrator has added a new customer */ @@ -85,7 +95,7 @@ public class PizzaAdminCustomerWebRequestBean implements PizzaAdminCustomerWebRe Context context = new InitialContext(); // Try to lookup - this.adminCustomerBean = (PizzaAdminCustomerSessionBeanRemote) context.lookup("java:global/PizzaService-ejb/admincustomer!org.mxchange.pizzaapplication.model.customer.PizzaAdminCustomerSessionBeanRemote"); //NOI18N + this.adminCustomerBean = (PizzaAdminCustomerSessionBeanRemote) context.lookup("java:global/pizzaservice-ejb/admincustomer!org.mxchange.pizzaapplication.model.customer.PizzaAdminCustomerSessionBeanRemote"); //NOI18N } catch (final NamingException e) { // Throw again throw new FaceletException(e); @@ -95,13 +105,22 @@ public class PizzaAdminCustomerWebRequestBean implements PizzaAdminCustomerWebRe @Override public String addCustomer () { // Are at least some fields added? - if (!this.isCustomerDataSet()) { + if ((this.adminHelper.getContact() == null) && (!this.isCustomerDataSet())) { // Not all customer data is set throw new FaceletException("Please provide minimum personal data: gender, first_name, family_name"); //NOI18N } - // Get contact instance - Contact contact = this.adminContactController.createContactInstance(); + // Init contact + Contact contact; + + // Is the contact set in helper? + if (this.adminHelper.getContact() instanceof Contact) { + // Get from helper + contact = this.adminHelper.getContact(); + } else { + // Get new contact instance + contact = this.adminContactController.createContactInstance(); + } // Ask the EJB for a free customer number String customerNumber = this.adminCustomerBean.createCustomerNumber(); @@ -113,16 +132,22 @@ public class PizzaAdminCustomerWebRequestBean implements PizzaAdminCustomerWebRe Customer updatedCustomer; try { - // Add customer and return updated - updatedCustomer = this.adminCustomerBean.addCustomer(customer); + // Add/link customer and return updated + if (this.adminHelper.getContact() instanceof Contact) { + // Link customer + updatedCustomer = this.adminCustomerBean.linkCustomer(customer); + + // Remove contact instance + this.adminHelper.setContact(null); + } else { + // Add new customer instance + updatedCustomer = this.adminCustomerBean.addCustomer(customer); + } } catch (final CustomerAlreadyRegisteredException | ContactAlreadyAddedException ex) { // Throw again throw new FaceletException(ex); } - // Add customer to list - this.customerController.addCustomer(updatedCustomer); - // Fire event this.customerAddedEvent.fire(new CustomerAdminAddedEvent(updatedCustomer)); @@ -130,6 +155,32 @@ public class PizzaAdminCustomerWebRequestBean implements PizzaAdminCustomerWebRe return "admin_list_customer"; //NOI18N } + @Override + public void copyCustomerToController (final Customer customer) { + // Parameters must be valid + if (null == customer) { + // Throw NPE + throw new NullPointerException("customer is null"); //NOI18N + } else if (customer.getCustomerId() == null) { + // Throw again ... + throw new NullPointerException("customer.customerId is null"); //NOI18N + } else if (customer.getCustomerId() < 1) { + // Invalid id number + throw new IllegalArgumentException(MessageFormat.format("customer.customerId={0} is not valid", customer.getCustomerId())); //NOI18N + } else if (customer.getCustomerContact() == null) { + // Throw NPE again + throw new NullPointerException("customer.customerContact is null"); //NOI18N + } else if (customer.getCustomerContact().getContactId() == null) { + // .. and again + throw new NullPointerException("customer.customerContact.contactId is null"); //NOI18N + } else if (customer.getCustomerContact().getContactId() < 1) { + // Invalid id + throw new IllegalArgumentException(MessageFormat.format("customer.customerContact.contactId={0} is not valid", customer.getCustomerContact().getContactId())); //NOI18N + } + + // @TODO Set all data + } + /** * Post-initialization of this class */