X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=Addressbook%2Fsrc%2Forg%2Fmxchange%2Faddressbook%2Fcontact%2FBaseContact.java;h=4e590c2462f0420c24b658d0d48a2053e582f0a2;hb=16289838616dbf25d96a20f82164415d40181e46;hp=2a1ecb73ffd0bbf9d1f3605b063a71355379bf39;hpb=ac52e6515a6d8e23aea65a40b1ac0d1d481d6dfe;p=jfinancials-lib.git diff --git a/Addressbook/src/org/mxchange/addressbook/contact/BaseContact.java b/Addressbook/src/org/mxchange/addressbook/contact/BaseContact.java index 2a1ecb7..4e590c2 100644 --- a/Addressbook/src/org/mxchange/addressbook/contact/BaseContact.java +++ b/Addressbook/src/org/mxchange/addressbook/contact/BaseContact.java @@ -1,595 +1,685 @@ -/* - * Copyright (C) 2015 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 - * 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 . - */ -package org.mxchange.addressbook.contact; - -import java.util.Objects; -import org.mxchange.addressbook.BaseFrameworkSystem; -import org.mxchange.addressbook.client.Client; - -/** - * A general contact - * - * @author Roland Haeder - * @version 0.0 - * @since 0.0 - */ -public class BaseContact extends BaseFrameworkSystem { - /** - * Birth day - */ - private String birthday; - - /** - * Cellphone number - */ - private String cellphoneNumber; - - /** - * City - */ - private String city; - - /** - * Optional comments - */ - private String comment; - - /** - * Companyname - */ - private String companyName; - - /** - * Country code - */ - private String countryCode; - - /** - * Email address - */ - private String emailAddress; - - /** - * Family name - */ - private String familyName; - - /** - * Fax number - */ - private String faxNumber; - - /** - * Gender code of the contact: - M = Mr. (male) - F = Mrs. (female) - C = - * Company - */ - private char gender; - - /** - * House number - */ - private int houseNumber; - - /** - * Marker whether this contact is user's own data - */ - private boolean ownContact; - - /** - * Phone number - */ - private String phoneNumber; - - /** - * Street - */ - private String street; - - /** - * Surname - */ - private String surname; - - /** - * ZIP code - */ - private long zipCode; - - /** - * No instances can be created of this class - */ - protected BaseContact () { - super(); - } - - /** - * 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 (Object object) { - // Is it same type? - if (!(object instanceof BaseContact)) { - // Not equal types - 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.getGender() == contact.getGender()) - && (this.getSurname().toLowerCase().equals(contact.getSurname().toLowerCase())) - && (this.getFamilyName().toLowerCase().equals(contact.getFamilyName().toLowerCase()))); - } - - /** - * Birth day - * - * @return the birthday - */ - public String getBirthday () { - return this.birthday; - } - - /** - * Birth day - * - * @param birthday the birthday to set - */ - public void setBirthday (final String birthday) { - this.birthday = birthday; - } - - /** - * Cellphone number - * - * @return the cellphoneNumber - */ - public String getCellphoneNumber () { - return this.cellphoneNumber; - } - - /** - * Cellphone number - * - * @param cellphoneNumber the cellphoneNumber to set - */ - public void setCellphoneNumber (final String cellphoneNumber) { - this.cellphoneNumber = cellphoneNumber; - } - - /** - * City - * - * @return the city - */ - public String getCity () { - return this.city; - } - - /** - * City - * - * @param city the city to set - */ - public void setCity (final String city) { - this.city = city; - } - - /** - * Comments - * - * @return the comment - */ - public String getComment () { - return this.comment; - } - - /** - * Comments - * - * @param comment the comment to set - */ - public void setComment (final String comment) { - this.comment = comment; - } - - /** - * Companyname - * - * @return the companyName - */ - public String getCompanyName () { - return this.companyName; - } - - /** - * Companyname - * - * @param companyName the companyName to set - */ - public void setCompanyName (final String companyName) { - this.companyName = companyName; - } - - /** - * Country code - * - * @return the countryCode - */ - public String getCountryCode () { - return this.countryCode; - } - - /** - * Country code - * - * @param countryCode the countryCode to set - */ - public void setCountryCode (final String countryCode) { - this.countryCode = countryCode; - } - - /** - * "Serializes" this object into a CSV string (this time with semicolons) - * - * @return "CSV-serialized" version of the stored data - */ - public String getCsvStringFromStoreableObject () { - // Get all together - String csvString = String.format( - "\"%s\";\"%s\";\"%s\";\"%s\";\"%s\";\"%s\";\"%s\";\"%s\";\"%s\";\"%s\";\"%s\";\"%s\";\"%s\";\"%s\";\"%s\"\n", - this.isOwnContact(), - this.getGender(), - this.getSurname(), - this.getFamilyName(), - this.getCompanyName(), - this.getStreet(), - this.getZipCode(), - this.getCity(), - this.getCountryCode(), - this.getPhoneNumber(), - this.getFaxNumber(), - this.getCellphoneNumber(), - this.getEmailAddress(), - this.getBirthday(), - this.getComment() - ); - - // Then return it - return csvString; - } - - /** - * Email address - * - * @return the emailAddress - */ - public String getEmailAddress () { - return this.emailAddress; - } - - /** - * Email address - * - * @param emailAddress the emailAddress to set - */ - public void setEmailAddress (final String emailAddress) { - this.emailAddress = emailAddress; - } - - /** - * Family name - * - * @return the familyName - */ - public String getFamilyName () { - return this.familyName; - } - - /** - * Family name - * - * @param familyName the familyName to set - */ - public void setFamilyName (final String familyName) { - this.familyName = familyName; - } - - /** - * Fax number - * - * @return the faxNumber - */ - public String getFaxNumber () { - return this.faxNumber; - } - - /** - * Fax number - * - * @param faxNumber the faxNumber to set - */ - public void setFaxNumber (final String faxNumber) { - this.faxNumber = faxNumber; - } - - /** - * Gender of the contact - * - * @return the gender - */ - public char getGender () { - return this.gender; - } - - /** - * Gender of the contact - * - * @param gender the gender to set - */ - public void setGender (final char gender) { - this.gender = gender; - } - - /** - * House number - * - * @return the houseNumber - */ - public int getHouseNumber () { - return this.houseNumber; - } - - /** - * House number - * - * @param houseNumber the houseNumber to set - */ - public void setHouseNumber (final int houseNumber) { - this.houseNumber = houseNumber; - } - - /** - * Phone number - * - * @return the phoneNumber - */ - public String getPhoneNumber () { - return this.phoneNumber; - } - - /** - * Phone number - * - * @param phoneNumber the phoneNumber to set - */ - public void setPhoneNumber (final String phoneNumber) { - this.phoneNumber = phoneNumber; - } - - /** - * Street - * - * @return the street - */ - public String getStreet () { - return this.street; - } - - /** - * Street - * - * @param street the street to set - */ - public void setStreet (final String street) { - this.street = street; - } - - /** - * Surname - * - * @return the surname - */ - public String getSurname () { - return this.surname; - } - - /** - * Surname - * - * @param surname the surname to set - */ - public void setSurname (final String surname) { - this.surname = surname; - } - - /** - * Some "getter" for a translated/human-readable gender - * @return gender Human-readable gender - */ - public String getTranslatedGender () { - // Default init - String translated = null; - - // "Translate" it - switch (this.getGender()) { - case 'M': // Mr. - translated = "Herr"; - break; - - case 'F': // Mrs. - translated = "Frau"; - break; - - case 'C': // "Company" - translated = "Firma"; - break; - - default: // Unsupported - this.getLogger().error("Gender " + this.getGender() + " not supported."); - break; - } - - // Return it - return translated; - } - - /** - * ZIP code - * - * @return the zipCode - */ - public long getZipCode () { - return this.zipCode; - } - - /** - * ZIP code - * - * @param zipCode the zipCode to set - */ - public void setZipCode (final long zipCode) { - this.zipCode = zipCode; - } - - @Override - public int hashCode () { - int hash = 7; - hash = 79 * hash + Objects.hashCode(this.getFamilyName()); - hash = 79 * hash + this.getGender(); - hash = 79 * hash + Objects.hashCode(this.getSurname()); - return hash; - } - - /** - * Checks whether the contact is user's own data - * - * @return Own data? - */ - public boolean isOwnContact () { - return this.ownContact; - } - - /** - * Shows this contact to the user - * - * @param client Client instance to use - */ - public void show (final Client client) { - // Display name "box" - client.displayNameBox((Contact) this); - - // Display address "box" - client.displayAddressBox((Contact) this); - - // Display other data "box" - client.displayOtherDataBox((Contact) this); - } - - /** - * Updates address data in this Contact instance - * - * @param street Street - * @param zipCode ZIP code - * @param city City - * @param countryCode Country code - */ - public void updateAddressData (final String street, final long zipCode, final String city, final String countryCode) { - // Set all - if (street != null) { - this.setStreet(street); - } - if (zipCode > 0) { - this.setZipCode(zipCode); - } - if (city != null) { - this.setCity(city); - } - if (countryCode != null) { - this.setCountryCode(countryCode); - } - } - - /** - * Updates name data in this Contact instance - * @param gender Gender (M, F, C) - * @param surname Surname - * @param familyName Family name - * @param companyName Company name - */ - public void updateNameData (final char gender, final String surname, final String familyName, final String companyName) { - // Set all - this.setGender(gender); - if (surname != null) { - this.setSurname(surname); - } - if (familyName != null) { - this.setFamilyName(familyName); - } - if (companyName != null) { - this.setCompanyName(companyName); - } - } - - /** - * Updates other data in this Contact instance - * - * @param phoneNumber Phone number - * @param cellphoneNumber Cellphone number - * @param faxNumber Fax number - * @param emailAddress Email address - * @param birthday Birth day - * @param comment Comments - */ - public void updateOtherData (final String phoneNumber, final String cellphoneNumber, final String faxNumber, final String emailAddress, final String birthday, final String comment) { - // Set all - if (phoneNumber != null) { - this.setPhoneNumber(phoneNumber); - } - if (cellphoneNumber != null) { - this.setCellphoneNumber(cellphoneNumber); - } - if (faxNumber != null) { - this.setFaxNumber(faxNumber); - } - if (emailAddress != null) { - this.setEmailAddress(emailAddress); - } - if (birthday != null) { - this.setBirthday(birthday); - } - if (comment != null) { - this.setComment(comment); - } - } - - /** - * Enables the flag "own data" which signals that this contact is the user's - * own data. - */ - protected void enableFlagOwnContact () { - this.ownContact = true; - } -} +/* + * Copyright (C) 2015 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 + * 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 . + */ +package org.mxchange.addressbook.contact; + +import java.text.MessageFormat; +import java.util.Objects; +import org.mxchange.addressbook.BaseAddressbookSystem; +import org.mxchange.addressbook.client.AddressbookClient; +import org.mxchange.jcore.client.Client; + +/** + * A general contact + * + * @author Roland Haeder + * @version 0.0 + */ +public class BaseContact extends BaseAddressbookSystem { + + /** + * Birth day + */ + private String birthday; + + /** + * Cellphone number + */ + private String cellphoneNumber; + + /** + * City + */ + private String city; + + /** + * Optional comments + */ + private String comment; + + /** + * Companyname + */ + private String companyName; + + /** + * Country code + */ + private String countryCode; + + /** + * Email address + */ + private String emailAddress; + + /** + * Family name + */ + private String familyName; + + /** + * Fax number + */ + private String faxNumber; + + /** + * Gender instance + */ + private Gender gender; + + /** + * House number + */ + private int houseNumber; + + /** + * Marker whether this contact is user's own data + */ + private boolean ownContact; + + /** + * Phone number + */ + private String phoneNumber; + + /** + * Street + */ + private String street; + + /** + * Surname + */ + private String surname; + + /** + * ZIP code + */ + private long zipCode; + + /** + * No instances can be created of this class + */ + protected BaseContact () { + } + + /** + * 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? + if (!(object instanceof BaseContact)) { + // Not equal types + 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.getGender().equals(contact.getGender())) + && (this.getSurname().toLowerCase().equals(contact.getSurname().toLowerCase())) + && (this.getFamilyName().toLowerCase().equals(contact.getFamilyName().toLowerCase()))); + } + + /** + * Birth day + * + * @return the birthday + */ + public String getBirthday () { + return this.birthday; + } + + /** + * Cellphone number + * + * @return the cellphoneNumber + */ + public String getCellphoneNumber () { + return this.cellphoneNumber; + } + + /** + * City + * + * @return the city + */ + public String getCity () { + return this.city; + } + + /** + * City + * + * @param city the city to set + */ + private void setCity (final String city) { + this.city = city; + } + + /** + * Comments + * + * @return the comment + */ + public String getComment () { + return this.comment; + } + + /** + * Comments + * + * @param comment the comment to set + */ + private void setComment (final String comment) { + this.comment = comment; + } + + /** + * Companyname + * + * @return the companyName + */ + public String getCompanyName () { + return this.companyName; + } + + /** + * Companyname + * + * @param companyName the companyName to set + */ + private void setCompanyName (final String companyName) { + this.companyName = companyName; + } + + /** + * Country code + * + * @return the countryCode + */ + public String getCountryCode () { + return this.countryCode; + } + + /** + * Country code + * + * @param countryCode the countryCode to set + */ + private void setCountryCode (final String countryCode) { + this.countryCode = countryCode; + } + + /** + * "Serializes" this object into a CSV string (this time with semicolons) + * + * @return "CSV-serialized" version of the stored data + * @deprecated Don't use this anymore + */ + @Deprecated + public String getCsvStringFromStoreableObject () { + // Trace message + this.getLogger().trace("CALLED!"); //NOI18N + + // Get all together + String csvString = String.format( + "\"%s\";\"%s\";\"%s\";\"%s\";\"%s\";\"%s\";\"%s\";\"%s\";\"%s\";\"%s\";\"%s\";\"%s\";\"%s\";\"%s\";\"%s\"", //NOI18N + this.isOwnContact(), + this.getGender().getDatabaseValue(), + this.getSurname(), + this.getFamilyName(), + this.getCompanyName(), + this.getStreet(), + this.getZipCode(), + this.getCity(), + this.getCountryCode(), + this.getPhoneNumber(), + this.getFaxNumber(), + this.getCellphoneNumber(), + this.getEmailAddress(), + this.getBirthday(), + this.getComment() + ); + + // Then return it + return csvString; + } + + /** + * Email address + * + * @return the emailAddress + */ + public String getEmailAddress () { + return this.emailAddress; + } + + /** + * Email address + * + * @param emailAddress the emailAddress to set + */ + private void setEmailAddress (final String emailAddress) { + this.emailAddress = emailAddress; + } + + /** + * Family name + * + * @return the familyName + */ + public String getFamilyName () { + return this.familyName; + } + + /** + * Family name + * + * @param familyName the familyName to set + */ + private void setFamilyName (final String familyName) { + this.familyName = familyName; + } + + /** + * Fax number + * + * @return the faxNumber + */ + public String getFaxNumber () { + return this.faxNumber; + } + + /** + * Fax number + * + * @param faxNumber the faxNumber to set + */ + private void setFaxNumber (final String faxNumber) { + this.faxNumber = faxNumber; + } + + /** + * Gender of the contact + * + * @return the gender + */ + public Gender getGender () { + return this.gender; + } + + /** + * Gender of the contact + * + * @param gender the gender to set + */ + private void setGender (final Gender gender) { + this.gender = gender; + } + + /** + * House number + * + * @return the houseNumber + */ + public int getHouseNumber () { + return this.houseNumber; + } + + /** + * Phone number + * + * @return the phoneNumber + */ + public String getPhoneNumber () { + return this.phoneNumber; + } + + /** + * Street + * + * @return the street + */ + public String getStreet () { + return this.street; + } + + /** + * Street + * + * @param street the street to set + */ + protected final void setStreet (final String street) { + this.street = street; + } + + /** + * Surname + * + * @return the surname + */ + public final String getSurname () { + return this.surname; + } + + /** + * Some "getter" for a translated/human-readable gender + * + * @return gender Human-readable gender + */ + public String getTranslatedGender () { + // "Translate" it + String translated = this.getBundle().getString(this.getGender().getMessageKey()); + + // Return it + return translated; + } + + /** + * ZIP code + * + * @return the zipCode + */ + public final long getZipCode () { + return this.zipCode; + } + + /** + * ZIP code + * + * @param zipCode the zipCode to set + */ + protected final void setZipCode (final long zipCode) { + this.zipCode = zipCode; + } + + @Override + public int hashCode () { + // Validate gender instance + assert (this.getGender() instanceof Gender) : "gender is not set."; + + int hash = 7; + hash = 79 * hash + Objects.hashCode(this.getFamilyName()); + hash = 79 * hash + this.getGender().hashCode(); + hash = 79 * hash + Objects.hashCode(this.getSurname()); + return hash; + } + + /** + * Checks whether the contact is user's own data + * + * @return Own data? + */ + public final boolean isOwnContact () { + return this.ownContact; + } + + /** + * Shows this contact to the user + * + * @param client Client instance to use + */ + public void show (final Client client) { + // Trace message + this.getLogger().trace(MessageFormat.format("client={0} - CALLED!", client)); //NOI18N + + // The client must be set + if (client == null) { + // Not set + throw new NullPointerException("client is null"); + } + + // Cast client + AddressbookClient c = (AddressbookClient) client; + + // Display name "box" + c.displayNameBox((Contact) this); + + // Display address "box" + c.displayAddressBox((Contact) this); + + // Display other data "box" + c.displayOtherDataBox((Contact) this); + } + + /** + * Updates address data in this Contact instance + * + * @param street Street + * @param zipCode ZIP code + * @param city City + * @param countryCode Country code + */ + public void updateAddressData (final String street, final long zipCode, final String city, final String countryCode) { + // Trace message + this.getLogger().trace(MessageFormat.format("street={0},zipCode={1},city={2},countryCode={3} - CALLED!", street, zipCode, city, countryCode)); //NOI18N + + // Set all + if (street != null) { + this.setStreet(street); + } + if (zipCode > 0) { + this.setZipCode(zipCode); + } + if (city != null) { + this.setCity(city); + } + if (countryCode != null) { + this.setCountryCode(countryCode); + } + + // Trace message + this.getLogger().trace("EXIT!"); //NOI18N + } + + /** + * Updates name data in this Contact instance + * + * @param gender Gender (M, F, C) + * @param surname Surname + * @param familyName Family name + * @param companyName Company name + */ + public void updateNameData (final Gender gender, final String surname, final String familyName, final String companyName) { + // Trace message + this.getLogger().trace(MessageFormat.format("gender={0},surname={1},familyName={2},companyName={3} - CALLED!", gender, surname, familyName, companyName)); //NOI18N + + // Set all + this.setGender(gender); + + if (surname != null) { + this.setSurname(surname); + } + if (familyName != null) { + this.setFamilyName(familyName); + } + if (companyName != null) { + this.setCompanyName(companyName); + } + + // Trace message + this.getLogger().trace("EXIT!"); //NOI18N + } + + /** + * Updates other data in this Contact instance + * + * @param phoneNumber Phone number + * @param cellphoneNumber Cellphone number + * @param faxNumber Fax number + * @param emailAddress Email address + * @param birthday Birth day + * @param comment Comments + */ + public void updateOtherData (final String phoneNumber, final String cellphoneNumber, final String faxNumber, final String emailAddress, final String birthday, final String comment) { + // Trace message + this.getLogger().trace(MessageFormat.format("phoneNumber={0},cellphoneNumber={1}faxNumber={2},emailAddress={3},birthday={4},comment={5} - CALLED!", phoneNumber, cellphoneNumber, faxNumber, emailAddress, birthday, comment)); //NOI18N + + // Set all + if (phoneNumber != null) { + this.setPhoneNumber(phoneNumber); + } + if (cellphoneNumber != null) { + this.setCellphoneNumber(cellphoneNumber); + } + if (faxNumber != null) { + this.setFaxNumber(faxNumber); + } + if (emailAddress != null) { + this.setEmailAddress(emailAddress); + } + if (birthday != null) { + this.setBirthday(birthday); + } + if (comment != null) { + this.setComment(comment); + } + + // Trace message + this.getLogger().trace("EXIT!"); //NOI18N + } + + /** + * Enables the flag "own data" which signals that this contact is the user's + * own data. + */ + protected final void enableFlagOwnContact () { + this.ownContact = true; + } + + /** + * Surname + * + * @param surname the surname to set + */ + protected final void setSurname (final String surname) { + this.surname = surname; + } + + /** + * Phone number + * + * @param phoneNumber the phoneNumber to set + */ + protected final void setPhoneNumber (final String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + /** + * House number + * + * @param houseNumber the houseNumber to set + */ + protected final void setHouseNumber (final int houseNumber) { + this.houseNumber = houseNumber; + } + + /** + * Cellphone number + * + * @param cellphoneNumber the cellphoneNumber to set + */ + protected final void setCellphoneNumber (final String cellphoneNumber) { + this.cellphoneNumber = cellphoneNumber; + } + + /** + * Birth day + * + * @param birthday the birthday to set + */ + protected final void setBirthday (final String birthday) { + this.birthday = birthday; + } + + /** + * Some "getter for a value from given column name. This name will be + * translated into a method name and then this method is called. + * + * @param columnName Column name + * @return Value from field + */ + @Override + public Object getValueFromColumn (final String columnName) { + // Trace message + this.getLogger().trace(MessageFormat.format("columnName={0} - CALLED!", columnName)); + + // Determine if the given column is boolean + if (this.isBooleanField(this, "BaseContact", columnName)) { + // Yes, then call other method + return this.getBooleanField(this, "BaseContact", columnName); + } + + // Convert column name to field name + String methodName = this.convertColumnNameToGetterMethod(columnName, false); + + // Debug message + this.getLogger().debug(MessageFormat.format("field={0}", methodName)); + + // Get field + Object value = this.getField(this, "BaseContact", methodName); + + // Trace message + this.getLogger().trace("value=" + value + " - EXIT!"); + + // Return it + return value; + } + + /** + * Checks if given boolean field is available and set to same value + * + * @param columnName Column name to check + * @param bool Boolean value + * @return Whether all conditions are met + */ + @Override + public boolean isValueEqual (final String columnName, final boolean bool) { + // Trace message + this.getLogger().trace(MessageFormat.format("columnName={0},bool={1} - CALLED!", columnName, bool)); + + // Convert column name to field name + String methodName = this.convertColumnNameToGetterMethod(columnName, true); + + // Debug message + this.getLogger().debug(MessageFormat.format("field={0}", methodName)); + + // Init class instance + boolean value = this.getBooleanField(this, "BaseContact", methodName); + + // Debug message + this.getLogger().debug(MessageFormat.format("value={0}", value)); + + // Compare it + boolean isFound = (bool == value); + + // Trace message + this.getLogger().trace(MessageFormat.format("isFound={0} - EXIT!", isFound)); + + // Return result + return isFound; + } +}