]> git.mxchange.org Git - jcontacts-business-core.git/blobdiff - src/org/mxchange/jcontactsbusiness/headquarters/CompanyHeadQuartersData.java
Continued:
[jcontacts-business-core.git] / src / org / mxchange / jcontactsbusiness / headquarters / CompanyHeadQuartersData.java
index 46ca20e6f28929a4c96e5447e0a3c255dfc5873a..0349a232a07df31fab7900bf7c1f66561f8bd2b3 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 KLC
+ * Copyright (C) 2016 KLC
  *
  * 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.headquarters;
 
+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 javax.persistence.Transient;
+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
  * <p>
- * @author Roland Haeder
+ * @author Roland Häder<roland@mxchange.org>
  */
-@Entity (name = "headquarters")
-@Table (name = "headquarters")
-public class CompanyHeadQuartersData implements HeadQuartersData, Comparable<HeadQuartersData> {
+@Entity (name = "company_headquarters")
+@Table (name = "company_headquarters")
+@SuppressWarnings ("PersistenceUnitPresent")
+public class CompanyHeadQuartersData implements HeadQuartersData {
 
        /**
         * Serial number
         */
+       @Transient
        private static final long serialVersionUID = 385_752_948_781_761L;
 
        /**
@@ -48,9 +66,24 @@ public class CompanyHeadQuartersData implements HeadQuartersData, Comparable<Hea
        /**
         * Headquarter's country code
         */
+       @JoinColumn (name = "headquarters_country_id", nullable = false)
+       @OneToOne (targetEntity = CountryData.class, cascade = CascadeType.REFRESH, optional = false)
+       private Country headquartersCountry;
+
+       /**
+        * Timestamp when this entry has been created
+        */
        @Basic (optional = false)
-       @Column (name = "headquarters_country_code", length = 2, nullable = false)
-       private String headquartersCountryCode;
+       @Temporal (TemporalType.TIMESTAMP)
+       @Column (name = "headquarters_entry_created", nullable = false, updatable = false)
+       private Calendar headquartersCreated;
+
+       /**
+        * Headquarters' fax number
+        */
+       @JoinColumn (name = "headquarters_fax_number_id")
+       @OneToOne (targetEntity = FaxNumber.class, cascade = CascadeType.ALL)
+       private DialableFaxNumber headquartersFaxNumber;
 
        /**
         * Headquarters' house number
@@ -63,10 +96,17 @@ public class CompanyHeadQuartersData implements HeadQuartersData, Comparable<Hea
         * Id number
         */
        @Id
-       @Column (name = "headquarters_id", length = 20, nullable = false, updatable = false)
        @GeneratedValue (strategy = GenerationType.IDENTITY)
+       @Column (name = "headquarters_id", nullable = false, updatable = false)
        private Long headquartersId;
 
+       /**
+        * Headquarters' phone number
+        */
+       @JoinColumn (name = "headquarters_phone_number_id")
+       @OneToOne (targetEntity = LandLineNumber.class, cascade = CascadeType.ALL)
+       private DialableLandLineNumber headquartersPhoneNumber;
+
        /**
         * Headquarters' store number (multi-store building only)
         */
@@ -86,6 +126,13 @@ public class CompanyHeadQuartersData implements HeadQuartersData, Comparable<Hea
        @Column (name = "headquarters_suite_number", length = 4)
        private Short headquartersSuiteNumber;
 
+       /**
+        * User owner instance
+        */
+       @JoinColumn (name = "headquarters_user_id", nullable = false, updatable = false)
+       @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.REFRESH, optional = false)
+       private User headquartersUserOwner;
+
        /**
         * Headquarters' ZIP code
         */
@@ -94,8 +141,34 @@ public class CompanyHeadQuartersData implements HeadQuartersData, Comparable<Hea
        private Integer headquartersZipCode;
 
        @Override
-       public int compareTo (final HeadQuartersData headQuartersData) {
-               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 HeadQuartersData other = (HeadQuartersData) object;
+
+               if (!Objects.equals(this.getHeadquartersId(), other.getHeadquartersId())) {
+                       return false;
+               } else if (!Objects.equals(this.getHeadquartersCity(), other.getHeadquartersCity())) {
+                       return false;
+               } else if (!Objects.equals(this.getHeadquartersCountry(), other.getHeadquartersCountry())) {
+                       return false;
+               } else if (!Objects.equals(this.getHeadquartersHouseNumber(), other.getHeadquartersHouseNumber())) {
+                       return false;
+               } else if (!Objects.equals(this.getHeadquartersStore(), other.getHeadquartersStore())) {
+                       return false;
+               } else if (!Objects.equals(this.getHeadquartersStreet(), other.getHeadquartersStreet())) {
+                       return false;
+               } else if (!Objects.equals(this.getHeadquartersSuiteNumber(), other.getHeadquartersSuiteNumber())) {
+                       return false;
+               } else if (!Objects.equals(this.getHeadquartersZipCode(), other.getHeadquartersZipCode())) {
+                       return false;
+               }
+
+               return true;
        }
 
        @Override
@@ -109,13 +182,35 @@ public class CompanyHeadQuartersData implements HeadQuartersData, Comparable<Hea
        }
 
        @Override
-       public String getHeadquartersCountryCode () {
-               return this.headquartersCountryCode;
+       public Country getHeadquartersCountry () {
+               return this.headquartersCountry;
+       }
+
+       @Override
+       public void setHeadquartersCountry (final Country headquartersCountry) {
+               this.headquartersCountry = headquartersCountry;
        }
 
        @Override
-       public void setHeadquartersCountryCode (final String headquartersCountryCode) {
-               this.headquartersCountryCode = headquartersCountryCode;
+       @SuppressWarnings ("ReturnOfDateField")
+       public Calendar getHeadquartersCreated () {
+               return this.headquartersCreated;
+       }
+
+       @Override
+       @SuppressWarnings ("AssignmentToDateFieldFromParameter")
+       public void setHeadquartersCreated (final Calendar headquartersCreated) {
+               this.headquartersCreated = headquartersCreated;
+       }
+
+       @Override
+       public DialableFaxNumber getHeadquartersFaxNumber () {
+               return this.headquartersFaxNumber;
+       }
+
+       @Override
+       public void setHeadquartersFaxNumber (final DialableFaxNumber headquartersFaxNumber) {
+               this.headquartersFaxNumber = headquartersFaxNumber;
        }
 
        @Override
@@ -138,6 +233,16 @@ public class CompanyHeadQuartersData implements HeadQuartersData, Comparable<Hea
                this.headquartersId = headquartersId;
        }
 
+       @Override
+       public DialableLandLineNumber getHeadquartersPhoneNumber () {
+               return this.headquartersPhoneNumber;
+       }
+
+       @Override
+       public void setHeadquartersPhoneNumber (final DialableLandLineNumber headquartersPhoneNumber) {
+               this.headquartersPhoneNumber = headquartersPhoneNumber;
+       }
+
        @Override
        public Short getHeadquartersStore () {
                return this.headquartersStore;
@@ -168,6 +273,16 @@ public class CompanyHeadQuartersData implements HeadQuartersData, Comparable<Hea
                this.headquartersSuiteNumber = headquartersSuiteNumber;
        }
 
+       @Override
+       public User getHeadquartersUserOwner () {
+               return this.headquartersUserOwner;
+       }
+
+       @Override
+       public void setHeadquartersUserOwner (final User headquartersUserOwner) {
+               this.headquartersUserOwner = headquartersUserOwner;
+       }
+
        @Override
        public Integer getHeadquartersZipCode () {
                return this.headquartersZipCode;
@@ -177,4 +292,21 @@ public class CompanyHeadQuartersData implements HeadQuartersData, Comparable<Hea
        public void setHeadquartersZipCode (final Integer headquartersZipCode) {
                this.headquartersZipCode = headquartersZipCode;
        }
+
+       @Override
+       public int hashCode () {
+               int hash = 7;
+
+               hash = 47 * hash + Objects.hashCode(this.getHeadquartersId());
+               hash = 47 * hash + Objects.hashCode(this.getHeadquartersCity());
+               hash = 47 * hash + Objects.hashCode(this.getHeadquartersCountry());
+               hash = 47 * hash + Objects.hashCode(this.getHeadquartersHouseNumber());
+               hash = 47 * hash + Objects.hashCode(this.getHeadquartersStore());
+               hash = 47 * hash + Objects.hashCode(this.getHeadquartersStreet());
+               hash = 47 * hash + Objects.hashCode(this.getHeadquartersSuiteNumber());
+               hash = 47 * hash + Objects.hashCode(this.getHeadquartersZipCode());
+
+               return hash;
+       }
+
 }