X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2Forg%2Fmxchange%2Fjcore%2Fcontact%2FBaseContact.java;h=71a7d30021e3531f0526a87fd5661fc1643d6fc6;hb=10598f2ffeebd25b659f61e4e528f2ec9d25f41e;hp=7b5b1c691470ada0e050c097b8a3f80a4e65b056;hpb=7ac728480582ced27e0324f7804b23e9adb9bae3;p=jcore.git diff --git a/src/org/mxchange/jcore/contact/BaseContact.java b/src/org/mxchange/jcore/contact/BaseContact.java index 7b5b1c6..71a7d30 100644 --- a/src/org/mxchange/jcore/contact/BaseContact.java +++ b/src/org/mxchange/jcore/contact/BaseContact.java @@ -16,13 +16,17 @@ */ package org.mxchange.jcore.contact; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; import java.text.MessageFormat; +import java.util.Iterator; +import java.util.Map; import java.util.Objects; import org.mxchange.jcore.BaseFrameworkSystem; import org.mxchange.jcore.client.Client; /** - * A general contact + * A general contact class which should only be extended. * * @author Roland Haeder * @version 0.0 @@ -82,10 +86,10 @@ public class BaseContact extends BaseFrameworkSystem implements Contact { /** * House number */ - private int houseNumber; + private Long houseNumber; /** - * Marker whether this contact is user's own data + * Flag whether this contact is user's own data */ private boolean ownContact; @@ -107,10 +111,11 @@ public class BaseContact extends BaseFrameworkSystem implements Contact { /** * ZIP code */ - private long zipCode; + private Long zipCode; /** - * No instances can be created of this class + * No instances should be created of this class. Better extend this class + * and provide proper constructors. */ protected BaseContact () { } @@ -152,16 +157,36 @@ public class BaseContact extends BaseFrameworkSystem implements Contact { return this.birthday; } + /** + * Birth day + * + * @param birthday the birthday to set + */ + @Override + public final void setBirthday (final String birthday) { + this.birthday = birthday; + } + /** * Cellphone number * * @return the cellphoneNumber */ @Override - public String getCellphoneNumber () { + public final String getCellphoneNumber () { return this.cellphoneNumber; } + /** + * Cellphone number + * + * @param cellphoneNumber the cellphoneNumber to set + */ + @Override + public final void setCellphoneNumber (final String cellphoneNumber) { + this.cellphoneNumber = cellphoneNumber; + } + /** * City * @@ -242,41 +267,6 @@ public class BaseContact extends BaseFrameworkSystem implements Contact { 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 * @@ -304,6 +294,7 @@ public class BaseContact extends BaseFrameworkSystem implements Contact { */ @Override public String getFamilyName () { + //* NOISY-DEBUG: */ this.getLogger().trace("CALLED!"); return this.familyName; } @@ -314,6 +305,7 @@ public class BaseContact extends BaseFrameworkSystem implements Contact { */ @Override public final void setFamilyName (final String familyName) { + /* NOISY-DEBUG: */ this.getLogger().trace(MessageFormat.format("familyName={0} - CALLED!", familyName)); this.familyName = familyName; } @@ -363,10 +355,20 @@ public class BaseContact extends BaseFrameworkSystem implements Contact { * @return the houseNumber */ @Override - public int getHouseNumber () { + public Long getHouseNumber () { return this.houseNumber; } + /** + * House number + * + * @param houseNumber the houseNumber to set + */ + @Override + public final void setHouseNumber (final Long houseNumber) { + this.houseNumber = houseNumber; + } + /** * Phone number * @@ -377,6 +379,16 @@ public class BaseContact extends BaseFrameworkSystem implements Contact { return this.phoneNumber; } + /** + * Phone number + * + * @param phoneNumber the phoneNumber to set + */ + @Override + public final void setPhoneNumber (final String phoneNumber) { + this.phoneNumber = phoneNumber; + } + /** * Street * @@ -407,6 +419,16 @@ public class BaseContact extends BaseFrameworkSystem implements Contact { return this.surname; } + /** + * Surname + * + * @param surname the surname to set + */ + @Override + public final void setSurname (final String surname) { + this.surname = surname; + } + /** * Some "getter" for a translated/human-readable gender * @@ -421,13 +443,56 @@ public class BaseContact extends BaseFrameworkSystem implements Contact { return translated; } + /** + * 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) throws IllegalArgumentException, NoSuchMethodException, IllegalAccessException, InvocationTargetException { + // Trace message + this.getLogger().trace(MessageFormat.format("columnName={0} - CALLED!", columnName)); + + // A '$' means not our field + if (columnName.startsWith("$")) { + // Don't handle these + throw new IllegalArgumentException("columnsName contains $"); + } + + // Determine if the given column is boolean + if (this.isBooleanField(this, "BaseContact", columnName)) { + // Debug message + this.getLogger().debug("Column " + columnName + " represents a boolean field."); + + // Yes, then call other method + return this.getBooleanField(this, "BaseContact", this.convertColumnNameToGetterMethod(columnName, true)); + } + + // 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; + } + /** * ZIP code * * @return the zipCode */ @Override - public final long getZipCode () { + public final Long getZipCode () { return this.zipCode; } @@ -437,7 +502,7 @@ public class BaseContact extends BaseFrameworkSystem implements Contact { * @param zipCode the zipCode to set */ @Override - public final void setZipCode (final long zipCode) { + public final void setZipCode (final Long zipCode) { this.zipCode = zipCode; } @@ -463,6 +528,49 @@ public class BaseContact extends BaseFrameworkSystem implements Contact { return this.ownContact; } + /** + * 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 isFieldValueEqual (final String columnName, final boolean bool) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { + // 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; + } + + /** + * Returns an iterator of all values from this object + * @return An iterator + */ + @Override + public Iterator> iterator () throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { + return this.fieldIterator(this, "BaseContact"); + } + /** * Shows this contact to the user * @@ -497,120 +605,15 @@ public class BaseContact extends BaseFrameworkSystem implements Contact { this.ownContact = true; } - /** - * Surname - * - * @param surname the surname to set - */ - @Override - public final void setSurname (final String surname) { - this.surname = surname; - } - - /** - * Phone number - * - * @param phoneNumber the phoneNumber to set - */ - @Override - public final void setPhoneNumber (final String phoneNumber) { - this.phoneNumber = phoneNumber; - } - - /** - * House number - * - * @param houseNumber the houseNumber to set - */ - public final void setHouseNumber (final int houseNumber) { - this.houseNumber = houseNumber; - } - - /** - * Cellphone number - * - * @param cellphoneNumber the cellphoneNumber to set - */ @Override - public final void setCellphoneNumber (final String cellphoneNumber) { - this.cellphoneNumber = cellphoneNumber; - } - - /** - * Birth day - * - * @param birthday the birthday to set - */ - @Override - public 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); - + public void setValueFromColumn (final String columnName, final Object value) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { // Trace message - this.getLogger().trace("value=" + value + " - EXIT!"); - - // Return it - return value; - } + this.getLogger().trace(MessageFormat.format("columnName={0},value={1} - CALLED!", columnName, value)); + + // Call super method + this.setValueInStoreableFromColumn(this, "BaseContact", columnName, 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; + this.getLogger().trace("EXIT!"); } }