X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2Forg%2Fmxchange%2Fjcontacts%2Fcontact%2FUserContact.java;h=c4f6ba74bb906fd3a7b4ed4756292aeed076e428;hb=f67911d2934adfe8a9b5b4f46753a7a24a0dd513;hp=8aeda22442d514c8002a5b05394bc16e1cdf6823;hpb=6a9a2ad4b7556c3354a1eadf85555ba12743ddb2;p=jcontacts-core.git diff --git a/src/org/mxchange/jcontacts/contact/UserContact.java b/src/org/mxchange/jcontacts/contact/UserContact.java index 8aeda22..c4f6ba7 100644 --- a/src/org/mxchange/jcontacts/contact/UserContact.java +++ b/src/org/mxchange/jcontacts/contact/UserContact.java @@ -31,6 +31,8 @@ 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; @@ -58,14 +60,19 @@ import org.mxchange.jphone.phonenumbers.landline.LandLineNumber; @Index ( name = "contact_gender", columnList = "contact_gender" - ), - @Index ( - name = "contact_email_address", - unique = true, - columnList = "contact_email_address" ) } ) +@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.contactCellphoneNumber = :cellPhone 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 { /** @@ -119,8 +126,7 @@ public class UserContact implements Contact { /** * Email address */ - @Basic (optional = false) - @Column (name = "contact_email_address", length = 100, nullable = false) + @Column (name = "contact_email_address", length = 100, unique = true) private String contactEmailAddress; /** @@ -156,9 +162,15 @@ public class UserContact implements Contact { * House number */ @Basic (optional = false) - @Column (name = "contact_house_number", length = 5, nullable = 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 */ @@ -214,16 +226,13 @@ public class UserContact implements Contact { public UserContact () { // Default is not user's own contact this.contactOwnContact = Boolean.FALSE; - - // Unknown gender - this.contactGender = Gender.UNKNOWN; } /** * Constructor for contactGender and names *

- * @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) { @@ -238,11 +247,21 @@ public class UserContact implements Contact { @Override public void copyAll (final Contact contact) { + // Contact should be valid + if (null == contact) { + // Throw NPE + throw new NullPointerException("contact is null"); //NOI18N + } + // Copy all: // - base data + this.setContactGender(contact.getContactGender()); + this.setContactTitle(contact.getContactTitle()); this.setContactFirstName(contact.getContactFirstName()); this.setContactFamilyName(contact.getContactFamilyName()); this.setContactStreet(contact.getContactStreet()); + this.setContactHouseNumber(contact.getContactHouseNumber()); + this.setContactHouseNumberExtension(contact.getContactHouseNumberExtension()); this.setContactZipCode(contact.getContactZipCode()); this.setContactCity(contact.getContactCity()); this.setContactCountry(contact.getContactCountry()); @@ -261,42 +280,56 @@ public class UserContact implements Contact { @Override public boolean equals (final Object object) { - // Is it same type? - if (!(object instanceof UserContact)) { - // Not equal types + 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; } - // Try to cast - Contact contact = (Contact) object; - - // Now test some data TODO Definedly needs improvement - return ((this.getContactGender().equals(contact.getContactGender())) && - (this.getContactFirstName().toLowerCase().equals(contact.getContactFirstName().toLowerCase())) && - (this.getContactFamilyName().toLowerCase().equals(contact.getContactFamilyName().toLowerCase()))); - } + final Contact other = (Contact) object; - @Override - public int hashCode () { - // Validate contactGender instance - assert (this.getContactGender() instanceof Gender) : "gender is not set."; //NOI18N + 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.getContactGender() != other.getContactGender()) { + return false; + } else if (!Objects.equals(this.getContactHouseNumber(), other.getContactHouseNumber())) { + return false; + } else if (!Objects.equals(this.getContactHouseNumberExtension(), other.getContactHouseNumberExtension())) { + return false; + } else if (!Objects.equals(this.getContactId(), other.getContactId())) { + return false; + } - 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; + return true; } @Override + @SuppressWarnings ("ReturnOfDateField") public Date getContactBirthday () { return this.contactBirthday; } @Override + @SuppressWarnings ("AssignmentToDateFieldFromParameter") public void setContactBirthday (final Date contactBirthday) { this.contactBirthday = contactBirthday; } @@ -342,11 +375,13 @@ public class UserContact implements Contact { } @Override + @SuppressWarnings ("ReturnOfDateField") public Calendar getContactCreated () { return this.contactCreated; } @Override + @SuppressWarnings ("AssignmentToDateFieldFromParameter") public void setContactCreated (final Calendar contactCreated) { this.contactCreated = contactCreated; } @@ -412,6 +447,16 @@ public class UserContact implements Contact { 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; @@ -422,11 +467,6 @@ public class UserContact implements Contact { this.contactId = contactId; } - @Override - public void setContactOwnContact (final Boolean contactOwnContact) { - this.contactOwnContact = contactOwnContact; - } - @Override public DialableLandLineNumber getContactLandLineNumber () { return this.contactPhoneNumber; @@ -437,6 +477,11 @@ public class UserContact implements Contact { this.contactPhoneNumber = contactPhoneNumber; } + @Override + public void setContactOwnContact (final Boolean contactOwnContact) { + this.contactOwnContact = contactOwnContact; + } + @Override public String getContactStreet () { return this.contactStreet; @@ -458,11 +503,13 @@ public class UserContact implements Contact { } @Override + @SuppressWarnings ("ReturnOfDateField") public Calendar getContactUpdated () { return this.contactUpdated; } @Override + @SuppressWarnings ("AssignmentToDateFieldFromParameter") public void setContactUpdated (final Calendar contactUpdated) { this.contactUpdated = contactUpdated; } @@ -477,8 +524,29 @@ public class UserContact implements Contact { 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.getContactGender()); + 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; } + }