]> git.mxchange.org Git - jcontacts-business-core.git/blobdiff - src/org/mxchange/jcontactsbusiness/CompanyContact.java
Sorted members
[jcontacts-business-core.git] / src / org / mxchange / jcontactsbusiness / CompanyContact.java
index 1a049a2ef941348213fdd30b7f022b062ead15a1..2319949cf9f19a6eddbecbcee6744c8fa81e0b0d 100644 (file)
@@ -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
  */
 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 org.mxchange.jcontactsbusiness.basicdata.BasicBusinessData;
+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.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
@@ -47,41 +56,62 @@ public class CompanyContact implements BusinessContact, Comparable<BusinessConta
         */
        private static final long serialVersionUID = 478_378_178_748_691L;
 
+       /**
+        * Reference to basic data
+        */
+       @JoinColumn (name = "company_basic_data_id", nullable = false, updatable = false)
+       @OneToOne (targetEntity = CompanyBasicData.class, cascade = CascadeType.ALL, optional = false)
+       private BusinessBasicData basicBusinessData;
+
+       /**
+        * Reference to company branch offfices
+        */
+       @Transient
+       private List<BranchOffice> 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", length = 20, nullable = false, updatable = false)
        @GeneratedValue (strategy = GenerationType.IDENTITY)
        private Long companyContactId;
 
        /**
-        * Reference to basic data
+        * Reference to CEO "employee"
         */
-       @JoinColumn (name = "basic_data_id", nullable = false, updatable = false, unique = true)
-       @OneToOne (targetEntity = CompanyBasicData.class, optional = false)
-       private BasicBusinessData basicBusinessData;
+       @JoinColumn (name = "company_founder_id")
+       @OneToOne (targetEntity = CompanyEmployee.class, cascade = CascadeType.ALL)
+       private Employee companyFounder;
 
        /**
-        * Reference to headquarters data
+        * Timestamp when this entry has been created
         */
-       @JoinColumn (name = "headquarters_data_id", nullable = false, updatable = false, unique = true)
-       @OneToOne (targetEntity = CompanyHeadQuartersData.class, optional = false)
-       private HeadQuartersData headQuartersData;
+       @Basic (optional = false)
+       @Temporal (TemporalType.TIMESTAMP)
+       @Column (name = "company_entry_created", nullable = false, updatable = false)
+       private Calendar contactCreated;
 
        /**
-        * Reference to CEO "employee"
+        * User owner instance
         */
-       @JoinColumn(name = "company_founder_id", nullable = false, updatable = false)
-       @OneToOne(targetEntity = CompanyEmployee.class, optional = false)
-       private Employee companyFounder;
+       @JoinColumn (name = "company_user_id", nullable = false, updatable = false)
+       @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.MERGE, optional = false)
+       private User contactUserOwner;
 
        /**
-        * Reference to employee list
+        * Reference to headquarters data
         */
-       @JoinColumn (name = "employees_id", nullable = false, updatable = false, unique = true)
-       @OneToMany(targetEntity = CompanyEmployee.class)
-       private List<Employee> employees;
+       @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) {
@@ -89,15 +119,48 @@ public class CompanyContact implements BusinessContact, Comparable<BusinessConta
        }
 
        @Override
-       public BasicBusinessData getBasicBusinessData () {
+       public boolean equals (final Object object) {
+               if (object == null) {
+                       return false;
+               } else if (getClass() != object.getClass()) {
+                       return false;
+               }
+
+               final BusinessContact other = (BusinessContact) object;
+
+               return Objects.equals(this.getBasicBusinessData(), other.getBasicBusinessData());
+       }
+
+       @Override
+       public BusinessBasicData getBasicBusinessData () {
                return this.basicBusinessData;
        }
 
        @Override
-       public void setBasicBusinessData (final BasicBusinessData basicBusinessData) {
+       public void setBasicBusinessData (final BusinessBasicData basicBusinessData) {
                this.basicBusinessData = basicBusinessData;
        }
 
+       @Override
+       public List<BranchOffice> getBrancheOffices () {
+               return this.brancheOffices;
+       }
+
+       @Override
+       public void setBrancheOffices (final List<BranchOffice> brancheOffices) {
+               this.brancheOffices = brancheOffices;
+       }
+
+       @Override
+       public Employee getCompanyContact () {
+               return this.companyContact;
+       }
+
+       @Override
+       public void setCompanyContact (final Employee companyContact) {
+               this.companyContact = companyContact;
+       }
+
        @Override
        public Long getCompanyContactId () {
                return this.companyContactId;
@@ -119,13 +182,23 @@ public class CompanyContact implements BusinessContact, Comparable<BusinessConta
        }
 
        @Override
-       public List<Employee> getEmployees () {
-               return this.employees;
+       public Calendar getContactCreated () {
+               return this.contactCreated;
+       }
+
+       @Override
+       public void setContactCreated (final Calendar contactCreated) {
+               this.contactCreated = contactCreated;
        }
 
        @Override
-       public void setEmployees (final List<Employee> employees) {
-               this.employees = employees;
+       public User getContactUserOwner () {
+               return this.contactUserOwner;
+       }
+
+       @Override
+       public void setContactUserOwner (final User contactUserOwner) {
+               this.contactUserOwner = contactUserOwner;
        }
 
        @Override
@@ -137,4 +210,11 @@ public class CompanyContact implements BusinessContact, Comparable<BusinessConta
        public void setHeadQuartersData (final HeadQuartersData headQuartersData) {
                this.headQuartersData = headQuartersData;
        }
+
+       @Override
+       public int hashCode () {
+               int hash = 3;
+               hash = 37 * hash + Objects.hashCode(this.getBasicBusinessData());
+               return hash;
+       }
 }