]> git.mxchange.org Git - jcontacts-business-core.git/blobdiff - src/org/mxchange/jcontactsbusiness/model/jobposition/EmployeePosition.java
Continued:
[jcontacts-business-core.git] / src / org / mxchange / jcontactsbusiness / model / jobposition / EmployeePosition.java
index 7c6e933d396f7282ff674541770c0f16dad952b5..be455e3e5dbfe72b165e8b5b91afbbfa55c9a9a0 100644 (file)
@@ -19,16 +19,24 @@ package org.mxchange.jcontactsbusiness.model.jobposition;
 import java.util.Date;
 import java.util.Objects;
 import javax.persistence.Basic;
+import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToOne;
 import javax.persistence.Table;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 import javax.persistence.Transient;
+import org.mxchange.jcontactsbusiness.model.jobposition.status.JobPositionStatus;
 import org.mxchange.jcoreutils.Comparables;
+import org.mxchange.jusercore.model.user.LoginUser;
+import org.mxchange.jusercore.model.user.User;
 
 /**
  * A POJO for job positions
@@ -40,7 +48,7 @@ import org.mxchange.jcoreutils.Comparables;
                name = "company_job_positions"
 )
 @SuppressWarnings ("PersistenceUnitPresent")
-public class EmployeePosition implements JobPosition {
+public class EmployeePosition implements HireableJobPosition {
 
        /**
         * Serial number
@@ -48,6 +56,13 @@ public class EmployeePosition implements JobPosition {
        @Transient
        private static final long serialVersionUID = 18_427_587_187_609L;
 
+       /**
+        * User who has added this job position
+        */
+       @JoinColumn (name = "job_position_added_user_id", referencedColumnName = "user_id", updatable = false)
+       @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.REFRESH, optional = false)
+       private User jobPositionAddedUser;
+
        /**
         * Timestamp when this entry has been created
         */
@@ -56,6 +71,27 @@ public class EmployeePosition implements JobPosition {
        @Column (name = "job_position_created", nullable = false, updatable = false)
        private Date jobPositionCreated;
 
+       /**
+        * When this job position (offer) was deleted
+        */
+       @Column (name = "job_position_deleted")
+       @Temporal (TemporalType.TIMESTAMP)
+       private Date jobPositionDeleted;
+
+       /**
+        * When this job position (offer) has expired
+        */
+       @Column (name = "job_position_expired")
+       @Temporal (TemporalType.TIMESTAMP)
+       private Date jobPositionExpired;
+
+       /**
+        * When a new employed was hired for this job position
+        */
+       @Column (name = "job_position_hired")
+       @Temporal (TemporalType.TIMESTAMP)
+       private Date jobPositionHired;
+
        /**
         * Id number
         */
@@ -71,6 +107,22 @@ public class EmployeePosition implements JobPosition {
        @Column (name = "job_position_name", nullable = false, unique = true)
        private String jobPositionName;
 
+       /**
+        * When this job position (offer) starts
+        */
+       @Basic (optional = false)
+       @Column (name = "job_position_start", nullable = false)
+       @Temporal (TemporalType.DATE)
+       private Date jobPositionStart;
+
+       /**
+        * Job position status
+        */
+       @Basic (optional = false)
+       @Column (name = "job_position_status", nullable = false)
+       @Enumerated (EnumType.STRING)
+       private JobPositionStatus jobPositionStatus;
+
        /**
         * Timestamp when this entry has been created
         */
@@ -79,7 +131,7 @@ public class EmployeePosition implements JobPosition {
        private Date jobPositionUpdated;
 
        @Override
-       public int compareTo (final JobPosition jobPosition) {
+       public int compareTo (final HireableJobPosition jobPosition) {
                // Check parameter on null-reference and equality to this
                if (null == jobPosition) {
                        // Should not happen
@@ -91,7 +143,9 @@ public class EmployeePosition implements JobPosition {
 
                // Init comparisons
                final int[] comparators = {
-                       // First position name ...
+                       // First added by which user ...
+                       this.getJobPositionAddedUser().compareTo(jobPosition.getJobPositionAddedUser()),
+                       // ... next name
                        this.getJobPositionName().compareToIgnoreCase(jobPosition.getJobPositionName())
                };
 
@@ -112,17 +166,29 @@ public class EmployeePosition implements JobPosition {
                        return false;
                }
 
-               final JobPosition other = (JobPosition) object;
+               final HireableJobPosition other = (HireableJobPosition) object;
 
                if (!Objects.equals(this.getJobPositionId(), other.getJobPositionId())) {
                        return false;
                } else if (!Objects.equals(this.getJobPositionName(), other.getJobPositionName())) {
                        return false;
+               } else if (!Objects.equals(this.getJobPositionAddedUser(), other.getJobPositionAddedUser())) {
+                       return false;
                }
 
                return true;
        }
 
+       @Override
+       public User getJobPositionAddedUser () {
+               return this.jobPositionAddedUser;
+       }
+
+       @Override
+       public void setJobPositionAddedUser (final User jobPositionAddedUser) {
+               this.jobPositionAddedUser = jobPositionAddedUser;
+       }
+
        @Override
        @SuppressWarnings ("ReturnOfDateField")
        public Date getJobPositionCreated () {
@@ -167,12 +233,71 @@ public class EmployeePosition implements JobPosition {
                this.jobPositionUpdated = jobPositionUpdated;
        }
 
+       @Override
+       @SuppressWarnings ("ReturnOfDateField")
+       public Date getJobPositionDeleted () {
+               return this.jobPositionDeleted;
+       }
+
+       @Override
+       @SuppressWarnings ("AssignmentToDateFieldFromParameter")
+       public void setJobPositionDeleted (final Date jobPositionDeleted) {
+               this.jobPositionDeleted = jobPositionDeleted;
+       }
+
+       @Override
+       @SuppressWarnings ("ReturnOfDateField")
+       public Date getJobPositionExpired () {
+               return this.jobPositionExpired;
+       }
+
+       @Override
+       @SuppressWarnings ("AssignmentToDateFieldFromParameter")
+       public void setJobPositionExpired (final Date jobPositionExpired) {
+               this.jobPositionExpired = jobPositionExpired;
+       }
+
+       @Override
+       @SuppressWarnings ("ReturnOfDateField")
+       public Date getJobPositionHired () {
+               return this.jobPositionHired;
+       }
+
+       @Override
+       @SuppressWarnings ("AssignmentToDateFieldFromParameter")
+       public void setJobPositionHired (final Date jobPositionHired) {
+               this.jobPositionHired = jobPositionHired;
+       }
+
+       @Override
+       @SuppressWarnings ("ReturnOfDateField")
+       public Date getJobPositionStart () {
+               return this.jobPositionStart;
+       }
+
+       @Override
+       @SuppressWarnings ("AssignmentToDateFieldFromParameter")
+       public void setJobPositionStart (final Date jobPositionStart) {
+               this.jobPositionStart = jobPositionStart;
+       }
+
+       @Override
+       public JobPositionStatus getJobPositionStatus () {
+               return this.jobPositionStatus;
+       }
+
+       @Override
+       public void setJobPositionStatus (final JobPositionStatus jobPositionStatus) {
+               this.jobPositionStatus = jobPositionStatus;
+       }
+
        @Override
        public int hashCode () {
                int hash = 7;
 
                hash = 37 * hash + Objects.hashCode(this.getJobPositionId());
                hash = 37 * hash + Objects.hashCode(this.getJobPositionName());
+               hash = 37 * hash + Objects.hashCode(this.getJobPositionAddedUser());
 
                return hash;
        }