From 6fc4e67159802734bc6e256d641c49a4c0986266 Mon Sep 17 00:00:00 2001 From: Roland Haeder Date: Thu, 22 Oct 2015 10:57:39 +0200 Subject: [PATCH] =?utf8?q?Continued:=20-=20added=20creation=20timestamp=20?= =?utf8?q?for=20records=20-=20added=20owner=20instance=20(not=20everywhere?= =?utf8?q?)=20-=20added=20juser-core.jar=20-=20updated=20jar(s)=20Signed-o?= =?utf8?q?ff-by:Roland=20H=C3=A4der=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- lib/jcontacts-core.jar | Bin 20873 -> 21164 bytes lib/jcountry-core.jar | Bin 6194 -> 6767 bytes lib/jphone-core.jar | Bin 23037 -> 25438 bytes lib/juser-core.jar | Bin 0 -> 29564 bytes nbproject/project.properties | 3 + .../jcontactsbusiness/BusinessContact.java | 34 +++++- .../jcontactsbusiness/CompanyContact.java | 73 +++++++++--- .../basicdata/BusinessBasicData.java | 30 +++++ .../basicdata/CompanyBasicData.java | 88 ++++++++++---- .../branch/BranchOffice.java | 30 +++++ .../branch/CompanyBranchOffice.java | 109 ++++++++++++------ .../department/CompanyDepartment.java | 84 ++++++++++---- .../department/Department.java | 30 +++++ .../employee/CompanyEmployee.java | 91 +++++++++++---- .../jcontactsbusiness/employee/Employee.java | 30 +++++ .../headquarters/CompanyHeadQuartersData.java | 104 ++++++++++++----- .../headquarters/HeadQuartersData.java | 30 +++++ .../jobposition/EmployeePosition.java | 58 ++++++---- .../jobposition/JobPosition.java | 15 +++ .../jcontactsbusiness/logo/BusinessLogo.java | 30 +++++ .../jcontactsbusiness/logo/CompanyLogo.java | 75 +++++++++--- 21 files changed, 720 insertions(+), 194 deletions(-) create mode 100644 lib/juser-core.jar diff --git a/lib/jcontacts-core.jar b/lib/jcontacts-core.jar index 6b3619e1b879be6ab4b7b20ecf765dde842559b6..39ba8b2afd0485a67193d21df02299ba987fe176 100644 GIT binary patch delta 5466 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 diff --git a/lib/jcountry-core.jar b/lib/jcountry-core.jar index 234d3fbe4b8bfd5ad614a4b2509deb29ba454fef..28024eeb45e65d2334a4e91585545cbe4004aa66 100644 GIT binary patch literal 6767 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 diff --git a/lib/jphone-core.jar b/lib/jphone-core.jar index a5d222b5e458841311e097be654fba5408b3bc86..e5c2573169bfc234a14736809e9df575171e2584 100644 GIT binary patch literal 25438 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 Shet6}chNZ3BmaJoQ~wKZ+l{UO literal 23037 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 cUza*N_-*FQY8oR^cJ^%m! diff --git a/lib/juser-core.jar b/lib/juser-core.jar new file mode 100644 index 0000000000000000000000000000000000000000..1bd555dcbee0a4ab63c5f9ebbdb2abe1ea0e0564 GIT binary patch literal 29564 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 + * @return User owner instance + */ + User getContactUserOwner (); + + /** + * Setter for user owner instance + *

+ * @param contactUserOwner User owner instance + */ + void setContactUserOwner (final User contactUserOwner); + + /** + * Getter for timestamp when this entry has been created + *

+ * @return Timestamp when this entry has been created + */ + Calendar getContactCreated (); + + /** + * Setter for timestamp when this entry has been created + *

+ * @param contactCreated Timestamp when this entry has been created + */ + void setContactCreated (final Calendar contactCreated); + @Override - boolean equals (final Object object); + boolean equals (final Object object); @Override - int hashCode (); + int hashCode (); } diff --git a/src/org/mxchange/jcontactsbusiness/CompanyContact.java b/src/org/mxchange/jcontactsbusiness/CompanyContact.java index c36f200..ba30b08 100644 --- a/src/org/mxchange/jcontactsbusiness/CompanyContact.java +++ b/src/org/mxchange/jcontactsbusiness/CompanyContact.java @@ -16,8 +16,10 @@ */ package org.mxchange.jcontactsbusiness; +import java.util.Calendar; import java.util.List; import java.util.Objects; +import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; @@ -28,6 +30,8 @@ import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; import javax.persistence.Transient; import org.mxchange.jcontactsbusiness.basicdata.BusinessBasicData; import org.mxchange.jcontactsbusiness.basicdata.CompanyBasicData; @@ -36,6 +40,8 @@ import org.mxchange.jcontactsbusiness.employee.CompanyEmployee; import org.mxchange.jcontactsbusiness.employee.Employee; import org.mxchange.jcontactsbusiness.headquarters.CompanyHeadQuartersData; import org.mxchange.jcontactsbusiness.headquarters.HeadQuartersData; +import org.mxchange.jusercore.model.user.LoginUser; +import org.mxchange.jusercore.model.user.User; /** * A POJO for business contacts @@ -100,23 +106,20 @@ public class CompanyContact implements BusinessContact, Comparable getEmployees () { return this.employees; @@ -188,6 +211,24 @@ public class CompanyContact implements BusinessContact, Comparable + * @return User owner instance + */ + User getBasicUserOwner (); + + /** + * Setter for user owner instance + *

+ * @param basicUserOwner User owner instance + */ + void setBasicUserOwner (final User basicUserOwner); + + /** + * Getter for timestamp when this entry has been created + *

+ * @return Timestamp when this entry has been created + */ + Calendar getBasicCreated (); + + /** + * Setter for timestamp when this entry has been created + *

+ * @param basicCreated Timestamp when this entry has been created + */ + void setBasicCreated (final Calendar basicCreated); + @Override boolean equals (final Object object); diff --git a/src/org/mxchange/jcontactsbusiness/basicdata/CompanyBasicData.java b/src/org/mxchange/jcontactsbusiness/basicdata/CompanyBasicData.java index 9ca5b88..9af2bea 100644 --- a/src/org/mxchange/jcontactsbusiness/basicdata/CompanyBasicData.java +++ b/src/org/mxchange/jcontactsbusiness/basicdata/CompanyBasicData.java @@ -16,6 +16,7 @@ */ package org.mxchange.jcontactsbusiness.basicdata; +import java.util.Calendar; import java.util.Objects; import javax.persistence.Basic; import javax.persistence.CascadeType; @@ -29,12 +30,16 @@ import javax.persistence.JoinColumn; import javax.persistence.Lob; import javax.persistence.OneToOne; import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; import org.mxchange.jcontactsbusiness.logo.BusinessLogo; import org.mxchange.jcontactsbusiness.logo.CompanyLogo; import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber; import org.mxchange.jphone.phonenumbers.fax.FaxNumber; import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber; import org.mxchange.jphone.phonenumbers.landline.LandLineNumber; +import org.mxchange.jusercore.model.user.LoginUser; +import org.mxchange.jusercore.model.user.User; /** * A POJO for basic company data @@ -118,31 +123,20 @@ public class CompanyBasicData implements BusinessBasicData, Comparable + * @return User owner instance + */ + User getBranchUserOwner (); + + /** + * Setter for user owner instance + *

+ * @param branchUserOwner User owner instance + */ + void setBranchUserOwner (final User branchUserOwner); + + /** + * Getter for timestamp when this entry has been created + *

+ * @return Timestamp when this entry has been created + */ + Calendar getBranchCreated (); + + /** + * Setter for timestamp when this entry has been created + *

+ * @param branchCreated Timestamp when this entry has been created + */ + void setBranchCreated (final Calendar branchCreated); + @Override boolean equals (final Object object); diff --git a/src/org/mxchange/jcontactsbusiness/branch/CompanyBranchOffice.java b/src/org/mxchange/jcontactsbusiness/branch/CompanyBranchOffice.java index 31a5949..4ea7344 100644 --- a/src/org/mxchange/jcontactsbusiness/branch/CompanyBranchOffice.java +++ b/src/org/mxchange/jcontactsbusiness/branch/CompanyBranchOffice.java @@ -16,6 +16,7 @@ */ package org.mxchange.jcontactsbusiness.branch; +import java.util.Calendar; import java.util.Objects; import javax.persistence.Basic; import javax.persistence.CascadeType; @@ -28,6 +29,8 @@ 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 org.mxchange.jcontactsbusiness.CompanyContact; import org.mxchange.jcountry.data.Country; import org.mxchange.jcountry.data.CountryData; @@ -35,6 +38,8 @@ import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber; import org.mxchange.jphone.phonenumbers.fax.FaxNumber; import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber; import org.mxchange.jphone.phonenumbers.landline.LandLineNumber; +import org.mxchange.jusercore.model.user.LoginUser; +import org.mxchange.jusercore.model.user.User; /** * A POJO for company branch offices @@ -132,44 +137,20 @@ public class CompanyBranchOffice implements BranchOffice, Comparable { @Column (name = "department_name", length = 100, nullable = false) private String departmentName; - @Override - public int compareTo (final Department department) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. - } - - @Override - public boolean equals (final Object object) { - if (object == null) { - return false; - } else if (getClass() != object.getClass()) { - return false; - } - - final Department other = (Department) object; - - if (!Objects.equals(this.getDepartmentCompany(), other.getDepartmentCompany())) { - return false; - } else if (!Objects.equals(this.getDepartmentName(), other.getDepartmentName())) { - return false; - } + /** + * User owner instance + */ + @JoinColumn (name = "department_user_id", nullable = false, updatable = false) + @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.MERGE, optional = false) + private User departmentUserOwner; - return true; - } + /** + * Timestamp when this entry has been created + */ + @Basic (optional = false) + @Temporal (TemporalType.TIMESTAMP) + @Column (name = "department_entry_created", nullable = false, updatable = false) + private Calendar departmentCreated; @Override public HeadQuartersData getDepartentHeadquarters () { @@ -179,6 +175,50 @@ public class CompanyDepartment implements Department, Comparable { this.departmentName = departmentName; } + @Override + public Calendar getDepartmentCreated () { + return this.departmentCreated; + } + + @Override + public void setDepartmentCreated (final Calendar departmentCreated) { + this.departmentCreated = departmentCreated; + } + + @Override + public User getDepartmentUserOwner () { + return this.departmentUserOwner; + } + + @Override + public void setDepartmentUserOwner (final User departmentUserOwner) { + this.departmentUserOwner = departmentUserOwner; + } + + @Override + public int compareTo (final Department department) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public boolean equals (final Object object) { + if (object == null) { + return false; + } else if (getClass() != object.getClass()) { + return false; + } + + final Department other = (Department) object; + + if (!Objects.equals(this.getDepartmentCompany(), other.getDepartmentCompany())) { + return false; + } else if (!Objects.equals(this.getDepartmentName(), other.getDepartmentName())) { + return false; + } + + return true; + } + @Override public int hashCode () { int hash = 5; diff --git a/src/org/mxchange/jcontactsbusiness/department/Department.java b/src/org/mxchange/jcontactsbusiness/department/Department.java index 4e40ed9..745f412 100644 --- a/src/org/mxchange/jcontactsbusiness/department/Department.java +++ b/src/org/mxchange/jcontactsbusiness/department/Department.java @@ -17,10 +17,12 @@ package org.mxchange.jcontactsbusiness.department; import java.io.Serializable; +import java.util.Calendar; import org.mxchange.jcontactsbusiness.BusinessContact; import org.mxchange.jcontactsbusiness.branch.BranchOffice; import org.mxchange.jcontactsbusiness.employee.Employee; import org.mxchange.jcontactsbusiness.headquarters.HeadQuartersData; +import org.mxchange.jusercore.model.user.User; /** * A POJI for company departments @@ -113,6 +115,34 @@ public interface Department extends Serializable { */ void setDepartmentName (final String departmentName); + /** + * Getter for user owner instance + *

+ * @return User owner instance + */ + User getDepartmentUserOwner (); + + /** + * Setter for user owner instance + *

+ * @param departmentUserOwner User owner instance + */ + void setDepartmentUserOwner (final User departmentUserOwner); + + /** + * Getter for timestamp when this entry has been created + *

+ * @return Timestamp when this entry has been created + */ + Calendar getDepartmentCreated (); + + /** + * Setter for timestamp when this entry has been created + *

+ * @param departmentCreated Timestamp when this entry has been created + */ + void setDepartmentCreated (final Calendar departmentCreated); + @Override boolean equals (final Object object); diff --git a/src/org/mxchange/jcontactsbusiness/employee/CompanyEmployee.java b/src/org/mxchange/jcontactsbusiness/employee/CompanyEmployee.java index 05b946b..d5db081 100644 --- a/src/org/mxchange/jcontactsbusiness/employee/CompanyEmployee.java +++ b/src/org/mxchange/jcontactsbusiness/employee/CompanyEmployee.java @@ -16,7 +16,9 @@ */ package org.mxchange.jcontactsbusiness.employee; +import java.util.Calendar; import java.util.Objects; +import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; @@ -27,6 +29,8 @@ 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 org.mxchange.jcontacts.contact.Contact; import org.mxchange.jcontacts.contact.UserContact; import org.mxchange.jcontactsbusiness.BusinessContact; @@ -41,6 +45,8 @@ import org.mxchange.jcontactsbusiness.jobposition.EmployeePosition; import org.mxchange.jcontactsbusiness.jobposition.JobPosition; import org.mxchange.jphone.phonenumbers.cellphone.CellphoneNumber; import org.mxchange.jphone.phonenumbers.cellphone.DialableCellphoneNumber; +import org.mxchange.jusercore.model.user.LoginUser; +import org.mxchange.jusercore.model.user.User; /** * A POJO for company employees (including CEO) @@ -128,34 +134,23 @@ public class CompanyEmployee implements Employee, Comparable { * Employee's position (example: CEO) */ @JoinColumn (name = "employee_position_id") - @OneToOne (targetEntity = EmployeePosition.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @OneToOne (targetEntity = EmployeePosition.class, cascade = CascadeType.MERGE, fetch = FetchType.EAGER) private JobPosition employeePosition; - @Override - public int compareTo (final Employee employee) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. - } - - @Override - public boolean equals (final Object object) { - if (object == null) { - return false; - } else if (getClass() != object.getClass()) { - return false; - } - - final Employee other = (Employee) object; - - if (!Objects.equals(this.getEmployeeCompany(), other.getEmployeeCompany())) { - return false; - } else if (!Objects.equals(this.getEmployeeNumber(), other.getEmployeeNumber())) { - return false; - } else if (!Objects.equals(this.getEmployeePersonalData(), other.getEmployeePersonalData())) { - return false; - } + /** + * User owner instance + */ + @JoinColumn (name = "employee_user_id", nullable = false, updatable = false) + @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.MERGE, optional = false) + private User employeeUserOwner; - return true; - } + /** + * Timestamp when this entry has been created + */ + @Basic (optional = false) + @Temporal (TemporalType.TIMESTAMP) + @Column (name = "employee_entry_created", nullable = false, updatable = false) + private Calendar employeeCreated; @Override public BranchOffice getEmployeeBranchOffice () { @@ -267,6 +262,52 @@ public class CompanyEmployee implements Employee, Comparable { this.employeePosition = employeePosition; } + @Override + public Calendar getEmployeeCreated () { + return this.employeeCreated; + } + + @Override + public void setEmployeeCreated (final Calendar employeeCreated) { + this.employeeCreated = employeeCreated; + } + + @Override + public User getEmployeeUserOwner () { + return this.employeeUserOwner; + } + + @Override + public void setEmployeeUserOwner (final User employeeUserOwner) { + this.employeeUserOwner = employeeUserOwner; + } + + @Override + public int compareTo (final Employee employee) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public boolean equals (final Object object) { + if (object == null) { + return false; + } else if (getClass() != object.getClass()) { + return false; + } + + final Employee other = (Employee) object; + + if (!Objects.equals(this.getEmployeeCompany(), other.getEmployeeCompany())) { + return false; + } else if (!Objects.equals(this.getEmployeeNumber(), other.getEmployeeNumber())) { + return false; + } else if (!Objects.equals(this.getEmployeePersonalData(), other.getEmployeePersonalData())) { + return false; + } + + return true; + } + @Override public int hashCode () { int hash = 3; diff --git a/src/org/mxchange/jcontactsbusiness/employee/Employee.java b/src/org/mxchange/jcontactsbusiness/employee/Employee.java index f669ced..85f818a 100644 --- a/src/org/mxchange/jcontactsbusiness/employee/Employee.java +++ b/src/org/mxchange/jcontactsbusiness/employee/Employee.java @@ -17,6 +17,7 @@ package org.mxchange.jcontactsbusiness.employee; import java.io.Serializable; +import java.util.Calendar; import org.mxchange.jcontacts.contact.Contact; import org.mxchange.jcontactsbusiness.BusinessContact; import org.mxchange.jcontactsbusiness.branch.BranchOffice; @@ -24,6 +25,7 @@ import org.mxchange.jcontactsbusiness.department.Department; import org.mxchange.jcontactsbusiness.headquarters.HeadQuartersData; import org.mxchange.jcontactsbusiness.jobposition.JobPosition; import org.mxchange.jphone.phonenumbers.cellphone.DialableCellphoneNumber; +import org.mxchange.jusercore.model.user.User; /** * A POJI for employees @@ -186,6 +188,34 @@ public interface Employee extends Serializable { */ void setEmployeePosition (final JobPosition employeePosition); + /** + * Getter for user owner instance + *

+ * @return User owner instance + */ + User getEmployeeUserOwner (); + + /** + * Setter for user owner instance + *

+ * @param employeeUserOwner User owner instance + */ + void setEmployeeUserOwner (final User employeeUserOwner); + + /** + * Getter for timestamp when this entry has been created + *

+ * @return Timestamp when this entry has been created + */ + Calendar getEmployeeCreated (); + + /** + * Setter for timestamp when this entry has been created + *

+ * @param employeeCreated Timestamp when this entry has been created + */ + void setEmployeeCreated (final Calendar employeeCreated); + @Override boolean equals (final Object object); diff --git a/src/org/mxchange/jcontactsbusiness/headquarters/CompanyHeadQuartersData.java b/src/org/mxchange/jcontactsbusiness/headquarters/CompanyHeadQuartersData.java index c7796ce..c971e48 100644 --- a/src/org/mxchange/jcontactsbusiness/headquarters/CompanyHeadQuartersData.java +++ b/src/org/mxchange/jcontactsbusiness/headquarters/CompanyHeadQuartersData.java @@ -16,6 +16,7 @@ */ package org.mxchange.jcontactsbusiness.headquarters; +import java.util.Calendar; import java.util.Objects; import javax.persistence.Basic; import javax.persistence.CascadeType; @@ -28,12 +29,16 @@ 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 org.mxchange.jcountry.data.Country; import org.mxchange.jcountry.data.CountryData; import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber; import org.mxchange.jphone.phonenumbers.fax.FaxNumber; import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber; import org.mxchange.jphone.phonenumbers.landline.LandLineNumber; +import org.mxchange.jusercore.model.user.LoginUser; +import org.mxchange.jusercore.model.user.User; /** * A POJO for company headquarts data @@ -118,39 +123,20 @@ public class CompanyHeadQuartersData implements HeadQuartersData, Comparable + * @return User owner instance + */ + User getHeadquartersUserOwner (); + + /** + * Setter for user owner instance + *

+ * @param headquartersUserOwner User owner instance + */ + void setHeadquartersUserOwner (final User headquartersUserOwner); + + /** + * Getter for timestamp when this entry has been created + *

+ * @return Timestamp when this entry has been created + */ + Calendar getHeadquartersCreated (); + + /** + * Setter for timestamp when this entry has been created + *

+ * @param headquartersCreated Timestamp when this entry has been created + */ + void setHeadquartersCreated (final Calendar headquartersCreated); + @Override boolean equals (final Object object); diff --git a/src/org/mxchange/jcontactsbusiness/jobposition/EmployeePosition.java b/src/org/mxchange/jcontactsbusiness/jobposition/EmployeePosition.java index 834273e..110d22f 100644 --- a/src/org/mxchange/jcontactsbusiness/jobposition/EmployeePosition.java +++ b/src/org/mxchange/jcontactsbusiness/jobposition/EmployeePosition.java @@ -16,6 +16,7 @@ */ package org.mxchange.jcontactsbusiness.jobposition; +import java.util.Calendar; import java.util.Objects; import javax.persistence.Basic; import javax.persistence.Column; @@ -24,6 +25,8 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; /** * A POJO for job positions @@ -54,26 +57,13 @@ public class EmployeePosition implements JobPosition, Comparable { @Column (name = "job_position_name", length = 10, nullable = false, unique = true) private String jobPositionName; - @Override - public int compareTo (final JobPosition jobPosition) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. - } - - @Override - public boolean equals (final Object object) { - if (object == null) { - return false; - } else if (getClass() != object.getClass()) { - return false; - } - - final JobPosition other = (JobPosition) object; - - if (!Objects.equals(this.getJobPositionName(), other.getJobPositionName())) { - return false; - } - return true; - } + /** + * Timestamp when this entry has been created + */ + @Basic (optional = false) + @Temporal (TemporalType.TIMESTAMP) + @Column (name = "job_position_created", nullable = false, updatable = false) + private Calendar jobPositionCreated; @Override public Long getJobPositionId () { @@ -95,6 +85,34 @@ public class EmployeePosition implements JobPosition, Comparable { this.jobPositionName = jobPositionName; } + @Override + public Calendar getJobPositionCreated () { + return this.jobPositionCreated; + } + + @Override + public void setJobPositionCreated (final Calendar jobPositionCreated) { + this.jobPositionCreated = jobPositionCreated; + } + + @Override + public int compareTo (final JobPosition jobPosition) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public boolean equals (final Object object) { + if (object == null) { + return false; + } else if (getClass() != object.getClass()) { + return false; + } + + final JobPosition other = (JobPosition) object; + + return Objects.equals(this.getJobPositionName(), other.getJobPositionName()); + } + @Override public int hashCode () { int hash = 7; diff --git a/src/org/mxchange/jcontactsbusiness/jobposition/JobPosition.java b/src/org/mxchange/jcontactsbusiness/jobposition/JobPosition.java index 8949799..8bd0a02 100644 --- a/src/org/mxchange/jcontactsbusiness/jobposition/JobPosition.java +++ b/src/org/mxchange/jcontactsbusiness/jobposition/JobPosition.java @@ -17,6 +17,7 @@ package org.mxchange.jcontactsbusiness.jobposition; import java.io.Serializable; +import java.util.Calendar; /** * A POJI for job positions @@ -53,6 +54,20 @@ public interface JobPosition extends Serializable { */ void setJobPositionName (final String jobPositionName); + /** + * Getter for timestamp when this entry has been created + *

+ * @return Timestamp when this entry has been created + */ + Calendar getJobPositionCreated (); + + /** + * Setter for timestamp when this entry has been created + *

+ * @param jobPositionCreated Timestamp when this entry has been created + */ + void setJobPositionCreated (final Calendar jobPositionCreated); + @Override boolean equals (final Object object); diff --git a/src/org/mxchange/jcontactsbusiness/logo/BusinessLogo.java b/src/org/mxchange/jcontactsbusiness/logo/BusinessLogo.java index 5050325..d75da72 100644 --- a/src/org/mxchange/jcontactsbusiness/logo/BusinessLogo.java +++ b/src/org/mxchange/jcontactsbusiness/logo/BusinessLogo.java @@ -17,6 +17,8 @@ package org.mxchange.jcontactsbusiness.logo; import java.io.Serializable; +import java.util.Calendar; +import org.mxchange.jusercore.model.user.User; /** * A POJI for business logos @@ -53,6 +55,34 @@ public interface BusinessLogo extends Serializable { */ void setLogoId (final Long logoId); + /** + * Getter for user owner instance + *

+ * @return User owner instance + */ + User getLogoUploader (); + + /** + * Setter for user owner instance + *

+ * @param logoUploader User owner instance + */ + void setLogoUploader (final User logoUploader); + + /** + * Getter for timestamp when this entry has been created + *

+ * @return Timestamp when this entry has been created + */ + Calendar getLogoCreated (); + + /** + * Setter for timestamp when this entry has been created + *

+ * @param logoCreated Timestamp when this entry has been created + */ + void setLogoCreated (final Calendar logoCreated); + @Override boolean equals (final Object object); diff --git a/src/org/mxchange/jcontactsbusiness/logo/CompanyLogo.java b/src/org/mxchange/jcontactsbusiness/logo/CompanyLogo.java index 9cb53fd..be0101e 100644 --- a/src/org/mxchange/jcontactsbusiness/logo/CompanyLogo.java +++ b/src/org/mxchange/jcontactsbusiness/logo/CompanyLogo.java @@ -16,14 +16,22 @@ */ package org.mxchange.jcontactsbusiness.logo; +import java.util.Calendar; import java.util.Objects; import javax.persistence.Basic; +import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; 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 org.mxchange.jusercore.model.user.LoginUser; +import org.mxchange.jusercore.model.user.User; /** * A POJO for company logos @@ -54,23 +62,20 @@ public class CompanyLogo implements BusinessLogo, Comparable { @Column (name = "logo_id", length = 20, nullable = false, updatable = false) private Long logoId; - @Override - public int compareTo (final BusinessLogo businessLogo) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. - } - - @Override - public boolean equals (final Object object) { - if (object == null) { - return false; - } else if (getClass() != object.getClass()) { - return false; - } - - final BusinessLogo other = (BusinessLogo) object; + /** + * Logo uploader user instance + */ + @JoinColumn (name = "logo_uploader_id", nullable = false, updatable = false) + @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.MERGE, optional = false) + private User logoUploader; - return Objects.equals(this.getLogoFileName(), other.getLogoFileName()); - } + /** + * Timestamp when this entry has been created + */ + @Basic (optional = false) + @Temporal (TemporalType.TIMESTAMP) + @Column (name = "logo_entry_created", nullable = false, updatable = false) + private Calendar logoCreated; @Override public String getLogoFileName () { @@ -92,6 +97,44 @@ public class CompanyLogo implements BusinessLogo, Comparable { this.logoId = logoId; } + @Override + public Calendar getLogoCreated () { + return this.logoCreated; + } + + @Override + public void setLogoCreated (final Calendar logoCreated) { + this.logoCreated = logoCreated; + } + + @Override + public User getLogoUploader () { + return this.logoUploader; + } + + @Override + public void setLogoUploader (final User logoUploader) { + this.logoUploader = logoUploader; + } + + @Override + public int compareTo (final BusinessLogo businessLogo) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public boolean equals (final Object object) { + if (object == null) { + return false; + } else if (getClass() != object.getClass()) { + return false; + } + + final BusinessLogo other = (BusinessLogo) object; + + return Objects.equals(this.getLogoFileName(), other.getLogoFileName()); + } + @Override public int hashCode () { int hash = 3; -- 2.39.5