]> git.mxchange.org Git - jcontacts-business-core.git/blob - src/org/mxchange/jcontactsbusiness/basicdata/CompanyBasicData.java
Renaming season has started:
[jcontacts-business-core.git] / src / org / mxchange / jcontactsbusiness / basicdata / CompanyBasicData.java
1 /*
2  * Copyright (C) 2016 Roland Haeder
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.jcontactsbusiness.basicdata;
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.GeneratedValue;
26 import javax.persistence.GenerationType;
27 import javax.persistence.Id;
28 import javax.persistence.JoinColumn;
29 import javax.persistence.Lob;
30 import javax.persistence.OneToOne;
31 import javax.persistence.Table;
32 import javax.persistence.Temporal;
33 import javax.persistence.TemporalType;
34 import javax.persistence.Transient;
35 import org.mxchange.jcontactsbusiness.logo.BusinessLogo;
36 import org.mxchange.jcontactsbusiness.logo.CompanyLogo;
37 import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber;
38 import org.mxchange.jphone.phonenumbers.fax.FaxNumber;
39 import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber;
40 import org.mxchange.jphone.phonenumbers.landline.LandLineNumber;
41 import org.mxchange.jusercore.model.user.LoginUser;
42 import org.mxchange.jusercore.model.user.User;
43
44 /**
45  * A POJO for basic company data
46  * <p>
47  * @author Roland Haeder<roland@mxchange.org>
48  */
49 @Entity (name = "company_basic_data")
50 @Table (name = "company_basic_data")
51 @SuppressWarnings ("PersistenceUnitPresent")
52 public class CompanyBasicData implements BusinessBasicData {
53
54         /**
55          * Serial number
56          */
57         @Transient
58         private static final long serialVersionUID = 486_895_878_178_761L;
59
60         /**
61          * Timestamp when this entry has been created
62          */
63         @Basic (optional = false)
64         @Temporal (TemporalType.TIMESTAMP)
65         @Column (name = "company_entry_created", nullable = false, updatable = false)
66         private Calendar basicCreated;
67
68         /**
69          * User owner instance
70          */
71         @JoinColumn (name = "company_user_id", nullable = false, updatable = false)
72         @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.REFRESH, optional = false)
73         private User basicUserOwner;
74
75         /**
76          * Id number
77          */
78         @Id
79         @Column (name = "company_basic_id", nullable = false, updatable = false)
80         @GeneratedValue (strategy = GenerationType.IDENTITY)
81         private Long companyBasicId;
82
83         /**
84          * Comments (any)
85          */
86         @Lob
87         @Column (name = "company_comments")
88         private String companyComments;
89
90         /**
91          * Company's main email address (example: info@company.com)
92          */
93         @Column (name = "company_email_address", length = 100)
94         private String companyEmailAddress;
95
96         /**
97          * Company's main fax numbers: +ccxxxxxxxxxx
98          */
99         @JoinColumn (name = "company_fax_number_id")
100         @OneToOne (targetEntity = FaxNumber.class, cascade = CascadeType.ALL)
101         private DialableFaxNumber companyFaxNumber;
102
103         /**
104          * Legal status of company (example: "Inc.", "GmbH")
105          */
106         @Basic (optional = false)
107         @Column (name = "company_legal_status", nullable = false)
108         private String companyLegalStatus;
109
110         /**
111          * Id number of company logo
112          */
113         @JoinColumn (name = "company_logo_id")
114         @OneToOne (targetEntity = CompanyLogo.class, cascade = CascadeType.ALL)
115         private BusinessLogo companyLogo;
116
117         /**
118          * Company name
119          */
120         @Basic (optional = false)
121         @Column (name = "company_name", length = 100, nullable = false)
122         private String companyName;
123
124         /**
125          * Company's main phone number: +ccxxxxxxxxxx
126          */
127         @JoinColumn (name = "company_phone_number_id")
128         @OneToOne (targetEntity = LandLineNumber.class, cascade = CascadeType.ALL)
129         private DialableLandLineNumber companyPhoneNumber;
130
131         /**
132          * Tax number
133          */
134         @Column (name = "company_tax_number", length = 30)
135         private String companyTaxNumber;
136
137         /**
138          * URL for company website
139          */
140         @Column (name = "company_website_url")
141         private String companyWebsiteUrl;
142
143         @Override
144         public boolean equals (final Object object) {
145                 if (null == object) {
146                         return false;
147                 } else if (this.getClass() != object.getClass()) {
148                         return false;
149                 }
150
151                 final BusinessBasicData other = (BusinessBasicData) object;
152
153                 if (!Objects.equals(this.getCompanyLegalStatus(), other.getCompanyLegalStatus())) {
154                         return false;
155                 } else if (!Objects.equals(this.getCompanyName(), other.getCompanyName())) {
156                         return false;
157                 } else if (!Objects.equals(this.getCompanyTaxNumber(), other.getCompanyTaxNumber())) {
158                         return false;
159                 }
160
161                 return true;
162         }
163
164         @Override
165         public int hashCode () {
166                 int hash = 5;
167                 hash = 53 * hash + Objects.hashCode(this.getCompanyLegalStatus());
168                 hash = 53 * hash + Objects.hashCode(this.getCompanyName());
169                 hash = 53 * hash + Objects.hashCode(this.getCompanyTaxNumber());
170                 return hash;
171         }
172
173         @Override
174         @SuppressWarnings ("ReturnOfDateField")
175         public Calendar getBasicCreated () {
176                 return this.basicCreated;
177         }
178
179         @Override
180         @SuppressWarnings ("AssignmentToDateFieldFromParameter")
181         public void setBasicCreated (final Calendar basicCreated) {
182                 this.basicCreated = basicCreated;
183         }
184
185         @Override
186         public User getBasicUserOwner () {
187                 return this.basicUserOwner;
188         }
189
190         @Override
191         public void setBasicUserOwner (final User basicUserOwner) {
192                 this.basicUserOwner = basicUserOwner;
193         }
194
195         @Override
196         public Long getCompanyBasicId () {
197                 return this.companyBasicId;
198         }
199
200         @Override
201         public void setCompanyBasicId (final Long companyBasicId) {
202                 this.companyBasicId = companyBasicId;
203         }
204
205         @Override
206         public String getCompanyComments () {
207                 return this.companyComments;
208         }
209
210         @Override
211         public void setCompanyComments (final String companyComments) {
212                 this.companyComments = companyComments;
213         }
214
215         @Override
216         public String getCompanyEmailAddress () {
217                 return this.companyEmailAddress;
218         }
219
220         @Override
221         public void setCompanyEmailAddress (final String companyEmailAddress) {
222                 this.companyEmailAddress = companyEmailAddress;
223         }
224
225         @Override
226         public DialableFaxNumber getCompanyFaxNumber () {
227                 return this.companyFaxNumber;
228         }
229
230         @Override
231         public void setCompanyFaxNumber (final DialableFaxNumber companyFaxNumber) {
232                 this.companyFaxNumber = companyFaxNumber;
233         }
234
235         @Override
236         public String getCompanyLegalStatus () {
237                 return this.companyLegalStatus;
238         }
239
240         @Override
241         public void setCompanyLegalStatus (final String companyLegalStatus) {
242                 this.companyLegalStatus = companyLegalStatus;
243         }
244
245         @Override
246         public BusinessLogo getCompanyLogo () {
247                 return this.companyLogo;
248         }
249
250         @Override
251         public void setCompanyLogo (final BusinessLogo companyLogoId) {
252                 this.companyLogo = companyLogoId;
253         }
254
255         @Override
256         public String getCompanyName () {
257                 return this.companyName;
258         }
259
260         @Override
261         public void setCompanyName (final String companyName) {
262                 this.companyName = companyName;
263         }
264
265         @Override
266         public DialableLandLineNumber getCompanyPhoneNumber () {
267                 return this.companyPhoneNumber;
268         }
269
270         @Override
271         public void setCompanyPhoneNumber (final DialableLandLineNumber companyPhoneNumber) {
272                 this.companyPhoneNumber = companyPhoneNumber;
273         }
274
275         @Override
276         public String getCompanyTaxNumber () {
277                 return this.companyTaxNumber;
278         }
279
280         @Override
281         public void setCompanyTaxNumber (final String companyTaxNumber) {
282                 this.companyTaxNumber = companyTaxNumber;
283         }
284
285         @Override
286         public String getCompanyWebsiteUrl () {
287                 return this.companyWebsiteUrl;
288         }
289
290         @Override
291         public void setCompanyWebsiteUrl (final String companyWebsiteUrl) {
292                 this.companyWebsiteUrl = companyWebsiteUrl;
293         }
294
295 }