]> git.mxchange.org Git - jjobs-core.git/blob - src/org/mxchange/jjobs/model/user/skills/UserSkill.java
Updated copyright year
[jjobs-core.git] / src / org / mxchange / jjobs / model / user / skills / UserSkill.java
1 /*
2  * Copyright (C) 2016 - 2022 Free Software Foundation
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.user.skills;
18
19 import org.mxchange.jjobs.model.skill.JobSkill;
20 import org.mxchange.jjobs.model.skill.Skillable;
21 import java.util.Date;
22 import java.util.Objects;
23 import javax.persistence.Basic;
24 import javax.persistence.CascadeType;
25 import javax.persistence.Column;
26 import javax.persistence.Entity;
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 org.mxchange.jusercore.model.user.LoginUser;
36 import org.mxchange.jusercore.model.user.User;
37
38 /**
39  * A POJO entity for user skills
40  *
41  * @author Roland Häder<roland@mxchange.org>
42  */
43 @Entity (name = "user_skills")
44 @Table (
45                 name = "user_skills"
46 )
47 @SuppressWarnings ("PersistenceUnitPresent")
48 public class UserSkill implements SkillableUser {
49
50         /**
51          * Serial number
52          */
53         private static final long serialVersionUID = 12_837_674_186_902L;
54
55         /**
56          * Link to skills entity
57          */
58         @JoinColumn (name = "user_skill_id", referencedColumnName = "skill_id", nullable = false, updatable = false)
59         @OneToOne (cascade = CascadeType.REFRESH, optional = false, targetEntity = JobSkill.class)
60         private Skillable jobSkill;
61
62         /**
63          * Link to user entity
64          */
65         @JoinColumn (name = "user_skill_user_id", referencedColumnName = "user_id", nullable = false, updatable = false)
66         @OneToOne (cascade = CascadeType.REFRESH, optional = false, targetEntity = LoginUser.class)
67         private User skillUser;
68
69         /**
70          * When this entry has been created
71          */
72         @Basic (optional = false)
73         @Column (name = "user_skill_created", nullable = false, updatable = false)
74         @Temporal (TemporalType.TIMESTAMP)
75         private Date userSkillCreated;
76
77         /**
78          * Id number (primary key)
79          */
80         @Id
81         @GeneratedValue (strategy = GenerationType.IDENTITY)
82         @Column (name = "user_skill_entry_id", nullable = false, updatable = false)
83         private Long userSkillId;
84
85         /**
86          * When this entry has been updated
87          */
88         @Column (name = "user_skill_updated", insertable = false)
89         @Temporal (TemporalType.TIMESTAMP)
90         private Date userSkillUpdated;
91
92         /**
93          * Default constructor, required for the EJB
94          */
95         public UserSkill () {
96                 // Empty by default
97         }
98
99         /**
100          * Constructor with all required entity properties
101          * <p>
102          * @param jobSkill An instance of a Skillable class
103          * @param skillUser An instance of a User class
104          */
105         public UserSkill (final Skillable jobSkill, final User skillUser) {
106                 // Invoke default constructor
107                 this();
108
109                 // Validate parameter
110                 if (null == jobSkill) {
111                         // Throw NPE
112                         throw new NullPointerException("jobSkill is null"); //NOI18N
113                 } else if (null == skillUser) {
114                         // Throw NPE
115                         throw new NullPointerException("skillUser is null"); //NOI18N
116                 }
117
118                 // Set fields
119                 this.jobSkill = jobSkill;
120                 this.skillUser = skillUser;
121         }
122
123         @Override
124         public boolean equals (final Object object) {
125                 if (this == object) {
126                         return true;
127                 } else if (object == null) {
128                         return false;
129                 } else if (getClass() != object.getClass()) {
130                         return false;
131                 }
132
133                 final SkillableUser skillableUser = (SkillableUser) object;
134
135                 if (!Objects.equals(this.getJobSkill(), skillableUser.getJobSkill())) {
136                         return false;
137                 } else if (!Objects.equals(this.getSkillUser(), skillableUser.getSkillUser())) {
138                         return false;
139                 } else if (!Objects.equals(this.getUserSkillId(), skillableUser.getUserSkillId())) {
140                         return false;
141                 }
142
143                 return true;
144         }
145
146         @Override
147         public int hashCode () {
148                 int hash = 7;
149
150                 hash = 17 * hash + Objects.hashCode(this.getJobSkill());
151                 hash = 17 * hash + Objects.hashCode(this.getSkillUser());
152                 hash = 17 * hash + Objects.hashCode(this.getUserSkillId());
153
154                 return hash;
155         }
156
157         @Override
158         public Skillable getJobSkill () {
159                 return this.jobSkill;
160         }
161
162         @Override
163         public void setJobSkill (final Skillable jobSkill) {
164                 this.jobSkill = jobSkill;
165         }
166
167         @Override
168         public User getSkillUser () {
169                 return this.skillUser;
170         }
171
172         @Override
173         public void setSkillUser (final User skillUser) {
174                 this.skillUser = skillUser;
175         }
176
177         @Override
178         @SuppressWarnings ("ReturnOfDateField")
179         public Date getUserSkillCreated () {
180                 return this.userSkillCreated;
181         }
182
183         @Override
184         @SuppressWarnings ("AssignmentToDateFieldFromParameter")
185         public void setUserSkillCreated (final Date userSkillCreated) {
186                 this.userSkillCreated = userSkillCreated;
187         }
188
189         @Override
190         public Long getUserSkillId () {
191                 return this.userSkillId;
192         }
193
194         @Override
195         public void setUserSkillId (final Long userSkillId) {
196                 this.userSkillId = userSkillId;
197         }
198
199         @Override
200         @SuppressWarnings ("ReturnOfDateField")
201         public Date getUserSkillUpdated () {
202                 return this.userSkillUpdated;
203         }
204
205         @Override
206         @SuppressWarnings ("AssignmentToDateFieldFromParameter")
207         public void setUserSkillUpdated (final Date userSkillUpdated) {
208                 this.userSkillUpdated = userSkillUpdated;
209         }
210
211 }