]> git.mxchange.org Git - jcontacts-core.git/commitdiff
Continued a bit:
authorRoland Haeder <roland@mxchange.org>
Fri, 14 Jul 2017 13:34:45 +0000 (15:34 +0200)
committerRoland Haeder <roland@mxchange.org>
Fri, 14 Jul 2017 13:34:45 +0000 (15:34 +0200)
- these fields may be optional, but at least specify personal title,
  first name, family name and country

src/org/mxchange/jcontacts/contact/UserContact.java

index b3e0c0b9d27fd35cca675f03d9e287ca9905bbdd..a373519e354c7b02464311c1c9bcb88c2ffa9030 100644 (file)
-/*
- * Copyright (C) 2016, 2017 Roland Häder
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jcontacts.contact;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.Objects;
-import javax.persistence.Basic;
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Index;
-import javax.persistence.JoinColumn;
-import javax.persistence.Lob;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToOne;
-import javax.persistence.Table;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
-import javax.persistence.Transient;
-import org.mxchange.jcontacts.contact.title.PersonalTitle;
-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.jphone.phonenumbers.mobile.DialableMobileNumber;
-import org.mxchange.jphone.phonenumbers.mobile.MobileNumber;
-
-/**
- * A general contact class which serves as an entity.
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- * @version 0.0
- */
-@Entity (name = "contacts")
-@Table (
-               name = "contacts",
-               indexes = {
-                       @Index (
-                                       name = "contact_personal_title",
-                                       columnList = "contact_personal_title"
-                       )
-               }
-)
-@NamedQueries (
-               {
-                       @NamedQuery (name = "AllContacts", query = "SELECT c FROM contacts AS c ORDER BY c.contactId ASC"),
-                       @NamedQuery (name = "AllContactEmailAddresses", query = "SELECT c.contactEmailAddress FROM contacts AS c ORDER BY c.contactId ASC"),
-                       @NamedQuery (name = "AllContactsByCellphone", query = "SELECT c FROM contacts AS c WHERE c.contactMobileNumber = :mobileNumber ORDER BY c.contactId ASC"),
-                       @NamedQuery (name = "SearchContactById", query = "SELECT c FROM contacts AS c WHERE c.contactId = :contactId"),
-                       @NamedQuery (name = "SearchContactByEmailAddress", query = "SELECT c FROM contacts AS c WHERE LOWER(c.contactEmailAddress) LIKE LOWER(:emailAddress)")
-               }
-)
-@SuppressWarnings ("PersistenceUnitPresent")
-public class UserContact implements Contact {
-
-       /**
-        * Serial number
-        */
-       @Transient
-       private static final long serialVersionUID = 58_744_284_981_863L;
-
-       /**
-        * Birth day
-        */
-       @Column (name = "contact_birthday")
-       @Temporal (TemporalType.DATE)
-       private Date contactBirthday;
-
-       /**
-        * City
-        */
-       @Basic (optional = false)
-       @Column (name = "contact_city", nullable = false, length = 100)
-       private String contactCity;
-
-       /**
-        * Optional comments
-        */
-       @Lob
-       @Column (name = "contact_comment")
-       private String contactComment;
-
-       /**
-        * Country code
-        */
-       @JoinColumn (name = "contact_country_id", nullable = false, referencedColumnName = "country_id")
-       @OneToOne (targetEntity = CountryData.class, cascade = CascadeType.REFRESH, optional = false)
-       private Country contactCountry;
-
-       /**
-        * When the contact has been created
-        */
-       @Basic (optional = false)
-       @Temporal (TemporalType.TIMESTAMP)
-       @Column (name = "contact_created", nullable = false)
-       private Calendar contactCreated;
-
-       /**
-        * Email address
-        */
-       @Column (name = "contact_email_address", length = 100, unique = true)
-       private String contactEmailAddress;
-
-       /**
-        * Family name
-        */
-       @Basic (optional = false)
-       @Column (name = "contact_family_name", length = 100, nullable = false)
-       private String contactFamilyName;
-
-       /**
-        * Fax number
-        */
-       @JoinColumn (name = "contact_fax_number_id", referencedColumnName = "fax_id", unique = true)
-       @OneToOne (targetEntity = FaxNumber.class, cascade = CascadeType.ALL)
-       private DialableFaxNumber contactFaxNumber;
-
-       /**
-        * First name
-        */
-       @Basic (optional = false)
-       @Column (name = "contact_first_name", length = 100, nullable = false)
-       private String contactFirstName;
-
-       /**
-        * House number
-        */
-       @Basic (optional = false)
-       @Column (name = "contact_house_number", nullable = false)
-       private Short contactHouseNumber;
-
-       /**
-        * House number extension
-        */
-       @Column (name = "contact_house_number_extension", length = 5)
-       private String contactHouseNumberExtension;
-
-       /**
-        * Id number
-        */
-       @Id
-       @GeneratedValue (strategy = GenerationType.IDENTITY)
-       @Column (name = "contact_id", nullable = false, updatable = false)
-       private Long contactId;
-
-       /**
-        * Cellphone number
-        */
-       @JoinColumn (name = "contact_mobile_number_id", referencedColumnName = "mobile_id", unique = true)
-       @OneToOne (targetEntity = MobileNumber.class, cascade = CascadeType.ALL)
-       private DialableMobileNumber contactMobileNumber;
-
-       /**
-        * Flag whether this contact is user's own data
-        */
-       @Basic (optional = false)
-       @Column (name = "contact_own_contact", nullable = false)
-       private Boolean contactOwnContact;
-
-       /**
-        * Contact's personal title (Mr./Mrs.)
-        */
-       @Basic (optional = false)
-       @Column (name = "contact_personal_title", nullable = false)
-       @Enumerated (EnumType.STRING)
-       private PersonalTitle contactPersonalTitle;
-
-       /**
-        * Phone number
-        */
-       @JoinColumn (name = "contact_landline_number_id", referencedColumnName = "landline_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
-        */
-       @Temporal (TemporalType.TIMESTAMP)
-       @Column (name = "contact_updated")
-       private Calendar contactUpdated;
-
-       /**
-        * ZIP code
-        */
-       @Basic (optional = false)
-       @Column (name = "contact_zip_code", nullable = false, length = 6)
-       private Integer contactZipCode;
-
-       /**
-        * Default constructor
-        */
-       public UserContact () {
-               // Default is not user's own contact
-               this.contactOwnContact = Boolean.FALSE;
-       }
-
-       /**
-        * Constructor for title and names
-        * <p>
-        * @param contactTitle      Personal title
-        * @param contactFirstName  First name
-        * @param contactFamilyName Family name
-        */
-       public UserContact (final PersonalTitle contactTitle, final String contactFirstName, final String contactFamilyName) {
-               // Call default constructor
-               this();
-
-               // Set all
-               this.contactPersonalTitle = contactTitle;
-               this.contactFirstName = contactFirstName;
-               this.contactFamilyName = contactFamilyName;
-       }
-
-       @Override
-       public boolean equals (final Object object) {
-               if (this == object) {
-                       return true;
-               } else if (null == object) {
-                       return false;
-               } else if (this.getClass() != object.getClass()) {
-                       return false;
-               } else if (!(object instanceof Contact)) {
-                       // Not correct interface
-                       return false;
-               }
-
-               final Contact other = (Contact) object;
-
-               if (!Objects.equals(this.getContactId(), other.getContactId())) {
-                       return false;
-               } else if (!Objects.equals(this.getContactCity(), other.getContactCity())) {
-                       return false;
-               } else if (!Objects.equals(this.getContactEmailAddress(), other.getContactEmailAddress())) {
-                       return false;
-               } else if (!Objects.equals(this.getContactFamilyName(), other.getContactFamilyName())) {
-                       return false;
-               } else if (!Objects.equals(this.getContactFirstName(), other.getContactFirstName())) {
-                       return false;
-               } else if (!Objects.equals(this.getContactStreet(), other.getContactStreet())) {
-                       return false;
-               } else if (!Objects.equals(this.getContactTitle(), other.getContactTitle())) {
-                       return false;
-               } else if (!Objects.equals(this.getContactBirthday(), other.getContactBirthday())) {
-                       return false;
-               } else if (!Objects.equals(this.getContactCountry(), other.getContactCountry())) {
-                       return false;
-               } else if (this.getContactPersonalTitle() != other.getContactPersonalTitle()) {
-                       return false;
-               } else if (!Objects.equals(this.getContactHouseNumber(), other.getContactHouseNumber())) {
-                       return false;
-               } else if (!Objects.equals(this.getContactHouseNumberExtension(), other.getContactHouseNumberExtension())) {
-                       return false;
-               }
-
-               return true;
-       }
-
-       @Override
-       @SuppressWarnings ("ReturnOfDateField")
-       public Date getContactBirthday () {
-               return this.contactBirthday;
-       }
-
-       @Override
-       @SuppressWarnings ("AssignmentToDateFieldFromParameter")
-       public void setContactBirthday (final Date contactBirthday) {
-               this.contactBirthday = contactBirthday;
-       }
-
-       @Override
-       public String getContactCity () {
-               return this.contactCity;
-       }
-
-       @Override
-       public void setContactCity (final String contactCity) {
-               this.contactCity = contactCity;
-       }
-
-       @Override
-       public String getContactComment () {
-               return this.contactComment;
-       }
-
-       @Override
-       public void setContactComment (final String contactComment) {
-               this.contactComment = contactComment;
-       }
-
-       @Override
-       public Country getContactCountry () {
-               return this.contactCountry;
-       }
-
-       @Override
-       public void setContactCountry (final Country contactCountry) {
-               this.contactCountry = contactCountry;
-       }
-
-       @Override
-       @SuppressWarnings ("ReturnOfDateField")
-       public Calendar getContactCreated () {
-               return this.contactCreated;
-       }
-
-       @Override
-       @SuppressWarnings ("AssignmentToDateFieldFromParameter")
-       public void setContactCreated (final Calendar contactCreated) {
-               this.contactCreated = contactCreated;
-       }
-
-       @Override
-       public String getContactEmailAddress () {
-               return this.contactEmailAddress;
-       }
-
-       @Override
-       public void setContactEmailAddress (final String contactEmailAddress) {
-               this.contactEmailAddress = contactEmailAddress;
-       }
-
-       @Override
-       public String getContactFamilyName () {
-               //* NOISY-DEBUG: */ this.getLogger().logTrace("CALLED!");
-               return this.contactFamilyName;
-       }
-
-       @Override
-       public void setContactFamilyName (final String contactFamilyName) {
-               this.contactFamilyName = contactFamilyName;
-       }
-
-       @Override
-       public DialableFaxNumber getContactFaxNumber () {
-               return this.contactFaxNumber;
-       }
-
-       @Override
-       public void setContactFaxNumber (final DialableFaxNumber contactFaxNumber) {
-               this.contactFaxNumber = contactFaxNumber;
-       }
-
-       @Override
-       public String getContactFirstName () {
-               return this.contactFirstName;
-       }
-
-       @Override
-       public void setContactFirstName (final String contactFirstName) {
-               this.contactFirstName = contactFirstName;
-       }
-
-       @Override
-       public Short getContactHouseNumber () {
-               return this.contactHouseNumber;
-       }
-
-       @Override
-       public void setContactHouseNumber (final Short contactHouseNumber) {
-               this.contactHouseNumber = contactHouseNumber;
-       }
-
-       @Override
-       public String getContactHouseNumberExtension () {
-               return this.contactHouseNumberExtension;
-       }
-
-       @Override
-       public void setContactHouseNumberExtension (final String contactHouseNumberExtension) {
-               this.contactHouseNumberExtension = contactHouseNumberExtension;
-       }
-
-       @Override
-       public Long getContactId () {
-               return this.contactId;
-       }
-
-       @Override
-       public void setContactId (final Long contactId) {
-               this.contactId = contactId;
-       }
-
-       @Override
-       public DialableLandLineNumber getContactLandLineNumber () {
-               return this.contactPhoneNumber;
-       }
-
-       @Override
-       public void setContactLandLineNumber (final DialableLandLineNumber contactPhoneNumber) {
-               this.contactPhoneNumber = contactPhoneNumber;
-       }
-
-       @Override
-       public DialableMobileNumber getContactMobileNumber () {
-               return this.contactMobileNumber;
-       }
-
-       @Override
-       public void setContactMobileNumber (final DialableMobileNumber contactMobileNumber) {
-               this.contactMobileNumber = contactMobileNumber;
-       }
-
-       @Override
-       public void setContactOwnContact (final Boolean contactOwnContact) {
-               this.contactOwnContact = contactOwnContact;
-       }
-
-       @Override
-       public PersonalTitle getContactPersonalTitle () {
-               return this.contactPersonalTitle;
-       }
-
-       @Override
-       public void setContactPersonalTitle (final PersonalTitle contactPersonalTitle) {
-               this.contactPersonalTitle = contactPersonalTitle;
-       }
-
-       @Override
-       public String getContactStreet () {
-               return this.contactStreet;
-       }
-
-       @Override
-       public void setContactStreet (final String contactStreet) {
-               this.contactStreet = contactStreet;
-       }
-
-       @Override
-       public String getContactTitle () {
-               return this.contactTitle;
-       }
-
-       @Override
-       public void setContactTitle (final String contactTitle) {
-               this.contactTitle = contactTitle;
-       }
-
-       @Override
-       @SuppressWarnings ("ReturnOfDateField")
-       public Calendar getContactUpdated () {
-               return this.contactUpdated;
-       }
-
-       @Override
-       @SuppressWarnings ("AssignmentToDateFieldFromParameter")
-       public void setContactUpdated (final Calendar contactUpdated) {
-               this.contactUpdated = contactUpdated;
-       }
-
-       @Override
-       public Integer getContactZipCode () {
-               return this.contactZipCode;
-       }
-
-       @Override
-       public void setContactZipCode (final Integer contactZipCode) {
-               this.contactZipCode = contactZipCode;
-       }
-
-       @Override
-       public int hashCode () {
-               int hash = 5;
-
-               hash = 29 * hash + Objects.hashCode(this.getContactBirthday());
-               hash = 29 * hash + Objects.hashCode(this.getContactCity());
-               hash = 29 * hash + Objects.hashCode(this.getContactCountry());
-               hash = 29 * hash + Objects.hashCode(this.getContactEmailAddress());
-               hash = 29 * hash + Objects.hashCode(this.getContactFamilyName());
-               hash = 29 * hash + Objects.hashCode(this.getContactFirstName());
-               hash = 29 * hash + Objects.hashCode(this.getContactPersonalTitle());
-               hash = 29 * hash + Objects.hashCode(this.getContactHouseNumber());
-               hash = 29 * hash + Objects.hashCode(this.getContactHouseNumberExtension());
-               hash = 29 * hash + Objects.hashCode(this.getContactId());
-               hash = 29 * hash + Objects.hashCode(this.getContactStreet());
-               hash = 29 * hash + Objects.hashCode(this.getContactTitle());
-
-               return hash;
-       }
-
-       @Override
-       public Boolean isOwnContact () {
-               return this.contactOwnContact;
-       }
-
-}
+/*\r
+ * Copyright (C) 2016, 2017 Roland Häder\r
+ *\r
+ * This program is free software: you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation, either version 3 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
+ */\r
+package org.mxchange.jcontacts.contact;\r
+\r
+import java.util.Calendar;\r
+import java.util.Date;\r
+import java.util.Objects;\r
+import javax.persistence.Basic;\r
+import javax.persistence.CascadeType;\r
+import javax.persistence.Column;\r
+import javax.persistence.Entity;\r
+import javax.persistence.EnumType;\r
+import javax.persistence.Enumerated;\r
+import javax.persistence.GeneratedValue;\r
+import javax.persistence.GenerationType;\r
+import javax.persistence.Id;\r
+import javax.persistence.Index;\r
+import javax.persistence.JoinColumn;\r
+import javax.persistence.Lob;\r
+import javax.persistence.NamedQueries;\r
+import javax.persistence.NamedQuery;\r
+import javax.persistence.OneToOne;\r
+import javax.persistence.Table;\r
+import javax.persistence.Temporal;\r
+import javax.persistence.TemporalType;\r
+import javax.persistence.Transient;\r
+import org.mxchange.jcontacts.contact.title.PersonalTitle;\r
+import org.mxchange.jcountry.data.Country;\r
+import org.mxchange.jcountry.data.CountryData;\r
+import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber;\r
+import org.mxchange.jphone.phonenumbers.fax.FaxNumber;\r
+import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber;\r
+import org.mxchange.jphone.phonenumbers.landline.LandLineNumber;\r
+import org.mxchange.jphone.phonenumbers.mobile.DialableMobileNumber;\r
+import org.mxchange.jphone.phonenumbers.mobile.MobileNumber;\r
+\r
+/**\r
+ * A general contact class which serves as an entity.\r
+ * <p>\r
+ * @author Roland Häder<roland@mxchange.org>\r
+ * @version 0.0\r
+ */\r
+@Entity (name = "contacts")\r
+@Table (\r
+               name = "contacts",\r
+               indexes = {\r
+                       @Index (\r
+                                       name = "contact_personal_title",\r
+                                       columnList = "contact_personal_title"\r
+                       )\r
+               }\r
+)\r
+@NamedQueries (\r
+               {\r
+                       @NamedQuery (name = "AllContacts", query = "SELECT c FROM contacts AS c ORDER BY c.contactId ASC"),\r
+                       @NamedQuery (name = "AllContactEmailAddresses", query = "SELECT c.contactEmailAddress FROM contacts AS c ORDER BY c.contactId ASC"),\r
+                       @NamedQuery (name = "AllContactsByCellphone", query = "SELECT c FROM contacts AS c WHERE c.contactMobileNumber = :mobileNumber ORDER BY c.contactId ASC"),\r
+                       @NamedQuery (name = "SearchContactById", query = "SELECT c FROM contacts AS c WHERE c.contactId = :contactId"),\r
+                       @NamedQuery (name = "SearchContactByEmailAddress", query = "SELECT c FROM contacts AS c WHERE LOWER(c.contactEmailAddress) LIKE LOWER(:emailAddress)")\r
+               }\r
+)\r
+@SuppressWarnings ("PersistenceUnitPresent")\r
+public class UserContact implements Contact {\r
+\r
+       /**\r
+        * Serial number\r
+        */\r
+       @Transient\r
+       private static final long serialVersionUID = 58_744_284_981_863L;\r
+\r
+       /**\r
+        * Birth day\r
+        */\r
+       @Column (name = "contact_birthday")\r
+       @Temporal (TemporalType.DATE)\r
+       private Date contactBirthday;\r
+\r
+       /**\r
+        * City\r
+        */\r
+       @Column (name = "contact_city", length = 100)\r
+       private String contactCity;\r
+\r
+       /**\r
+        * Optional comments\r
+        */\r
+       @Lob\r
+       @Column (name = "contact_comment")\r
+       private String contactComment;\r
+\r
+       /**\r
+        * Country code\r
+        */\r
+       @JoinColumn (name = "contact_country_id", nullable = false, referencedColumnName = "country_id")\r
+       @OneToOne (targetEntity = CountryData.class, cascade = CascadeType.REFRESH, optional = false)\r
+       private Country contactCountry;\r
+\r
+       /**\r
+        * When the contact has been created\r
+        */\r
+       @Basic (optional = false)\r
+       @Temporal (TemporalType.TIMESTAMP)\r
+       @Column (name = "contact_created", nullable = false)\r
+       private Calendar contactCreated;\r
+\r
+       /**\r
+        * Email address\r
+        */\r
+       @Column (name = "contact_email_address", length = 100, unique = true)\r
+       private String contactEmailAddress;\r
+\r
+       /**\r
+        * Family name\r
+        */\r
+       @Basic (optional = false)\r
+       @Column (name = "contact_family_name", length = 100, nullable = false)\r
+       private String contactFamilyName;\r
+\r
+       /**\r
+        * Fax number\r
+        */\r
+       @JoinColumn (name = "contact_fax_number_id", referencedColumnName = "fax_id", unique = true)\r
+       @OneToOne (targetEntity = FaxNumber.class, cascade = CascadeType.ALL)\r
+       private DialableFaxNumber contactFaxNumber;\r
+\r
+       /**\r
+        * First name\r
+        */\r
+       @Basic (optional = false)\r
+       @Column (name = "contact_first_name", length = 100, nullable = false)\r
+       private String contactFirstName;\r
+\r
+       /**\r
+        * House number\r
+        */\r
+       @Column (name = "contact_house_number")\r
+       private Short contactHouseNumber;\r
+\r
+       /**\r
+        * House number extension\r
+        */\r
+       @Column (name = "contact_house_number_extension", length = 5)\r
+       private String contactHouseNumberExtension;\r
+\r
+       /**\r
+        * Id number\r
+        */\r
+       @Id\r
+       @GeneratedValue (strategy = GenerationType.IDENTITY)\r
+       @Column (name = "contact_id", nullable = false, updatable = false)\r
+       private Long contactId;\r
+\r
+       /**\r
+        * Cellphone number\r
+        */\r
+       @JoinColumn (name = "contact_mobile_number_id", referencedColumnName = "mobile_id", unique = true)\r
+       @OneToOne (targetEntity = MobileNumber.class, cascade = CascadeType.ALL)\r
+       private DialableMobileNumber contactMobileNumber;\r
+\r
+       /**\r
+        * Flag whether this contact is user's own data\r
+        */\r
+       @Basic (optional = false)\r
+       @Column (name = "contact_own_contact", nullable = false)\r
+       private Boolean contactOwnContact;\r
+\r
+       /**\r
+        * Contact's personal title (Mr./Mrs.)\r
+        */\r
+       @Basic (optional = false)\r
+       @Column (name = "contact_personal_title", nullable = false)\r
+       @Enumerated (EnumType.STRING)\r
+       private PersonalTitle contactPersonalTitle;\r
+\r
+       /**\r
+        * Phone number\r
+        */\r
+       @JoinColumn (name = "contact_landline_number_id", referencedColumnName = "landline_id", unique = true)\r
+       @OneToOne (targetEntity = LandLineNumber.class, cascade = CascadeType.ALL)\r
+       private DialableLandLineNumber contactPhoneNumber;\r
+\r
+       /**\r
+        * Street\r
+        */\r
+       @Column (name = "contact_street")\r
+       private String contactStreet;\r
+\r
+       /**\r
+        * Title (Doctor, etc)\r
+        */\r
+       @Column (name = "contact_title")\r
+       private String contactTitle;\r
+\r
+       /**\r
+        * When the contact has been updated\r
+        */\r
+       @Temporal (TemporalType.TIMESTAMP)\r
+       @Column (name = "contact_updated")\r
+       private Calendar contactUpdated;\r
+\r
+       /**\r
+        * ZIP code\r
+        */\r
+       @Column (name = "contact_zip_code")\r
+       private Integer contactZipCode;\r
+\r
+       /**\r
+        * Default constructor\r
+        */\r
+       public UserContact () {\r
+               // Default is not user's own contact\r
+               this.contactOwnContact = Boolean.FALSE;\r
+       }\r
+\r
+       /**\r
+        * Constructor for title and names\r
+        * <p>\r
+        * @param contactTitle      Personal title\r
+        * @param contactFirstName  First name\r
+        * @param contactFamilyName Family name\r
+        */\r
+       public UserContact (final PersonalTitle contactTitle, final String contactFirstName, final String contactFamilyName) {\r
+               // Call default constructor\r
+               this();\r
+\r
+               // Set all\r
+               this.contactPersonalTitle = contactTitle;\r
+               this.contactFirstName = contactFirstName;\r
+               this.contactFamilyName = contactFamilyName;\r
+       }\r
+\r
+       @Override\r
+       public boolean equals (final Object object) {\r
+               if (this == object) {\r
+                       return true;\r
+               } else if (null == object) {\r
+                       return false;\r
+               } else if (this.getClass() != object.getClass()) {\r
+                       return false;\r
+               } else if (!(object instanceof Contact)) {\r
+                       // Not correct interface\r
+                       return false;\r
+               }\r
+\r
+               final Contact other = (Contact) object;\r
+\r
+               if (!Objects.equals(this.getContactId(), other.getContactId())) {\r
+                       return false;\r
+               } else if (!Objects.equals(this.getContactCity(), other.getContactCity())) {\r
+                       return false;\r
+               } else if (!Objects.equals(this.getContactEmailAddress(), other.getContactEmailAddress())) {\r
+                       return false;\r
+               } else if (!Objects.equals(this.getContactFamilyName(), other.getContactFamilyName())) {\r
+                       return false;\r
+               } else if (!Objects.equals(this.getContactFirstName(), other.getContactFirstName())) {\r
+                       return false;\r
+               } else if (!Objects.equals(this.getContactStreet(), other.getContactStreet())) {\r
+                       return false;\r
+               } else if (!Objects.equals(this.getContactTitle(), other.getContactTitle())) {\r
+                       return false;\r
+               } else if (!Objects.equals(this.getContactBirthday(), other.getContactBirthday())) {\r
+                       return false;\r
+               } else if (!Objects.equals(this.getContactCountry(), other.getContactCountry())) {\r
+                       return false;\r
+               } else if (this.getContactPersonalTitle() != other.getContactPersonalTitle()) {\r
+                       return false;\r
+               } else if (!Objects.equals(this.getContactHouseNumber(), other.getContactHouseNumber())) {\r
+                       return false;\r
+               } else if (!Objects.equals(this.getContactHouseNumberExtension(), other.getContactHouseNumberExtension())) {\r
+                       return false;\r
+               }\r
+\r
+               return true;\r
+       }\r
+\r
+       @Override\r
+       @SuppressWarnings ("ReturnOfDateField")\r
+       public Date getContactBirthday () {\r
+               return this.contactBirthday;\r
+       }\r
+\r
+       @Override\r
+       @SuppressWarnings ("AssignmentToDateFieldFromParameter")\r
+       public void setContactBirthday (final Date contactBirthday) {\r
+               this.contactBirthday = contactBirthday;\r
+       }\r
+\r
+       @Override\r
+       public String getContactCity () {\r
+               return this.contactCity;\r
+       }\r
+\r
+       @Override\r
+       public void setContactCity (final String contactCity) {\r
+               this.contactCity = contactCity;\r
+       }\r
+\r
+       @Override\r
+       public String getContactComment () {\r
+               return this.contactComment;\r
+       }\r
+\r
+       @Override\r
+       public void setContactComment (final String contactComment) {\r
+               this.contactComment = contactComment;\r
+       }\r
+\r
+       @Override\r
+       public Country getContactCountry () {\r
+               return this.contactCountry;\r
+       }\r
+\r
+       @Override\r
+       public void setContactCountry (final Country contactCountry) {\r
+               this.contactCountry = contactCountry;\r
+       }\r
+\r
+       @Override\r
+       @SuppressWarnings ("ReturnOfDateField")\r
+       public Calendar getContactCreated () {\r
+               return this.contactCreated;\r
+       }\r
+\r
+       @Override\r
+       @SuppressWarnings ("AssignmentToDateFieldFromParameter")\r
+       public void setContactCreated (final Calendar contactCreated) {\r
+               this.contactCreated = contactCreated;\r
+       }\r
+\r
+       @Override\r
+       public String getContactEmailAddress () {\r
+               return this.contactEmailAddress;\r
+       }\r
+\r
+       @Override\r
+       public void setContactEmailAddress (final String contactEmailAddress) {\r
+               this.contactEmailAddress = contactEmailAddress;\r
+       }\r
+\r
+       @Override\r
+       public String getContactFamilyName () {\r
+               //* NOISY-DEBUG: */ this.getLogger().logTrace("CALLED!");\r
+               return this.contactFamilyName;\r
+       }\r
+\r
+       @Override\r
+       public void setContactFamilyName (final String contactFamilyName) {\r
+               this.contactFamilyName = contactFamilyName;\r
+       }\r
+\r
+       @Override\r
+       public DialableFaxNumber getContactFaxNumber () {\r
+               return this.contactFaxNumber;\r
+       }\r
+\r
+       @Override\r
+       public void setContactFaxNumber (final DialableFaxNumber contactFaxNumber) {\r
+               this.contactFaxNumber = contactFaxNumber;\r
+       }\r
+\r
+       @Override\r
+       public String getContactFirstName () {\r
+               return this.contactFirstName;\r
+       }\r
+\r
+       @Override\r
+       public void setContactFirstName (final String contactFirstName) {\r
+               this.contactFirstName = contactFirstName;\r
+       }\r
+\r
+       @Override\r
+       public Short getContactHouseNumber () {\r
+               return this.contactHouseNumber;\r
+       }\r
+\r
+       @Override\r
+       public void setContactHouseNumber (final Short contactHouseNumber) {\r
+               this.contactHouseNumber = contactHouseNumber;\r
+       }\r
+\r
+       @Override\r
+       public String getContactHouseNumberExtension () {\r
+               return this.contactHouseNumberExtension;\r
+       }\r
+\r
+       @Override\r
+       public void setContactHouseNumberExtension (final String contactHouseNumberExtension) {\r
+               this.contactHouseNumberExtension = contactHouseNumberExtension;\r
+       }\r
+\r
+       @Override\r
+       public Long getContactId () {\r
+               return this.contactId;\r
+       }\r
+\r
+       @Override\r
+       public void setContactId (final Long contactId) {\r
+               this.contactId = contactId;\r
+       }\r
+\r
+       @Override\r
+       public DialableLandLineNumber getContactLandLineNumber () {\r
+               return this.contactPhoneNumber;\r
+       }\r
+\r
+       @Override\r
+       public void setContactLandLineNumber (final DialableLandLineNumber contactPhoneNumber) {\r
+               this.contactPhoneNumber = contactPhoneNumber;\r
+       }\r
+\r
+       @Override\r
+       public DialableMobileNumber getContactMobileNumber () {\r
+               return this.contactMobileNumber;\r
+       }\r
+\r
+       @Override\r
+       public void setContactMobileNumber (final DialableMobileNumber contactMobileNumber) {\r
+               this.contactMobileNumber = contactMobileNumber;\r
+       }\r
+\r
+       @Override\r
+       public void setContactOwnContact (final Boolean contactOwnContact) {\r
+               this.contactOwnContact = contactOwnContact;\r
+       }\r
+\r
+       @Override\r
+       public PersonalTitle getContactPersonalTitle () {\r
+               return this.contactPersonalTitle;\r
+       }\r
+\r
+       @Override\r
+       public void setContactPersonalTitle (final PersonalTitle contactPersonalTitle) {\r
+               this.contactPersonalTitle = contactPersonalTitle;\r
+       }\r
+\r
+       @Override\r
+       public String getContactStreet () {\r
+               return this.contactStreet;\r
+       }\r
+\r
+       @Override\r
+       public void setContactStreet (final String contactStreet) {\r
+               this.contactStreet = contactStreet;\r
+       }\r
+\r
+       @Override\r
+       public String getContactTitle () {\r
+               return this.contactTitle;\r
+       }\r
+\r
+       @Override\r
+       public void setContactTitle (final String contactTitle) {\r
+               this.contactTitle = contactTitle;\r
+       }\r
+\r
+       @Override\r
+       @SuppressWarnings ("ReturnOfDateField")\r
+       public Calendar getContactUpdated () {\r
+               return this.contactUpdated;\r
+       }\r
+\r
+       @Override\r
+       @SuppressWarnings ("AssignmentToDateFieldFromParameter")\r
+       public void setContactUpdated (final Calendar contactUpdated) {\r
+               this.contactUpdated = contactUpdated;\r
+       }\r
+\r
+       @Override\r
+       public Integer getContactZipCode () {\r
+               return this.contactZipCode;\r
+       }\r
+\r
+       @Override\r
+       public void setContactZipCode (final Integer contactZipCode) {\r
+               this.contactZipCode = contactZipCode;\r
+       }\r
+\r
+       @Override\r
+       public int hashCode () {\r
+               int hash = 5;\r
+\r
+               hash = 29 * hash + Objects.hashCode(this.getContactBirthday());\r
+               hash = 29 * hash + Objects.hashCode(this.getContactCity());\r
+               hash = 29 * hash + Objects.hashCode(this.getContactCountry());\r
+               hash = 29 * hash + Objects.hashCode(this.getContactEmailAddress());\r
+               hash = 29 * hash + Objects.hashCode(this.getContactFamilyName());\r
+               hash = 29 * hash + Objects.hashCode(this.getContactFirstName());\r
+               hash = 29 * hash + Objects.hashCode(this.getContactPersonalTitle());\r
+               hash = 29 * hash + Objects.hashCode(this.getContactHouseNumber());\r
+               hash = 29 * hash + Objects.hashCode(this.getContactHouseNumberExtension());\r
+               hash = 29 * hash + Objects.hashCode(this.getContactId());\r
+               hash = 29 * hash + Objects.hashCode(this.getContactStreet());\r
+               hash = 29 * hash + Objects.hashCode(this.getContactTitle());\r
+\r
+               return hash;\r
+       }\r
+\r
+       @Override\r
+       public Boolean isOwnContact () {\r
+               return this.contactOwnContact;\r
+       }\r
+\r
+}\r