]> git.mxchange.org Git - jcontacts-core.git/blobdiff - src/org/mxchange/jcontacts/contact/UserContact.java
Cleanup:
[jcontacts-core.git] / src / org / mxchange / jcontacts / contact / UserContact.java
index ae03a05929bf0aa3acf3bfb186c61e926abc40e8..3a368ba1572ff50237129dd61f03ed689f1a5864 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
@@ -26,7 +26,6 @@ import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.EnumType;
 import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
@@ -48,7 +47,7 @@ import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber;
 import org.mxchange.jphone.phonenumbers.landline.LandLineNumber;
 
 /**
- * A general contact class which should only be extended.
+ * A general contact class which serves as an entity.
  * <p>
  * @author Roland Haeder<roland@mxchange.org>
  * @version 0.0
@@ -68,7 +67,7 @@ import org.mxchange.jphone.phonenumbers.landline.LandLineNumber;
                        )
                }
 )
-public class UserContact implements Contact, Comparable<Contact> {
+public class UserContact implements Contact {
 
        /**
         * Serial number
@@ -85,13 +84,14 @@ public class UserContact implements Contact, Comparable<Contact> {
        /**
         * Cellphone number
         */
-       @JoinColumn (name = "contact_cellphone_number_id")
+       @JoinColumn (name = "contact_cellphone_number_id", referencedColumnName = "cellphone_id", unique = true)
        @OneToOne (targetEntity = CellphoneNumber.class, cascade = CascadeType.ALL)
        private DialableCellphoneNumber contactCellphoneNumber;
 
        /**
         * City
         */
+       @Basic (optional = false)
        @Column (name = "contact_city", nullable = false, length = 100)
        private String contactCity;
 
@@ -102,19 +102,11 @@ public class UserContact implements Contact, Comparable<Contact> {
        @Column (name = "contact_comment")
        private String contactComment;
 
-       /**
-        * Id number
-        */
-       @Id
-       @GeneratedValue (strategy = GenerationType.IDENTITY)
-       @Column (name = "contact_id", length = 20, updatable = false)
-       private Long contactId;
-
        /**
         * Country code
         */
-       @JoinColumn (name = "contact_country_id", nullable = false)
-       @OneToOne (targetEntity = CountryData.class, cascade = CascadeType.MERGE, optional = false, fetch = FetchType.EAGER)
+       @JoinColumn (name = "contact_country_id", nullable = false, referencedColumnName = "country_id")
+       @OneToOne (targetEntity = CountryData.class, cascade = CascadeType.REFRESH, optional = false)
        private Country contactCountry;
 
        /**
@@ -128,6 +120,7 @@ public class UserContact implements Contact, Comparable<Contact> {
        /**
         * Email address
         */
+       @Basic (optional = false)
        @Column (name = "contact_email_address", length = 100, nullable = false)
        private String contactEmailAddress;
 
@@ -141,7 +134,7 @@ public class UserContact implements Contact, Comparable<Contact> {
        /**
         * Fax number
         */
-       @JoinColumn (name = "contact_fax_number_id")
+       @JoinColumn (name = "contact_fax_number_id", referencedColumnName = "fax_id", unique = true)
        @OneToOne (targetEntity = FaxNumber.class, cascade = CascadeType.ALL)
        private DialableFaxNumber contactFaxNumber;
 
@@ -163,28 +156,45 @@ public class UserContact implements Contact, Comparable<Contact> {
        /**
         * House number
         */
+       @Basic (optional = false)
        @Column (name = "contact_house_number", length = 5, nullable = false)
        private Short contactHouseNumber;
 
+       /**
+        * Id number
+        */
+       @Id
+       @GeneratedValue (strategy = GenerationType.IDENTITY)
+       @Column (name = "contact_id", length = 20, nullable = false, updatable = false)
+       private Long contactId;
+
        /**
         * Flag whether this contact is user's own data
         */
+       @Basic (optional = false)
        @Column (name = "contact_own_contact", nullable = false)
        private Boolean contactOwnContact;
 
        /**
         * Phone number
         */
-       @JoinColumn (name = "contact_phone_number_id")
+       @JoinColumn (name = "contact_phone_number_id", referencedColumnName = "phone_id", unique = true)
        @OneToOne (targetEntity = LandLineNumber.class, cascade = CascadeType.ALL)
        private DialableLandLineNumber contactPhoneNumber;
 
        /**
         * Street
         */
+       @Basic (optional = false)
        @Column (name = "contact_street", nullable = false)
        private String contactStreet;
 
+       /**
+        * Title (Doctor, etc)
+        */
+       @Column (name = "contact_title")
+       private String contactTitle;
+
        /**
         * When the contact has been updated
         */
@@ -195,17 +205,21 @@ public class UserContact implements Contact, Comparable<Contact> {
        /**
         * ZIP code
         */
+       @Basic (optional = false)
        @Column (name = "contact_zip_code", nullable = false, length = 6)
        private Integer contactZipCode;
 
        /**
         * Constructor for contactGender and names
         * <p>
-        * @param contactGender Gender instance
-        * @param contactFirstName First name
+        * @param contactGender     Gender instance
+        * @param contactFirstName  First name
         * @param contactFamilyName Family name
         */
        public UserContact (final Gender contactGender, final String contactFirstName, final String contactFamilyName) {
+               // Call other constructor
+               this();
+
                // Set all
                this.contactGender = contactGender;
                this.contactFirstName = contactFirstName;
@@ -216,33 +230,8 @@ public class UserContact implements Contact, Comparable<Contact> {
         * Default constructor
         */
        public UserContact () {
-       }
-
-       /**
-        * Compares two contacts with each other
-        * <p>
-        * @param contact Contact comparator
-        * <p>
-        * @return Comparison value
-        */
-       @Override
-       public int compareTo (final Contact contact) {
-               // contact should not be null
-               if (null == contact) {
-                       throw new NullPointerException("contact is null"); //NOI18N
-               }
-
-               // Is the contactId the same?
-               if (Objects.equals(this.getContactId(), contact.getContactId())) {
-                       // Same contactId, means same contact
-                       return 0;
-               } else if (this.getContactId() > contact.getContactId()) {
-                       // This contactId is larger than compared to
-                       return -1;
-               }
-
-               // The other contactId is larger
-               return 1;
+               // Default is not user's own contact
+               this.contactOwnContact = Boolean.FALSE;
        }
 
        @Override
@@ -257,7 +246,7 @@ public class UserContact implements Contact, Comparable<Contact> {
                this.setContactCountry(contact.getContactCountry());
 
                // - phone, fax, email
-               this.setContactPhoneNumber(contact.getContactPhoneNumber());
+               this.setContactLandLineNumber(contact.getContactLandLineNumber());
                this.setContactFaxNumber(contact.getContactFaxNumber());
                this.setContactCellphoneNumber(contact.getContactCellphoneNumber());
 
@@ -288,6 +277,18 @@ public class UserContact implements Contact, Comparable<Contact> {
                                (this.getContactFamilyName().toLowerCase().equals(contact.getContactFamilyName().toLowerCase())));
        }
 
+       @Override
+       public int hashCode () {
+               // Validate contactGender instance
+               assert (this.getContactGender() instanceof Gender) : "gender is not set."; //NOI18N
+
+               int hash = 7;
+               hash = 79 * hash + Objects.hashCode(this.getContactFamilyName());
+               hash = 79 * hash + this.getContactGender().hashCode();
+               hash = 79 * hash + Objects.hashCode(this.getContactFirstName());
+               return hash;
+       }
+
        @Override
        public Date getContactBirthday () {
                return this.contactBirthday;
@@ -328,16 +329,6 @@ public class UserContact implements Contact, Comparable<Contact> {
                this.contactComment = contactComment;
        }
 
-       @Override
-       public Long getContactId () {
-               return this.contactId;
-       }
-
-       @Override
-       public void setContactId (final Long contactId) {
-               this.contactId = contactId;
-       }
-
        @Override
        public Country getContactCountry () {
                return this.contactCountry;
@@ -419,18 +410,28 @@ public class UserContact implements Contact, Comparable<Contact> {
                this.contactHouseNumber = contactHouseNumber;
        }
 
+       @Override
+       public Long getContactId () {
+               return this.contactId;
+       }
+
+       @Override
+       public void setContactId (final Long contactId) {
+               this.contactId = contactId;
+       }
+
        @Override
        public void setContactOwnContact (final Boolean contactOwnContact) {
                this.contactOwnContact = contactOwnContact;
        }
 
        @Override
-       public DialableLandLineNumber getContactPhoneNumber () {
+       public DialableLandLineNumber getContactLandLineNumber () {
                return this.contactPhoneNumber;
        }
 
        @Override
-       public void setContactPhoneNumber (final DialableLandLineNumber contactPhoneNumber) {
+       public void setContactLandLineNumber (final DialableLandLineNumber contactPhoneNumber) {
                this.contactPhoneNumber = contactPhoneNumber;
        }
 
@@ -444,6 +445,16 @@ public class UserContact implements Contact, Comparable<Contact> {
                this.contactStreet = contactStreet;
        }
 
+       @Override
+       public String getContactTitle () {
+               return this.contactTitle;
+       }
+
+       @Override
+       public void setContactTitle (final String contactTitle) {
+               this.contactTitle = contactTitle;
+       }
+
        @Override
        public Calendar getContactUpdated () {
                return this.contactUpdated;
@@ -464,18 +475,6 @@ public class UserContact implements Contact, Comparable<Contact> {
                this.contactZipCode = contactZipCode;
        }
 
-       @Override
-       public int hashCode () {
-               // Validate contactGender instance
-               assert (this.getContactGender() instanceof Gender) : "gender is not set."; //NOI18N
-
-               int hash = 7;
-               hash = 79 * hash + Objects.hashCode(this.getContactFamilyName());
-               hash = 79 * hash + this.getContactGender().hashCode();
-               hash = 79 * hash + Objects.hashCode(this.getContactFirstName());
-               return hash;
-       }
-
        /**
         * Initialization with fake contactGender UNKNOWN
         */