]> git.mxchange.org Git - jcontacts-business-core.git/blobdiff - src/org/mxchange/jcontactsbusiness/employee/CompanyEmployee.java
Rewrite:
[jcontacts-business-core.git] / src / org / mxchange / jcontactsbusiness / employee / CompanyEmployee.java
index 1b96e1f4aadc78c4d9e76eed68d7682c4d8a459d..61e09c15eb026d782133734359d9cd2de8ae5c74 100644 (file)
  */
 package org.mxchange.jcontactsbusiness.employee;
 
-import javax.persistence.Basic;
+import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
@@ -31,6 +32,10 @@ import org.mxchange.jcontactsbusiness.branch.BranchOffice;
 import org.mxchange.jcontactsbusiness.branch.CompanyBranchOffice;
 import org.mxchange.jcontactsbusiness.department.CompanyDepartment;
 import org.mxchange.jcontactsbusiness.department.Department;
+import org.mxchange.jcontactsbusiness.jobposition.EmployeePosition;
+import org.mxchange.jcontactsbusiness.jobposition.JobPosition;
+import org.mxchange.jphone.phonenumbers.cellphone.CellphoneNumber;
+import org.mxchange.jphone.phonenumbers.cellphone.DialableCellphoneNumber;
 
 /**
  * A POJO for company employees (including CEO)
@@ -46,26 +51,18 @@ public class CompanyEmployee implements Employee, Comparable<Employee> {
         */
        private static final long serialVersionUID = 48_959_819_859_812_076L;
 
-       /**
-        * Id number
-        */
-       @Id
-       @Column (name = "employee_id", length = 20, nullable = false, unique = true, updatable = false)
-       @GeneratedValue (strategy = GenerationType.IDENTITY)
-       private Long employeeId;
-
        /**
         * Branch office the employee works at
         */
        @JoinColumn (name = "employee_branch_id")
-       @OneToOne (targetEntity = CompanyBranchOffice.class, orphanRemoval = true)
+       @OneToOne (targetEntity = CompanyBranchOffice.class, cascade = CascadeType.ALL)
        private BranchOffice employeeBranchOffice;
 
        /**
         * Department the employee works at
         */
-       @JoinColumn (name = "employee_department_id", nullable = false)
-       @OneToOne (targetEntity = CompanyDepartment.class, optional = false)
+       @JoinColumn (name = "employee_department_id")
+       @OneToOne (targetEntity = CompanyDepartment.class, cascade = CascadeType.ALL)
        private Department employeeDepartment;
 
        /**
@@ -74,38 +71,46 @@ public class CompanyEmployee implements Employee, Comparable<Employee> {
        @Column (name = "employee_email_address", length = 30)
        private String employeeEmailAddress;
 
+       /**
+        * Id number
+        */
+       @Id
+       @Column (name = "employee_id", length = 20, nullable = false, updatable = false)
+       @GeneratedValue (strategy = GenerationType.IDENTITY)
+       private Long employeeId;
+
        /**
         * Employee's business mobile number
         */
-       @Column (name = "employee_mobile_number", length = 20)
-       private String employeeMobileNumber;
+       @JoinColumn (name = "employee_mobile_number_id")
+       @OneToOne (targetEntity = CellphoneNumber.class, cascade = CascadeType.ALL)
+       private DialableCellphoneNumber employeeMobileNumber;
 
        /**
         * Employee's number
         */
-       @Basic (optional = false)
-       @Column (name = "employee_number", length = 20, nullable = false)
+       @Column (name = "employee_number", length = 20)
        private String employeeNumber;
 
        /**
         * Employee's personal data
         */
-       @JoinColumn (name = "employee_personal_id", nullable = false, unique = true, updatable = false)
-       @OneToOne (optional = false, targetEntity = UserContact.class)
-       private Contact employeePersonalData;
+       @JoinColumn (name = "employee_personal_data_id", nullable = false, updatable = false)
+       @OneToOne (targetEntity = UserContact.class, cascade = CascadeType.ALL, optional = false, fetch = FetchType.EAGER)
+       private transient Contact employeePersonalData;
 
        /**
         * Employee's phone extension (or number if different)
         */
-       @Column (name = "employee_phone_extension", length = 20)
-       private String employeePhoneExtension;
+       @Column (name = "employee_phone_extension", length = 10)
+       private Integer employeePhoneExtension;
 
        /**
         * Employee's position (example: CEO)
         */
-       @Basic (optional = false)
-       @Column (name = "employee_status", length = 50, nullable = false)
-       private String employeePosition;
+       @JoinColumn (name = "employee_position_id")
+       @OneToOne (targetEntity = EmployeePosition.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
+       private transient JobPosition employeePosition;
 
        @Override
        public int compareTo (final Employee employee) {
@@ -153,12 +158,12 @@ public class CompanyEmployee implements Employee, Comparable<Employee> {
        }
 
        @Override
-       public String getEmployeeMobileNumber () {
+       public DialableCellphoneNumber getEmployeeMobileNumber () {
                return this.employeeMobileNumber;
        }
 
        @Override
-       public void setEmployeeMobileNumber (final String employeeMobileNumber) {
+       public void setEmployeeMobileNumber (final DialableCellphoneNumber employeeMobileNumber) {
                this.employeeMobileNumber = employeeMobileNumber;
        }
 
@@ -183,22 +188,22 @@ public class CompanyEmployee implements Employee, Comparable<Employee> {
        }
 
        @Override
-       public String getEmployeePhoneExtension () {
+       public Integer getEmployeePhoneExtension () {
                return this.employeePhoneExtension;
        }
 
        @Override
-       public void setEmployeePhoneExtension (final String employeePhoneExtension) {
+       public void setEmployeePhoneExtension (final Integer employeePhoneExtension) {
                this.employeePhoneExtension = employeePhoneExtension;
        }
 
        @Override
-       public String getEmployeePosition () {
+       public JobPosition getEmployeePosition () {
                return this.employeePosition;
        }
 
        @Override
-       public void setEmployeePosition (final String employeePosition) {
+       public void setEmployeePosition (final JobPosition employeePosition) {
                this.employeePosition = employeePosition;
        }
 }