X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2Forg%2Fmxchange%2Fjcontactsbusiness%2FCompanyContact.java;h=99012d4b45373e5b9f4e165e5c3380b53c1d34c1;hb=9b87a7c465cbe4f26f6806b463c747a72408e6d8;hp=781fd46cebdde9534b0f84f239bc11cefd50e53c;hpb=e9bf959acbd00f0d6b72dc0b93804ccb3a1a65bf;p=jcontacts-business-core.git diff --git a/src/org/mxchange/jcontactsbusiness/CompanyContact.java b/src/org/mxchange/jcontactsbusiness/CompanyContact.java index 781fd46..99012d4 100644 --- a/src/org/mxchange/jcontactsbusiness/CompanyContact.java +++ b/src/org/mxchange/jcontactsbusiness/CompanyContact.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015 Roland Haeder + * Copyright (C) 2016 Roland Haeder * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,85 +16,116 @@ */ 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; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; 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; import org.mxchange.jcontactsbusiness.branch.BranchOffice; -import org.mxchange.jcontactsbusiness.branch.CompanyBranchOffice; 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 *

- * @author Roland Haeder + * @author Roland Haeder */ @Entity (name = "company_contacts") @Table (name = "company_contacts") -public class CompanyContact implements BusinessContact, Comparable { +@SuppressWarnings ("PersistenceUnitPresent") +public class CompanyContact implements BusinessContact { /** * Serial number */ - private static final long serialVersionUID = 478_378_178_748_691L; + @Transient + private static final long serialVersionUID = 470_375_172_748_691L; /** * Reference to basic data */ - @JoinColumn (name = "company_basic_data_id", nullable = false, updatable = false, unique = true) - @OneToOne (targetEntity = CompanyBasicData.class, optional = false) + @JoinColumn (name = "company_basic_data_id", nullable = false, updatable = false) + @OneToOne (targetEntity = CompanyBasicData.class, cascade = CascadeType.ALL, optional = false) private BusinessBasicData basicBusinessData; /** - * Reference to employee branches + * Reference to company branch offfices */ - @JoinColumn (name = "company_branches_id", nullable = false, updatable = false, unique = true) - @OneToMany (targetEntity = CompanyBranchOffice.class) - private List branches; + @Transient + private List brancheOffices; + + /** + * Reference to contact person + */ + @JoinColumn (name = "company_contact_id") + @OneToOne (targetEntity = CompanyEmployee.class, cascade = CascadeType.ALL) + private Employee companyContact; /** * Id number */ @Id - @Column (name = "company_contact_id", length = 20, nullable = false, unique = true, updatable = false) + @Column (name = "company_id", nullable = false, updatable = false) @GeneratedValue (strategy = GenerationType.IDENTITY) private Long companyContactId; /** * Reference to CEO "employee" */ - @JoinColumn (name = "company_founder_id", nullable = false, updatable = false) - @OneToOne (targetEntity = CompanyEmployee.class, optional = false) + @JoinColumn (name = "company_founder_id") + @OneToOne (targetEntity = CompanyEmployee.class, cascade = CascadeType.ALL) private Employee companyFounder; /** - * Reference to employee list + * Timestamp when this entry has been created + */ + @Basic (optional = false) + @Temporal (TemporalType.TIMESTAMP) + @Column (name = "company_entry_created", nullable = false, updatable = false) + private Calendar contactCreated; + + /** + * User owner instance */ - @JoinColumn (name = "company_employees_id", nullable = false, updatable = false, unique = true) - @OneToMany (targetEntity = CompanyEmployee.class) - private List employees; + @JoinColumn (name = "company_user_id", nullable = false, updatable = false) + @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.REFRESH, optional = false) + private User contactUserOwner; /** * Reference to headquarters data */ - @JoinColumn (name = "company_headquarters_data_id", nullable = false, updatable = false, unique = true) - @OneToOne (targetEntity = CompanyHeadQuartersData.class, optional = false) + @JoinColumn (name = "company_headquarters_data_id", nullable = false, updatable = false) + @OneToOne (targetEntity = CompanyHeadQuartersData.class, cascade = CascadeType.ALL, optional = false) private HeadQuartersData headQuartersData; @Override - public int compareTo (final BusinessContact businessContact) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + public boolean equals (final Object object) { + if (null == object) { + return false; + } else if (this.getClass() != object.getClass()) { + return false; + } + + final BusinessContact other = (BusinessContact) object; + + return Objects.equals(this.getBasicBusinessData(), other.getBasicBusinessData()); } @Override @@ -108,13 +139,25 @@ public class CompanyContact implements BusinessContact, Comparable getBranches () { - return this.branches; + @SuppressWarnings ("ReturnOfCollectionOrArrayField") + public List getBrancheOffices () { + return this.brancheOffices; + } + + @Override + @SuppressWarnings ("AssignmentToCollectionOrArrayFieldFromParameter") + public void setBrancheOffices (final List brancheOffices) { + this.brancheOffices = brancheOffices; } @Override - public void setBranches (final List branches) { - this.branches = branches; + public Employee getCompanyContact () { + return this.companyContact; + } + + @Override + public void setCompanyContact (final Employee companyContact) { + this.companyContact = companyContact; } @Override @@ -138,13 +181,25 @@ public class CompanyContact implements BusinessContact, Comparable getEmployees () { - return this.employees; + @SuppressWarnings ("ReturnOfDateField") + public Calendar getContactCreated () { + return this.contactCreated; + } + + @Override + @SuppressWarnings ("AssignmentToDateFieldFromParameter") + public void setContactCreated (final Calendar contactCreated) { + this.contactCreated = contactCreated; } @Override - public void setEmployees (final List employees) { - this.employees = employees; + public User getContactUserOwner () { + return this.contactUserOwner; + } + + @Override + public void setContactUserOwner (final User contactUserOwner) { + this.contactUserOwner = contactUserOwner; } @Override @@ -156,4 +211,11 @@ public class CompanyContact implements BusinessContact, Comparable