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
name = "company_job_positions"
)
@SuppressWarnings ("PersistenceUnitPresent")
-public class EmployeePosition implements JobPosition {
+public class EmployeePosition implements HireableJobPosition {
/**
* Serial number
@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
*/
@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
*/
@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
*/
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
// 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())
};
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 () {
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;
}