X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2Forg%2Fmxchange%2Fjcontacts%2Fcontact%2FUserContact.java;h=a4d512aebcb16ab254e5b83d0984e82f7d8f46ea;hb=f71f5749ac3736ac59318c3c13d64729db67c2ed;hp=47554565789d91bf89924f6fbe5d043b7e9e625f;hpb=a4a43cf6db10c0552a783a9899a2824c1657d0b8;p=jcontacts-core.git diff --git a/src/org/mxchange/jcontacts/contact/UserContact.java b/src/org/mxchange/jcontacts/contact/UserContact.java index 4755456..a4d512a 100644 --- a/src/org/mxchange/jcontacts/contact/UserContact.java +++ b/src/org/mxchange/jcontacts/contact/UserContact.java @@ -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 @@ -21,18 +21,31 @@ import java.util.Date; import java.util.Objects; import javax.annotation.PostConstruct; 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.FetchType; 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.OneToOne; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import org.mxchange.jcontacts.contact.gender.Gender; +import org.mxchange.jcountry.data.Country; +import org.mxchange.jcountry.data.CountryData; +import org.mxchange.jphone.phonenumbers.cellphone.CellphoneNumber; +import org.mxchange.jphone.phonenumbers.cellphone.DialableCellphoneNumber; +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; /** * A general contact class which should only be extended. @@ -41,7 +54,20 @@ import org.mxchange.jcontacts.contact.gender.Gender; * @version 0.0 */ @Entity (name = "contacts") -@Table (name = "contacts") +@Table ( + name = "contacts", + indexes = { + @Index ( + name = "contact_gender", + columnList = "contact_gender" + ), + @Index ( + name = "contact_email_address", + unique = true, + columnList = "contact_email_address" + ) + } +) public class UserContact implements Contact, Comparable { /** @@ -52,141 +78,144 @@ public class UserContact implements Contact, Comparable { /** * Birth day */ - @Column (name = "birthday") + @Column (name = "contact_birthday") @Temporal (TemporalType.DATE) - private Date birthday; + private Date contactBirthday; /** * Cellphone number */ - @Column (name = "cellphone_number", length = 100) - private String cellphoneNumber; + @JoinColumn (name = "contact_cellphone_number_id") + @OneToOne (targetEntity = CellphoneNumber.class, cascade = CascadeType.ALL) + private DialableCellphoneNumber contactCellphoneNumber; /** * City */ - @Column (name = "city", nullable = false, length = 100) - private String city; + @Column (name = "contact_city", nullable = false, length = 100) + private String contactCity; /** * Optional comments */ @Lob - @Column (name = "comment") - private String comment; - - /** - * Company name - */ - @Column (name = "company_name", nullable = false) - private String companyName; - - /** - * Id number - */ - @Id - @GeneratedValue (strategy = GenerationType.IDENTITY) - @Column (name = "contact_id", length = 20, updatable = false) - private Long contactId; + @Column (name = "contact_comment") + private String contactComment; /** * Country code */ - @Column (name = "country_code", length = 2, nullable = false) - private String countryCode; + @JoinColumn (name = "contact_country_id", nullable = false) + @OneToOne (targetEntity = CountryData.class, cascade = CascadeType.MERGE, optional = false, fetch = FetchType.EAGER) + private Country contactCountry; /** * When the contact has been created */ @Basic (optional = false) @Temporal (TemporalType.TIMESTAMP) - @Column (name = "created", nullable = false) - private Calendar created; + @Column (name = "contact_created", nullable = false) + private Calendar contactCreated; /** * Email address */ - @Column (name = "email_address", length = 100, nullable = false) - private String emailAddress; + @Column (name = "contact_email_address", length = 100, nullable = false) + private String contactEmailAddress; /** * Family name */ @Basic (optional = false) - @Column (name = "family_name", length = 100, nullable = false) - private String familyName; + @Column (name = "contact_family_name", length = 100, nullable = false) + private String contactFamilyName; /** * Fax number */ - @Column (name = "fax_number", length = 100) - private String faxNumber; + @JoinColumn (name = "contact_fax_number_id") + @OneToOne (targetEntity = FaxNumber.class, cascade = CascadeType.ALL) + private DialableFaxNumber contactFaxNumber; /** * First name */ @Basic (optional = false) - @Column (name = "first_name", length = 100, nullable = false) - private String firstName; + @Column (name = "contact_first_name", length = 100, nullable = false) + private String contactFirstName; /** * Gender instance */ @Basic (optional = false) - @Column (name = "gender", nullable = false) + @Column (name = "contact_gender", nullable = false) @Enumerated (EnumType.STRING) - private Gender gender; + private Gender contactGender; /** * House number */ - @Column (name = "house_number", length = 5, nullable = false) - private Short houseNumber; + @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 */ - @Column (name = "own_contact", nullable = false) - private Boolean ownContact; + @Column (name = "contact_own_contact", nullable = false) + private Boolean contactOwnContact; /** * Phone number */ - @Column (name = "phone_number", length = 100) - private String phoneNumber; + @JoinColumn (name = "contact_phone_number_id") + @OneToOne (targetEntity = LandLineNumber.class, cascade = CascadeType.ALL) + private DialableLandLineNumber contactPhoneNumber; /** * Street */ - @Column (name = "street", nullable = false) - private String street; + @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 = "updated") - private Calendar updated; + @Column (name = "contact_updated") + private Calendar contactUpdated; /** * ZIP code */ - @Column (name = "zip_code", nullable = false, length = 6) - private Long zipCode; + @Column (name = "contact_zip_code", nullable = false, length = 6) + private Integer contactZipCode; /** - * Constructor for gender and names + * Constructor for contactGender and names *

- * @param gender Gender instance - * @param firstName First name - * @param familyName Family name - * @param companyName Company name + * @param contactGender Gender instance + * @param contactFirstName First name + * @param contactFamilyName Family name */ - public UserContact (final Gender gender, final String firstName, final String familyName, final String companyName) { + public UserContact (final Gender contactGender, final String contactFirstName, final String contactFamilyName) { // Set all - this.gender = gender; - this.firstName = firstName; - this.familyName = familyName; + this.contactGender = contactGender; + this.contactFirstName = contactFirstName; + this.contactFamilyName = contactFamilyName; } /** @@ -199,6 +228,7 @@ public class UserContact implements Contact, Comparable { * Compares two contacts with each other *

* @param contact Contact comparator + *

* @return Comparison value */ @Override @@ -225,32 +255,25 @@ public class UserContact implements Contact, Comparable { public void copyAll (final Contact contact) { // Copy all: // - base data - this.setFirstName(contact.getFirstName()); - this.setFamilyName(contact.getFamilyName()); - this.setCompanyName(contact.getCompanyName()); - this.setStreet(contact.getStreet()); - this.setZipCode(contact.getZipCode()); - this.setCity(contact.getCity()); - this.setCountryCode(contact.getCountryCode()); + this.setContactFirstName(contact.getContactFirstName()); + this.setContactFamilyName(contact.getContactFamilyName()); + this.setContactStreet(contact.getContactStreet()); + this.setContactZipCode(contact.getContactZipCode()); + this.setContactCity(contact.getContactCity()); + this.setContactCountry(contact.getContactCountry()); // - phone, fax, email - this.setPhoneNumber(contact.getPhoneNumber()); - this.setFaxNumber(contact.getFaxNumber()); - this.setCellphoneNumber(contact.getCellphoneNumber()); + this.setContactPhoneNumber(contact.getContactPhoneNumber()); + this.setContactFaxNumber(contact.getContactFaxNumber()); + this.setContactCellphoneNumber(contact.getContactCellphoneNumber()); // - other data - this.setBirthday(contact.getBirthday()); - this.setComment(contact.getComment()); - this.setCreated(contact.getCreated()); - this.setUpdated(contact.getUpdated()); + this.setContactBirthday(contact.getContactBirthday()); + this.setContactComment(contact.getContactComment()); + this.setContactCreated(contact.getContactCreated()); + this.setContactUpdated(contact.getContactUpdated()); } - /** - * Check if contacts are same or throw an exception - *

- * @param object Other possible contact class - * @return Whether both contacts are same TODO Needs a lot improvements - */ @Override public boolean equals (final Object object) { // Is it same type? @@ -266,220 +289,219 @@ public class UserContact implements Contact, Comparable { Contact contact = (Contact) object; // Now test some data TODO Definedly needs improvement - return ((this.getGender().equals(contact.getGender())) - && (this.getFirstName().toLowerCase().equals(contact.getFirstName().toLowerCase())) - && (this.getFamilyName().toLowerCase().equals(contact.getFamilyName().toLowerCase()))); + return ((this.getContactGender().equals(contact.getContactGender())) + && (this.getContactFirstName().toLowerCase().equals(contact.getContactFirstName().toLowerCase())) + && (this.getContactFamilyName().toLowerCase().equals(contact.getContactFamilyName().toLowerCase()))); } @Override - public Date getBirthday () { - return this.birthday; + public Date getContactBirthday () { + return this.contactBirthday; } @Override - public void setBirthday (final Date birthday) { - this.birthday = birthday; + public void setContactBirthday (final Date contactBirthday) { + this.contactBirthday = contactBirthday; } @Override - public String getCellphoneNumber () { - return this.cellphoneNumber; + public DialableCellphoneNumber getContactCellphoneNumber () { + return this.contactCellphoneNumber; } @Override - public void setCellphoneNumber (final String cellphoneNumber) { - this.cellphoneNumber = cellphoneNumber; + public void setContactCellphoneNumber (final DialableCellphoneNumber contactCellphoneNumber) { + this.contactCellphoneNumber = contactCellphoneNumber; } @Override - public String getCity () { - return this.city; + public String getContactCity () { + return this.contactCity; } @Override - public void setCity (final String city) { - this.city = city; + public void setContactCity (final String contactCity) { + this.contactCity = contactCity; } @Override - public String getComment () { - return this.comment; + public String getContactComment () { + return this.contactComment; } @Override - public void setComment (final String comment) { - this.comment = comment; + public void setContactComment (final String contactComment) { + this.contactComment = contactComment; } @Override - public String getCompanyName () { - return this.companyName; + public Country getContactCountry () { + return this.contactCountry; } @Override - public void setCompanyName (final String companyName) { - this.companyName = companyName; + public void setContactCountry (final Country contactCountry) { + this.contactCountry = contactCountry; } @Override - public Long getContactId () { - return this.contactId; + public Calendar getContactCreated () { + return this.contactCreated; } @Override - public void setContactId (final Long contactId) { - this.contactId = contactId; + public void setContactCreated (final Calendar contactCreated) { + this.contactCreated = contactCreated; } @Override - public String getCountryCode () { - return this.countryCode; + public String getContactEmailAddress () { + return this.contactEmailAddress; } @Override - public void setCountryCode (final String countryCode) { - this.countryCode = countryCode; + public void setContactEmailAddress (final String contactEmailAddress) { + this.contactEmailAddress = contactEmailAddress; } @Override - public Calendar getCreated () { - return this.created; + public String getContactFamilyName () { + //* NOISY-DEBUG: */ this.getLogger().logTrace("CALLED!"); + return this.contactFamilyName; } @Override - public void setCreated (final Calendar created) { - this.created = created; + public void setContactFamilyName (final String contactFamilyName) { + this.contactFamilyName = contactFamilyName; } @Override - public String getEmailAddress () { - return this.emailAddress; + public DialableFaxNumber getContactFaxNumber () { + return this.contactFaxNumber; } @Override - public void setEmailAddress (final String emailAddress) { - this.emailAddress = emailAddress; + public void setContactFaxNumber (final DialableFaxNumber contactFaxNumber) { + this.contactFaxNumber = contactFaxNumber; } @Override - public String getFamilyName () { - //* NOISY-DEBUG: */ this.getLogger().logTrace("CALLED!"); - return this.familyName; + public String getContactFirstName () { + return this.contactFirstName; } @Override - public void setFamilyName (final String familyName) { - this.familyName = familyName; + public void setContactFirstName (final String contactFirstName) { + this.contactFirstName = contactFirstName; } @Override - public String getFaxNumber () { - return this.faxNumber; + public Gender getContactGender () { + return this.contactGender; } @Override - public void setFaxNumber (final String faxNumber) { - this.faxNumber = faxNumber; + public void setContactGender (final Gender contactGender) { + this.contactGender = contactGender; } @Override - public String getFirstName () { - return this.firstName; + public Short getContactHouseNumber () { + return this.contactHouseNumber; } @Override - public void setFirstName (final String firstName) { - this.firstName = firstName; + public void setContactHouseNumber (final Short contactHouseNumber) { + this.contactHouseNumber = contactHouseNumber; } @Override - public Gender getGender () { - return this.gender; + public Long getContactId () { + return this.contactId; } - @Override - public void setGender (final Gender gender) { - this.gender = gender; + public void setContactId (final Long contactId) { + this.contactId = contactId; } @Override - public Short getHouseNumber () { - return this.houseNumber; + public void setContactOwnContact (final Boolean contactOwnContact) { + this.contactOwnContact = contactOwnContact; } @Override - public void setHouseNumber (final Short houseNumber) { - this.houseNumber = houseNumber; + public DialableLandLineNumber getContactPhoneNumber () { + return this.contactPhoneNumber; } @Override - public void setOwnContact (final Boolean ownContact) { - this.ownContact = ownContact; + public void setContactPhoneNumber (final DialableLandLineNumber contactPhoneNumber) { + this.contactPhoneNumber = contactPhoneNumber; } @Override - public String getPhoneNumber () { - return this.phoneNumber; + public String getContactStreet () { + return this.contactStreet; } @Override - public void setPhoneNumber (final String phoneNumber) { - this.phoneNumber = phoneNumber; + public void setContactStreet (final String contactStreet) { + this.contactStreet = contactStreet; } @Override - public String getStreet () { - return this.street; + public String getContactTitle () { + return this.contactTitle; } @Override - public void setStreet (final String street) { - this.street = street; + public void setContactTitle (final String contactTitle) { + this.contactTitle = contactTitle; } @Override - public Calendar getUpdated () { - return this.updated; + public Calendar getContactUpdated () { + return this.contactUpdated; } @Override - public void setUpdated (final Calendar updated) { - this.updated = updated; + public void setContactUpdated (final Calendar contactUpdated) { + this.contactUpdated = contactUpdated; } @Override - public Long getZipCode () { - return this.zipCode; + public Integer getContactZipCode () { + return this.contactZipCode; } @Override - public void setZipCode (final Long zipCode) { - this.zipCode = zipCode; + public void setContactZipCode (final Integer contactZipCode) { + this.contactZipCode = contactZipCode; } @Override public int hashCode () { - // Validate gender instance - assert (this.getGender() instanceof Gender) : "gender is not set."; //NOI18N + // Validate contactGender instance + assert (this.getContactGender() instanceof Gender) : "gender is not set."; //NOI18N int hash = 7; - hash = 79 * hash + Objects.hashCode(this.getFamilyName()); - hash = 79 * hash + this.getGender().hashCode(); - hash = 79 * hash + Objects.hashCode(this.getFirstName()); + 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 gender UNKNOWN + * Initialization with fake contactGender UNKNOWN */ @PostConstruct public void init () { - // Fake gender - this.gender = Gender.UNKNOWN; + // Fake contactGender + this.contactGender = Gender.UNKNOWN; } @Override public Boolean isOwnContact () { - return this.ownContact; + return this.contactOwnContact; } }