]> git.mxchange.org Git - jjobs-ejb.git/commitdiff
Please cherry-pick:
authorRoland Häder <roland@mxchange.org>
Sat, 9 Sep 2017 12:18:10 +0000 (14:18 +0200)
committerRoland Häder <roland@mxchange.org>
Sat, 9 Sep 2017 15:50:37 +0000 (17:50 +0200)
- introduced isSameCompanyNameAdded() which encapsulates checking for if a
  company name has already been used. This is, together with the thrown checked
  exception a last effort to prevent bad bad SqlException or any other
  "low-level" exception as they are more severage than this.
- thumb of a rule: always pre-validate if all conditions are met (return "okay")
  prior doing risky things where uncontrolled exceptions may be thrown.
- make company-owner (User), founder (Employee) and contact person (dito)
  managed before persisting the whole BasicData instance as this makes sure that
  no duplicates will end up in database

Signed-off-by: Roland Häder <roland@mxchange.org>
src/java/org/mxchange/jcontactsbusiness/basicdata/JobsAdminBusinessDataSessionBean.java
src/java/org/mxchange/jcontactsbusiness/branchoffice/JobsAdminBranchOfficeSessionBean.java
src/java/org/mxchange/jjobs/database/BaseJobsDatabaseBean.java
src/java/org/mxchange/jusercore/model/user/JobsAdminUserSessionBean.java
src/java/org/mxchange/jusercore/model/user/activity/JobsUserActivityLogMessageBean.java

index a8d18a6142b385c059916ebd0554c7244e06b03b..bc5279d223c06d3b26731247234fb74e75f725a3 100644 (file)
@@ -23,7 +23,9 @@ import java.util.Objects;
 import javax.ejb.EJB;
 import javax.ejb.Stateless;
 import org.mxchange.jcontactsbusiness.exceptions.basicdata.BusinessDataAlreadyAddedException;
+import org.mxchange.jcontactsbusiness.model.employee.Employee;
 import org.mxchange.jjobs.database.BaseJobsDatabaseBean;
+import org.mxchange.jusercore.model.user.User;
 
 /**
  * An administrative stateless session bean for business data
@@ -64,25 +66,40 @@ public class JobsAdminBusinessDataSessionBean extends BaseJobsDatabaseBean imple
                } 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)) {
+                       // Throw exception
+                       throw new BusinessDataAlreadyAddedException(basicData);
                }
 
-               // Get all available entries
-               final List<BusinessBasicData> list = this.businessDataBean.allCompanyBasicData();
+               // Now add current date
+               basicData.setCompanyCreated(new GregorianCalendar());
 
-               // Is the list filled?
-               if (!list.isEmpty()) {
-                       // Then check each entry
-                       for (final BusinessBasicData entry : list) {
-                               // Is the company name matching?
-                               if (Objects.equals(entry.getCompanyName(), basicData.getCompanyName())) {
-                                       // Found match
-                                       throw new BusinessDataAlreadyAddedException(basicData);
-                               }
-                       }
+               // Is there a owner set?
+               if (basicData.getCompanyUserOwner() instanceof User) {
+                       // Get managed instance
+                       final User managedUser = this.createManaged(basicData.getCompanyUserOwner());
+
+                       // Set it back
+                       basicData.setCompanyUserOwner(managedUser);
                }
 
-               // Now add current date
-               basicData.setCompanyCreated(new GregorianCalendar());
+               // Is a founder set?
+               if (basicData.getCompanyFounder() instanceof Employee) {
+                       // Get managed instance
+                       final Employee managedEmployee = this.createManaged(basicData.getCompanyFounder());
+
+                       // Set it back
+                       basicData.setCompanyFounder(managedEmployee);
+               }
+
+               // Is a contact person set?
+               if (basicData.getCompanyContactEmployee() instanceof Employee) {
+                       // Get managed instance
+                       final Employee managedEmployee = this.createManaged(basicData.getCompanyContactEmployee());
+
+                       // Set it back
+                       basicData.setCompanyContactEmployee(managedEmployee);
+               }
 
                // Persist it
                this.getEntityManager().persist(basicData);
@@ -94,4 +111,31 @@ public class JobsAdminBusinessDataSessionBean extends BaseJobsDatabaseBean imple
                return basicData;
        }
 
+       /**
+        * Checks if given basic data is already added by it's company name
+        * <p>
+        * @param basicData Basic data to be checked
+        *
+        * @return Whether same company name has been used
+        */
+       private boolean isSameCompanyNameAdded (final BusinessBasicData basicData) {
+               // Get all available entries
+               final List<BusinessBasicData> list = this.businessDataBean.allCompanyBasicData();
+
+               // Default is not found
+               boolean isFound = false;
+
+               // Then check each entry
+               for (final BusinessBasicData entry : list) {
+                       // Is the company name matching?
+                       if (Objects.equals(entry.getCompanyName(), basicData.getCompanyName())) {
+                               // Found match
+                               isFound = true;
+                       }
+               }
+
+               // Return flag
+               return isFound;
+       }
+
 }
index 8eb53bbb654d2b03d6f8bc90ab84dab276f16edb..ce149fbb60fc531feb025dbd22f4e1361f5602d8 100644 (file)
@@ -77,7 +77,7 @@ public class JobsAdminBranchOfficeSessionBean extends BaseJobsDatabaseBean imple
                // Is user instance set?
                if (branchOffice.getBranchCompany() instanceof BusinessBasicData) {
                        // Get managed instance back
-                       final BusinessBasicData managedBasicData = this.getManaged(branchOffice.getBranchCompany());
+                       final BusinessBasicData managedBasicData = this.createManaged(branchOffice.getBranchCompany());
 
                        // Set it back in branch office
                        branchOffice.setBranchCompany(managedBasicData);
@@ -86,7 +86,7 @@ public class JobsAdminBranchOfficeSessionBean extends BaseJobsDatabaseBean imple
                // Is user instance set?
                if (branchOffice.getBranchUserOwner() instanceof User) {
                        // Get managed instance back
-                       final User managedUser = this.getManaged(branchOffice.getBranchUserOwner());
+                       final User managedUser = this.createManaged(branchOffice.getBranchUserOwner());
 
                        // Set it back in branch office
                        branchOffice.setBranchUserOwner(managedUser);
@@ -95,7 +95,7 @@ public class JobsAdminBranchOfficeSessionBean extends BaseJobsDatabaseBean imple
                // Is user instance set?
                if (branchOffice.getBranchCountry() instanceof Country) {
                        // Get managed instance back
-                       final Country managedCountry = this.getManaged(branchOffice.getBranchCountry());
+                       final Country managedCountry = this.createManaged(branchOffice.getBranchCountry());
 
                        // Set it back in branch office
                        branchOffice.setBranchCountry(managedCountry);
index 12b0647c341d3472895866946ade0257f1834525..b37d6e390dee02d0bf974dc6cda9aa5817ba175b 100644 (file)
@@ -31,6 +31,8 @@ import org.mxchange.jcontacts.contact.ContactUtils;
 import org.mxchange.jcontacts.contact.UserContact;
 import org.mxchange.jcontactsbusiness.basicdata.BusinessBasicData;
 import org.mxchange.jcontactsbusiness.basicdata.CompanyBasicData;
+import org.mxchange.jcontactsbusiness.employee.CompanyEmployee;
+import org.mxchange.jcontactsbusiness.employee.Employee;
 import org.mxchange.jcoreee.database.BaseDatabaseBean;
 import org.mxchange.jcountry.data.Country;
 import org.mxchange.jcountry.data.CountryData;
@@ -292,9 +294,9 @@ public abstract class BaseJobsDatabaseBean extends BaseDatabaseBean {
         * <p>
         * @return Managed contact instance
         */
-       protected Contact getManaged (final Contact contact) {
+       protected Contact createManaged (final Contact contact) {
                // Trace message
-               this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getManaged: contact={1} - CALLED!", this.getClass().getSimpleName(), contact)); //NOI18N
+               this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.createManaged: contact={1} - CALLED!", this.getClass().getSimpleName(), contact)); //NOI18N
 
                // user should not be null
                if (null == contact) {
@@ -315,7 +317,7 @@ public abstract class BaseJobsDatabaseBean extends BaseDatabaseBean {
                assert (managedContact instanceof Contact) : "managedContact is null"; //NOI18N
 
                // Trace message
-               this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getManaged: managedContact={1} - EXIT!", this.getClass().getSimpleName(), managedContact)); //NOI18N
+               this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.createManaged: managedContact={1} - EXIT!", this.getClass().getSimpleName(), managedContact)); //NOI18N
 
                // Return it
                return managedContact;
@@ -328,9 +330,9 @@ public abstract class BaseJobsDatabaseBean extends BaseDatabaseBean {
         * <p>
         * @return Managed country instance
         */
-       protected Country getManaged (final Country country) {
+       protected Country createManaged (final Country country) {
                // Trace message
-               this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getManaged: country={1} - CALLED!", this.getClass().getSimpleName(), country)); //NOI18N
+               this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.createManaged: country={1} - CALLED!", this.getClass().getSimpleName(), country)); //NOI18N
 
                // user should not be null
                if (null == country) {
@@ -351,22 +353,22 @@ public abstract class BaseJobsDatabaseBean extends BaseDatabaseBean {
                assert (managedCountry instanceof Country) : "managedCountry is null"; //NOI18N
 
                // Trace message
-               this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getManaged: managedCountry={1} - EXIT!", this.getClass().getSimpleName(), managedCountry)); //NOI18N
+               this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.createManaged: managedCountry={1} - EXIT!", this.getClass().getSimpleName(), managedCountry)); //NOI18N
 
                // Return it
                return managedCountry;
        }
 
        /**
-        * Get back a managed instance from given contact
+        * Get back a managed instance from given basic data
         * <p>
-        * @param basicData Unmanaged/detached contact instance
+        * @param basicData Unmanaged/detached basic data instance
         * <p>
-        * @return Managed contact instance
+        * @return Managed basic data instance
         */
-       protected BusinessBasicData getManaged (final BusinessBasicData basicData) {
+       protected BusinessBasicData createManaged (final BusinessBasicData basicData) {
                // Trace message
-               this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getManaged: basicData={1} - CALLED!", this.getClass().getSimpleName(), basicData)); //NOI18N
+               this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.createManaged: basicData={1} - CALLED!", this.getClass().getSimpleName(), basicData)); //NOI18N
 
                // user should not be null
                if (null == basicData) {
@@ -387,12 +389,48 @@ public abstract class BaseJobsDatabaseBean extends BaseDatabaseBean {
                assert (managedBasicData instanceof BusinessBasicData) : "managedBasicData is null"; //NOI18N
 
                // Trace message
-               this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getManaged: managedBasicData={1} - EXIT!", this.getClass().getSimpleName(), managedBasicData)); //NOI18N
+               this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.createManaged: managedBasicData={1} - EXIT!", this.getClass().getSimpleName(), managedBasicData)); //NOI18N
 
                // Return it
                return managedBasicData;
        }
 
+       /**
+        * Get back a managed instance from given employee
+        * <p>
+        * @param employee Unmanaged/detached employee instance
+        * <p>
+        * @return Managed employee instance
+        */
+       protected Employee createManaged (final Employee employee) {
+               // Trace message
+               this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.createManaged: employee={1} - CALLED!", this.getClass().getSimpleName(), employee)); //NOI18N
+
+               // user should not be null
+               if (null == employee) {
+                       // Abort here
+                       throw new NullPointerException("employee is null"); //NOI18N
+               } else if (employee.getEmployeeId() == null) {
+                       // Id is set
+                       throw new NullPointerException("employee.employeeId is null"); //NOI18N
+               } else if (employee.getEmployeeId() < 1) {
+                       // Id is set
+                       throw new IllegalArgumentException(MessageFormat.format("employee.employeeId={0} is null", employee.getEmployeeId())); //NOI18N
+               }
+
+               // Try to find it (should be there)
+               final Employee managedEmployee = this.getEntityManager().find(CompanyEmployee.class, employee.getEmployeeId());
+
+               // Should be there
+               assert (managedEmployee instanceof Employee) : "managedEmployee is null"; //NOI18N
+
+               // Trace message
+               this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.createManaged: managedEmployee={1} - EXIT!", this.getClass().getSimpleName(), managedEmployee)); //NOI18N
+
+               // Return it
+               return managedEmployee;
+       }
+
        /**
         * Get back a managed instance from given user
         * <p>
@@ -400,9 +438,9 @@ public abstract class BaseJobsDatabaseBean extends BaseDatabaseBean {
         * <p>
         * @return Managed user instance
         */
-       protected User getManaged (final User user) {
+       protected User createManaged (final User user) {
                // Trace message
-               this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getManaged: user={1} - CALLED!", this.getClass().getSimpleName(), user)); //NOI18N
+               this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.createManaged: user={1} - CALLED!", this.getClass().getSimpleName(), user)); //NOI18N
 
                // user should not be null
                if (null == user) {
@@ -432,7 +470,7 @@ public abstract class BaseJobsDatabaseBean extends BaseDatabaseBean {
                assert (managedUser instanceof User) : "managedUser is null"; //NOI18N
 
                // Trace message
-               this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.getManaged: managedUser={1} - EXIT!", this.getClass().getSimpleName(), managedUser)); //NOI18N
+               this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.createManaged: managedUser={1} - EXIT!", this.getClass().getSimpleName(), managedUser)); //NOI18N
 
                // Return it
                return managedUser;
index f8df323fdad3508a6b5a9329de5a3571309b2831..2ed096f1c4dae944fd33cdd343763eb689ec64c9 100644 (file)
@@ -137,7 +137,7 @@ public class JobsAdminUserSessionBean extends BaseJobsDatabaseBean implements Ad
                }
 
                // Get a managed instance
-               final User managedUser = this.getManaged(user);
+               final User managedUser = this.createManaged(user);
 
                // Should be found!
                assert (managedUser instanceof User) : MessageFormat.format("User with id {0} not found, but should be.", user.getUserId()); //NOI18N
index 665f5d3378d27f730bec37680fd7dc9ee24f2d26..192b0e7b868b0404fb911e4dde28715a702e97cc 100644 (file)
@@ -136,7 +136,7 @@ public class JobsUserActivityLogMessageBean extends BaseJobsDatabaseBean impleme
                }
 
                // Make user instance managed
-               final User managedUser = this.getManaged(userActivity.getActivityUser());
+               final User managedUser = this.createManaged(userActivity.getActivityUser());
 
                // Set it back
                userActivity.setActivityUser(managedUser);