import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
-import org.mxchange.jcore.model.contact.gender.Gender;
-import org.mxchange.jcoreee.beans.BaseFrameworkBean;
import org.mxchange.jshopcore.model.basket.AddableBasketItem;
import org.mxchange.jshopcore.model.customer.Customer;
-import org.mxchange.jshopcore.model.customer.ShopCustomer;
import org.mxchange.jshopcore.wrapper.CheckoutWrapper;
import org.mxchange.jshopcore.wrapper.WrapableCheckout;
import org.mxchange.pizzaapplication.beans.basket.BasketWebController;
+import org.mxchange.pizzaapplication.beans.customer.CustomerWebController;
+import org.mxchange.pizzaapplication.beans.receipt.ReceiptWebController;
/**
* Checkout controller
*/
@Named ("checkoutController")
@SessionScoped
-public class CheckoutWebBean extends BaseFrameworkBean implements CheckoutWebController {
+public class CheckoutWebBean implements CheckoutWebController {
/**
* Serial number
* Queue instance
*/
private Queue queue;
-
+
/**
* Session instance
*/
*/
private ObjectMessage message;
+ /**
+ * Customer instance
+ */
+ private Customer customer;
+
////////////////////// Bean injections ///////////////////////
/**
* Basket bean
@Inject
private BasketWebController basketController;
- /////////////////////// Properties /////////////////////
- /**
- * Gender
- */
- private Gender gender;
-
- /**
- * First name
- */
- private String firstName;
-
- /**
- * Family name
- */
- private String familyName;
-
- /**
- * Company name
- */
- private String companyName;
-
- /**
- * Street
- */
- private String street;
-
- /**
- * House number
- */
- private Long houseNumber;
-
- /**
- * ZIP code
- */
- private Long zipCode;
-
- /**
- * City
- */
- private String city;
-
/**
- * Phone number
+ * Customer bean
*/
- private String phoneNumber;
-
- /**
- * Fax number
- */
- private String faxNumber;
+ @Inject
+ private CustomerWebController customerController;
/**
- * Cellphone number
+ * Receipt bean
*/
- private String cellphoneNumber;
+ @Inject
+ private ReceiptWebController receiptController;
@Override
public String doCheckout () {
- // Is the bean set?
- if (this.basketController != null) {
+ // Trace message
+ //this.getLogger().logTrace("doCheckout: CALLED!");
+
+ // Are the beans set?
+ if (null == this.basketController) {
// Abort here
throw new NullPointerException("basketController is null"); //NOI18N
+ } else if (null == this.customerController) {
+ // Abort here
+ throw new NullPointerException("customer is null"); //NOI18N
}
// Are at least the required fields set?
- if (!this.isRequiredPersonalDataSet()) {
+ if (!this.customerController.isRequiredPersonalDataSet()) {
+ // Trace message
+ //this.getLogger().logTrace("doCheckout: Not all required fields are set, returning checkout2 ... - EXIT!");
+
// Not set, should not happen
return "checkout2"; //NOI18N
} else if (this.basketController.isEmpty()) {
+ // Trace message
+ //this.getLogger().logTrace("doCheckout: basket is empty, returning empty_basket ... - EXIT!");
+
// Nothing to order
return "empty_basket"; //NOI18N
}
// Create customer instance
- Customer customer = this.createCustomer();
+ this.setCustomer(this.customerController.createCustomerInstance());
+
+ // Debug message
+ //this.getLogger().logDebug(MessageFormat.format("doCheckout: customer={0}", this.getCustomer()));
// Get ordered list
List<AddableBasketItem> list = this.basketController.allItems();
+ // Debug message
+ //this.getLogger().logTrace(MessageFormat.format("doCheckout: list={0}", list));
+
// Construct container
WrapableCheckout wrapper = new CheckoutWrapper();
- wrapper.setCustomer(customer);
+ wrapper.setCustomer(this.getCustomer());
wrapper.setList(list);
try {
// Clear basket
this.basketController.clear();
+ // Set customer in receipt controller for verification
+ this.receiptController.setCustomer(this.getCustomer());
+
// All fine
return "checkout_done"; //NOI18N
}
@Override
- public String getCellphoneNumber () {
- return this.cellphoneNumber;
- }
-
- @Override
- public void setCellphoneNumber (final String cellphoneNumber) {
- this.cellphoneNumber = cellphoneNumber;
- }
-
- @Override
- public String getCity () {
- return this.city;
- }
-
- @Override
- public void setCity (final String city) {
- this.city = city;
- }
-
- @Override
- public String getCompanyName () {
- return this.companyName;
- }
-
- @Override
- public void setCompanyName (final String companyName) {
- this.companyName = companyName;
+ public Customer getCustomer () {
+ return this.customer;
}
@Override
- public String getFamilyName () {
- return this.familyName;
- }
-
- @Override
- public void setFamilyName (final String familyName) {
- this.familyName = familyName;
- }
-
- @Override
- public String getFaxNumber () {
- return this.faxNumber;
- }
-
- @Override
- public void setFaxNumber (final String faxNumber) {
- this.faxNumber = faxNumber;
- }
-
- @Override
- public String getFirstName () {
- return this.firstName;
- }
-
- @Override
- public void setFirstName (final String firstName) {
- this.firstName = firstName;
- }
-
- @Override
- public Gender getGender () {
- return this.gender;
- }
-
- @Override
- public void setGender (final Gender gender) {
- this.gender = gender;
- }
-
- @Override
- public Long getHouseNumber () {
- return this.houseNumber;
- }
-
- @Override
- public void setHouseNumber (final Long houseNumber) {
- this.houseNumber = houseNumber;
- }
-
- @Override
- public String getPhoneNumber () {
- return this.phoneNumber;
- }
-
- @Override
- public void setPhoneNumber (final String phoneNumber) {
- this.phoneNumber = phoneNumber;
- }
-
- @Override
- public String getStreet () {
- return this.street;
- }
-
- @Override
- public void setStreet (final String street) {
- this.street = street;
- }
-
- @Override
- public Long getZipCode () {
- return this.zipCode;
- }
-
- @Override
- public void setZipCode (final Long zipCode) {
- this.zipCode = zipCode;
+ public void setCustomer (final Customer customer) {
+ this.customer = customer;
}
@PostConstruct
public void init () {
- // Call super init for getting resource bundle
- super.genericInit();
-
try {
// Get initial context
Context context = new InitialContext();
// And message producer
this.messageProducer = session.createProducer(queue);
+
+ // Finally the message instance itself
+ this.message = this.session.createObjectMessage();
} catch (final NamingException | JMSException e) {
// Continued to throw
throw new FacesException(e);
throw new FacesException(ex);
}
}
-
- /**
- * Creates a full customer instance
- *
- * @return Customer instance
- */
- private Customer createCustomer () {
- // Required personal data must be set
- assert (this.isRequiredPersonalDataSet()) : "not all personal data is set"; //NOI18N
-
- // Create new customer instance
- Customer customer = new ShopCustomer();
- customer.setGender(this.getGender());
- customer.setFirstName(this.getFirstName());
- customer.setFamilyName(this.getFamilyName());
- customer.setCompanyName(this.getCompanyName());
- customer.setStreet(this.getStreet());
- customer.setHouseNumber(this.getHouseNumber());
- customer.setZipCode(this.getZipCode());
- customer.setCity(this.getCity());
- customer.setPhoneNumber(this.getPhoneNumber());
- customer.setFaxNumber(this.getFaxNumber());
- customer.setCellphoneNumber(this.getCellphoneNumber());
-
- // Return it
- return customer;
- }
-
- /**
- * Checks if the required personal data is set
- *
- * @return Whether the required personal data is set
- */
- private boolean isRequiredPersonalDataSet () {
- return ((this.getGender() != null) && (this.getFirstName() != null) && (this.getFamilyName() != null) && (this.getStreet() != null) && (this.getHouseNumber() != null) && (this.getZipCode() != null) && (this.getCity() != null));
- }
}