]> git.mxchange.org Git - pizzaservice-ejb.git/blobdiff - src/java/org/mxchange/jcontactsbusiness/model/basicdata/PizzaAdminBusinessDataSessionBean.java
Please cherry-pick:
[pizzaservice-ejb.git] / src / java / org / mxchange / jcontactsbusiness / model / basicdata / PizzaAdminBusinessDataSessionBean.java
index e73eff398876995abf66a892ee6960da422c3465..9139d7a9802e889ee9c3ebf3bf1a5e83833d2f64 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 Roland Häder
+ * Copyright (C) 2017, 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
 package org.mxchange.jcontactsbusiness.model.basicdata;
 
 import java.text.MessageFormat;
-import java.util.GregorianCalendar;
+import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 import javax.ejb.EJB;
 import javax.ejb.Stateless;
-import org.mxchange.jcontactsbusiness.basicdata.AdminBusinessDataSessionBeanRemote;
-import org.mxchange.jcontactsbusiness.basicdata.BusinessDataSessionBeanRemote;
-import org.mxchange.jcontactsbusiness.exceptions.basicdata.BusinessDataAlreadyAddedException;
-import org.mxchange.jcontactsbusiness.model.employee.Employee;
+import org.mxchange.jcontactsbusiness.exceptions.basicdata.BasicDataAlreadyAddedException;
+import org.mxchange.jcontactsbusiness.model.employee.Employable;
+import org.mxchange.jcontactsbusiness.model.headquarter.Headquarter;
 import org.mxchange.jusercore.model.user.User;
-import org.mxchange.pizzaaplication.database.BasePizzaDatabaseBean;
+import org.mxchange.pizzaaplication.enterprise.BasePizzaEnterpriseBean;
 
 /**
  * An administrative stateless session bean for business data
  * <p>
  * @author Roland Häder<roland@mxchange.org>
  */
-@Stateless (name = "adminBusinessData", description = "An administrative statless bean for handling business data (all)")
-public class PizzaAdminBusinessDataSessionBean extends BasePizzaDatabaseBean implements AdminBusinessDataSessionBeanRemote {
+@Stateless (name = "adminBasicCompanyData", description = "An administrative statless bean for handling business data (all)")
+public class PizzaAdminBusinessDataSessionBean extends BasePizzaEnterpriseBean implements AdminBasicCompanyDataSessionBeanRemote {
 
        /**
         * Serial number
@@ -46,7 +45,7 @@ public class PizzaAdminBusinessDataSessionBean extends BasePizzaDatabaseBean imp
         * Administrative EJB
         */
        @EJB
-       private BusinessDataSessionBeanRemote businessDataBean;
+       private BasicCompanyDataSessionBeanRemote businessDataBean;
 
        /**
         * Default constructor
@@ -57,7 +56,7 @@ public class PizzaAdminBusinessDataSessionBean extends BasePizzaDatabaseBean imp
        }
 
        @Override
-       public BusinessBasicData addCompanyBasicData (final BusinessBasicData basicData) throws BusinessDataAlreadyAddedException {
+       public BasicData addBusinessBasicData (final BasicData basicData) throws BasicDataAlreadyAddedException {
                // Trace message
                this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.addBusinessBasicData: basicData={1} - CALLED!", this.getClass().getSimpleName(), basicData)); //NOI18N
 
@@ -68,13 +67,25 @@ public class PizzaAdminBusinessDataSessionBean extends BasePizzaDatabaseBean imp
                } else if (basicData.getBasicDataId() != null) {
                        // Should be null
                        throw new IllegalArgumentException(MessageFormat.format("basicData.basicDataId={0} - is not null", basicData.getBasicDataId())); //NOI18N
-               } else if (this.isSameCompanyNameAdded(basicData)) {
+               } else if (basicData.getCompanyShortName() == null) {
+                       // Should not be null
+                       throw new NullPointerException("basicData.companyShortName is null"); //NOI18N
+               } else if (basicData.getCompanyShortName().isEmpty()) {
+                       // Should not be empty string
+                       throw new IllegalArgumentException("basicData.companyShortName is empty"); //NOI18N
+               } else if (this.isSameCompanyShortNameAdded(basicData)) {
                        // Throw exception
-                       throw new BusinessDataAlreadyAddedException(basicData);
+                       throw new BasicDataAlreadyAddedException(basicData);
+               } else if ((basicData.getCompanyName() != null) && (basicData.getCompanyName().isEmpty())) {
+                       // Should not be empty string when set
+                       throw new IllegalArgumentException("basicData.companyName is empty"); //NOI18N
+               } else if ((basicData.getCompanyName() != null) && (this.isSameCompanyNameAdded(basicData))) {
+                       // Throw exception
+                       throw new BasicDataAlreadyAddedException(basicData);
                }
 
                // Now add current date
-               basicData.setCompanyCreated(new GregorianCalendar());
+               basicData.setCompanyCreated(new Date());
 
                // Is there a owner set?
                if (basicData.getCompanyUserOwner() instanceof User) {
@@ -86,23 +97,35 @@ public class PizzaAdminBusinessDataSessionBean extends BasePizzaDatabaseBean imp
                }
 
                // Is a founder set?
-               if (basicData.getCompanyFounder() instanceof Employee) {
+               if (basicData.getCompanyFounder() instanceof Employable) {
                        // Get managed instance
-                       final Employee managedEmployee = this.createManaged(basicData.getCompanyFounder());
+                       final Employable managedEmployee = this.createManaged(basicData.getCompanyFounder());
 
                        // Set it back
                        basicData.setCompanyFounder(managedEmployee);
                }
 
                // Is a contact person set?
-               if (basicData.getCompanyContactEmployee() instanceof Employee) {
+               if (basicData.getCompanyContactEmployee() instanceof Employable) {
                        // Get managed instance
-                       final Employee managedEmployee = this.createManaged(basicData.getCompanyContactEmployee());
+                       final Employable managedEmployee = this.createManaged(basicData.getCompanyContactEmployee());
 
                        // Set it back
                        basicData.setCompanyContactEmployee(managedEmployee);
                }
 
+               // Is a headquarter set?
+               if (basicData.getCompanyHeadquarterData() instanceof Headquarter) {
+                       // Get managed instance
+                       final Headquarter managedHeadquarter = this.createManaged(basicData.getCompanyHeadquarterData());
+
+                       // Set it back
+                       basicData.setCompanyHeadquarterData(managedHeadquarter);
+               }
+
+               // Set created timestamps for any assigned numbers
+               this.setAllPhoneEntriesCreated(basicData);
+
                // Persist it
                this.getEntityManager().persist(basicData);
 
@@ -120,15 +143,15 @@ public class PizzaAdminBusinessDataSessionBean extends BasePizzaDatabaseBean imp
         *
         * @return Whether same company name has been used
         */
-       private boolean isSameCompanyNameAdded (final BusinessBasicData basicData) {
+       private boolean isSameCompanyNameAdded (final BasicData basicData) {
                // Get all available entries
-               final List<BusinessBasicData> list = this.businessDataBean.allCompanyBasicData();
+               final List<BasicData> list = this.businessDataBean.allBusinessBasicData();
 
                // Default is not found
                boolean isFound = false;
 
                // Then check each entry
-               for (final BusinessBasicData entry : list) {
+               for (final BasicData entry : list) {
                        // Is the company name matching?
                        if (Objects.equals(entry.getCompanyName(), basicData.getCompanyName())) {
                                // Found match
@@ -140,4 +163,31 @@ public class PizzaAdminBusinessDataSessionBean extends BasePizzaDatabaseBean imp
                return isFound;
        }
 
+       /**
+        * Checks if given basic data is already added by it's company short name
+        * <p>
+        * @param basicData Basic data to be checked
+        *
+        * @return Whether same company short name has been used
+        */
+       private boolean isSameCompanyShortNameAdded (final BasicData basicData) {
+               // Get all available entries
+               final List<BasicData> list = this.businessDataBean.allBusinessBasicData();
+
+               // Default is not found
+               boolean isFound = false;
+
+               // Then check each entry
+               for (final BasicData entry : list) {
+                       // Is the company name matching?
+                       if (Objects.equals(entry.getCompanyShortName(), basicData.getCompanyShortName())) {
+                               // Found match
+                               isFound = true;
+                       }
+               }
+
+               // Return flag
+               return isFound;
+       }
+
 }