2 * Copyright (C) 2016, 2017 Roland Häder
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 package org.mxchange.jjobs.model.jobposition;
19 import java.util.Calendar;
20 import java.util.Objects;
21 import javax.persistence.Basic;
22 import javax.persistence.CascadeType;
23 import javax.persistence.Column;
24 import javax.persistence.Entity;
25 import javax.persistence.EnumType;
26 import javax.persistence.Enumerated;
27 import javax.persistence.GeneratedValue;
28 import javax.persistence.GenerationType;
29 import javax.persistence.Id;
30 import javax.persistence.JoinColumn;
31 import javax.persistence.OneToOne;
32 import javax.persistence.Table;
33 import javax.persistence.Temporal;
34 import javax.persistence.TemporalType;
35 import javax.persistence.Transient;
36 import org.mxchange.jjobs.model.jobposition.status.JobPositionStatus;
37 import org.mxchange.jusercore.model.user.LoginUser;
38 import org.mxchange.jusercore.model.user.User;
41 * A POJO entity for job positions
43 * @author Roland Häder<roland@mxchange.org>
45 @Entity (name = "open_job_position")
47 name = "open_job_position"
49 @SuppressWarnings ("PersistenceUnitPresent")
50 public class JobPosition implements HireableJobPosition {
56 private static final long serialVersionUID = 547_102_736_712_809_694L;
59 * User who has added this job position
61 @JoinColumn (name = "job_position_added_user_id", referencedColumnName = "user_id", updatable = false)
62 @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.REFRESH, optional = false)
63 private User jobPositionAddedUser;
66 * When this entry has been created
68 @Basic (optional = false)
69 @Column (name = "job_position_created", nullable = false, updatable = false)
70 @Temporal (TemporalType.TIMESTAMP)
71 private Calendar jobPositionCreated;
74 * When this job position (offer) was deleted
76 @Column (name = "job_position_deleted")
77 @Temporal (TemporalType.TIMESTAMP)
78 private Calendar jobPositionDeleted;
81 * When this job position (offer) has expired
83 @Column (name = "job_position_expired")
84 @Temporal (TemporalType.TIMESTAMP)
85 private Calendar jobPositionExpired;
88 * When a new employed was hired for this job position
90 @Column (name = "job_position_hired")
91 @Temporal (TemporalType.TIMESTAMP)
92 private Calendar jobPositionHired;
95 * Id number (primary key)
98 @GeneratedValue (strategy = GenerationType.IDENTITY)
99 @Column (name = "job_position_id", nullable = false, updatable = false)
100 private Long jobPositionId;
103 * Name of the position (example: Store Worker)
105 @Basic (optional = false)
106 @Column (name = "job_position_name", nullable = false, unique = true)
107 private String jobPositionName;
110 * When this job position (offer) starts
112 @Basic (optional = false)
113 @Column (name = "job_position_start", nullable = false)
114 @Temporal (TemporalType.DATE)
115 private Calendar jobPositionStart;
118 * Job position status
120 @Basic (optional = false)
121 @Column (name = "job_position_status", nullable = false)
122 @Enumerated (EnumType.STRING)
123 private JobPositionStatus jobPositionStatus;
126 * When this entry has been created
128 @Column (name = "job_position_updated", insertable = false)
129 @Temporal (TemporalType.TIMESTAMP)
130 private Calendar jobPositionUpdated;
133 public boolean equals (final Object object) {
134 if (this == object) {
136 } else if (null == object) {
138 } else if (this.getClass() != object.getClass()) {
142 final HireableJobPosition other = (HireableJobPosition) object;
144 if (!Objects.equals(this.getJobPositionName(), other.getJobPositionName())) {
146 } else if (!Objects.equals(this.getJobPositionId(), other.getJobPositionId())) {
154 public User getJobPositionAddedUser () {
155 return this.jobPositionAddedUser;
159 public void setJobPositionAddedUser (final User jobPositionAddedUser) {
160 this.jobPositionAddedUser = jobPositionAddedUser;
164 @SuppressWarnings ("ReturnOfDateField")
165 public Calendar getJobPositionCreated () {
166 return this.jobPositionCreated;
170 @SuppressWarnings ("AssignmentToDateFieldFromParameter")
171 public void setJobPositionCreated (final Calendar jobPositionCreated) {
172 this.jobPositionCreated = jobPositionCreated;
176 @SuppressWarnings ("ReturnOfDateField")
177 public Calendar getJobPositionDeleted () {
178 return this.jobPositionDeleted;
182 @SuppressWarnings ("AssignmentToDateFieldFromParameter")
183 public void setJobPositionDeleted (final Calendar jobPositionDeleted) {
184 this.jobPositionDeleted = jobPositionDeleted;
188 @SuppressWarnings ("ReturnOfDateField")
189 public Calendar getJobPositionExpired () {
190 return this.jobPositionExpired;
194 @SuppressWarnings ("AssignmentToDateFieldFromParameter")
195 public void setJobPositionExpired (final Calendar jobPositionExpired) {
196 this.jobPositionExpired = jobPositionExpired;
200 @SuppressWarnings ("ReturnOfDateField")
201 public Calendar getJobPositionHired () {
202 return this.jobPositionHired;
206 @SuppressWarnings ("AssignmentToDateFieldFromParameter")
207 public void setJobPositionHired (final Calendar jobPositionHired) {
208 this.jobPositionHired = jobPositionHired;
212 public Long getJobPositionId () {
213 return this.jobPositionId;
217 public void setJobPositionId (final Long jobPositionId) {
218 this.jobPositionId = jobPositionId;
222 public String getJobPositionName () {
223 return this.jobPositionName;
227 public void setJobPositionName (final String jobPositionName) {
228 this.jobPositionName = jobPositionName;
232 @SuppressWarnings ("ReturnOfDateField")
233 public Calendar getJobPositionStart () {
234 return this.jobPositionStart;
238 @SuppressWarnings ("AssignmentToDateFieldFromParameter")
239 public void setJobPositionStart (final Calendar jobPositionStart) {
240 this.jobPositionStart = jobPositionStart;
244 public JobPositionStatus getJobPositionStatus () {
245 return this.jobPositionStatus;
249 public void setJobPositionStatus (final JobPositionStatus jobPositionStatus) {
250 this.jobPositionStatus = jobPositionStatus;
254 @SuppressWarnings ("ReturnOfDateField")
255 public Calendar getJobPositionUpdated () {
256 return this.jobPositionUpdated;
260 @SuppressWarnings ("AssignmentToDateFieldFromParameter")
261 public void setJobPositionUpdated (final Calendar jobPositionUpdated) {
262 this.jobPositionUpdated = jobPositionUpdated;
266 public int hashCode () {
269 hash = 37 * hash + Objects.hashCode(this.getJobPositionId());
270 hash = 37 * hash + Objects.hashCode(this.getJobPositionName());