]> git.mxchange.org Git - jjobs-core.git/blob - src/org/mxchange/jjobs/model/jobposition/JobPosition.java
Please cherry-pick:
[jjobs-core.git] / src / org / mxchange / jjobs / model / jobposition / JobPosition.java
1 /*
2  * Copyright (C) 2016, 2017 Roland Häder
3  *
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.
8  *
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.
13  *
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/>.
16  */
17 package org.mxchange.jjobs.model.jobposition;
18
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;
39
40 /**
41  * A POJO entity for job positions
42  * <p>
43  * @author Roland Häder<roland@mxchange.org>
44  */
45 @Entity (name = "open_job_position")
46 @Table (
47                 name = "open_job_position"
48 )
49 @SuppressWarnings ("PersistenceUnitPresent")
50 public class JobPosition implements HireableJobPosition {
51
52         /**
53          * Serial number
54          */
55         @Transient
56         private static final long serialVersionUID = 547_102_736_712_809_694L;
57
58         /**
59          * User who has added this job position
60          */
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;
64
65         /**
66          * When this entry has been created
67          */
68         @Basic (optional = false)
69         @Column (name = "job_position_created", nullable = false, updatable = false)
70         @Temporal (TemporalType.TIMESTAMP)
71         private Calendar jobPositionCreated;
72
73         /**
74          * When this job position (offer) was deleted
75          */
76         @Column (name = "job_position_deleted")
77         @Temporal (TemporalType.TIMESTAMP)
78         private Calendar jobPositionDeleted;
79
80         /**
81          * When this job position (offer) has expired
82          */
83         @Column (name = "job_position_expired")
84         @Temporal (TemporalType.TIMESTAMP)
85         private Calendar jobPositionExpired;
86
87         /**
88          * When a new employed was hired for this job position
89          */
90         @Column (name = "job_position_hired")
91         @Temporal (TemporalType.TIMESTAMP)
92         private Calendar jobPositionHired;
93
94         /**
95          * Id number (primary key)
96          */
97         @Id
98         @GeneratedValue (strategy = GenerationType.IDENTITY)
99         @Column (name = "job_position_id", nullable = false, updatable = false)
100         private Long jobPositionId;
101
102         /**
103          * Name of the position (example: Store Worker)
104          */
105         @Basic (optional = false)
106         @Column (name = "job_position_name", nullable = false, unique = true)
107         private String jobPositionName;
108
109         /**
110          * When this job position (offer) starts
111          */
112         @Basic (optional = false)
113         @Column (name = "job_position_start", nullable = false)
114         @Temporal (TemporalType.DATE)
115         private Calendar jobPositionStart;
116
117         /**
118          * Job position status
119          */
120         @Basic (optional = false)
121         @Column (name = "job_position_status", nullable = false)
122         @Enumerated (EnumType.STRING)
123         private JobPositionStatus jobPositionStatus;
124
125         /**
126          * When this entry has been created
127          */
128         @Column (name = "job_position_updated", insertable = false)
129         @Temporal (TemporalType.TIMESTAMP)
130         private Calendar jobPositionUpdated;
131
132         @Override
133         public boolean equals (final Object object) {
134                 if (this == object) {
135                         return true;
136                 } else if (null == object) {
137                         return false;
138                 } else if (this.getClass() != object.getClass()) {
139                         return false;
140                 }
141
142                 final HireableJobPosition other = (HireableJobPosition) object;
143
144                 if (!Objects.equals(this.getJobPositionName(), other.getJobPositionName())) {
145                         return false;
146                 } else if (!Objects.equals(this.getJobPositionId(), other.getJobPositionId())) {
147                         return false;
148                 }
149
150                 return true;
151         }
152
153         @Override
154         public User getJobPositionAddedUser () {
155                 return this.jobPositionAddedUser;
156         }
157
158         @Override
159         public void setJobPositionAddedUser (final User jobPositionAddedUser) {
160                 this.jobPositionAddedUser = jobPositionAddedUser;
161         }
162
163         @Override
164         @SuppressWarnings ("ReturnOfDateField")
165         public Calendar getJobPositionCreated () {
166                 return this.jobPositionCreated;
167         }
168
169         @Override
170         @SuppressWarnings ("AssignmentToDateFieldFromParameter")
171         public void setJobPositionCreated (final Calendar jobPositionCreated) {
172                 this.jobPositionCreated = jobPositionCreated;
173         }
174
175         @Override
176         @SuppressWarnings ("ReturnOfDateField")
177         public Calendar getJobPositionDeleted () {
178                 return this.jobPositionDeleted;
179         }
180
181         @Override
182         @SuppressWarnings ("AssignmentToDateFieldFromParameter")
183         public void setJobPositionDeleted (final Calendar jobPositionDeleted) {
184                 this.jobPositionDeleted = jobPositionDeleted;
185         }
186
187         @Override
188         @SuppressWarnings ("ReturnOfDateField")
189         public Calendar getJobPositionExpired () {
190                 return this.jobPositionExpired;
191         }
192
193         @Override
194         @SuppressWarnings ("AssignmentToDateFieldFromParameter")
195         public void setJobPositionExpired (final Calendar jobPositionExpired) {
196                 this.jobPositionExpired = jobPositionExpired;
197         }
198
199         @Override
200         @SuppressWarnings ("ReturnOfDateField")
201         public Calendar getJobPositionHired () {
202                 return this.jobPositionHired;
203         }
204
205         @Override
206         @SuppressWarnings ("AssignmentToDateFieldFromParameter")
207         public void setJobPositionHired (final Calendar jobPositionHired) {
208                 this.jobPositionHired = jobPositionHired;
209         }
210
211         @Override
212         public Long getJobPositionId () {
213                 return this.jobPositionId;
214         }
215
216         @Override
217         public void setJobPositionId (final Long jobPositionId) {
218                 this.jobPositionId = jobPositionId;
219         }
220
221         @Override
222         public String getJobPositionName () {
223                 return this.jobPositionName;
224         }
225
226         @Override
227         public void setJobPositionName (final String jobPositionName) {
228                 this.jobPositionName = jobPositionName;
229         }
230
231         @Override
232         @SuppressWarnings ("ReturnOfDateField")
233         public Calendar getJobPositionStart () {
234                 return this.jobPositionStart;
235         }
236
237         @Override
238         @SuppressWarnings ("AssignmentToDateFieldFromParameter")
239         public void setJobPositionStart (final Calendar jobPositionStart) {
240                 this.jobPositionStart = jobPositionStart;
241         }
242
243         @Override
244         public JobPositionStatus getJobPositionStatus () {
245                 return this.jobPositionStatus;
246         }
247
248         @Override
249         public void setJobPositionStatus (final JobPositionStatus jobPositionStatus) {
250                 this.jobPositionStatus = jobPositionStatus;
251         }
252
253         @Override
254         @SuppressWarnings ("ReturnOfDateField")
255         public Calendar getJobPositionUpdated () {
256                 return this.jobPositionUpdated;
257         }
258
259         @Override
260         @SuppressWarnings ("AssignmentToDateFieldFromParameter")
261         public void setJobPositionUpdated (final Calendar jobPositionUpdated) {
262                 this.jobPositionUpdated = jobPositionUpdated;
263         }
264
265         @Override
266         public int hashCode () {
267                 int hash = 7;
268
269                 hash = 37 * hash + Objects.hashCode(this.getJobPositionId());
270                 hash = 37 * hash + Objects.hashCode(this.getJobPositionName());
271
272                 return hash;
273         }
274
275 }