From: Roland Häder Date: Fri, 23 Jun 2017 18:15:26 +0000 (+0200) Subject: Continued a bit: X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=416bee92751427cc46095a206144328edf7bef9a;p=jcontacts-core.git Continued a bit: - moved copyAll() away from POJO to utils class Signed-off-by: Roland Häder --- diff --git a/src/org/mxchange/jcontacts/contact/Contact.java b/src/org/mxchange/jcontacts/contact/Contact.java index 649fd82..47381e2 100644 --- a/src/org/mxchange/jcontacts/contact/Contact.java +++ b/src/org/mxchange/jcontacts/contact/Contact.java @@ -32,13 +32,6 @@ import org.mxchange.jphone.phonenumbers.mobile.DialableMobileNumber; */ public interface Contact extends Serializable { - /** - * Copies all attributes from other contact object to this - *

- * @param contact Source instance - */ - void copyAll (final Contact contact); - /** * Birth day *

diff --git a/src/org/mxchange/jcontacts/contact/ContactUtils.java b/src/org/mxchange/jcontacts/contact/ContactUtils.java new file mode 100644 index 0000000..7cc6f12 --- /dev/null +++ b/src/org/mxchange/jcontacts/contact/ContactUtils.java @@ -0,0 +1,274 @@ +/* + * 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 . + */ +package org.mxchange.jcontacts.contact; + +import java.io.Serializable; +import java.util.Objects; +import org.mxchange.jcountry.data.Country; +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; +import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider; + +/** + * Utilities for contacts + *

+ * @author Roland Häder + */ +public class ContactUtils implements Serializable { + + /** + * Serial number + */ + private static final long serialVersionUID = 26_785_734_719_670L; + + /** + * Copies all attributes from other contact object to this + *

+ * @param sourceContact Source instance + * @param targetContact Target instance + */ + public static void copyAll (final Contact sourceContact, final Contact targetContact) { + // Contact should be valid + if (null == sourceContact) { + // Throw NPE + throw new NullPointerException("sourceContact is null"); //NOI18N + } else if (null == targetContact) { + // Throw NPE + throw new NullPointerException("targetContact is null"); //NOI18N + } + + // Copy all: + // - base data + targetContact.setContactPersonalTitle(sourceContact.getContactPersonalTitle()); + targetContact.setContactTitle(sourceContact.getContactTitle()); + targetContact.setContactFirstName(sourceContact.getContactFirstName()); + targetContact.setContactFamilyName(sourceContact.getContactFamilyName()); + targetContact.setContactStreet(sourceContact.getContactStreet()); + targetContact.setContactHouseNumber(sourceContact.getContactHouseNumber()); + targetContact.setContactHouseNumberExtension(sourceContact.getContactHouseNumberExtension()); + targetContact.setContactZipCode(sourceContact.getContactZipCode()); + targetContact.setContactCity(sourceContact.getContactCity()); + targetContact.setContactCountry(sourceContact.getContactCountry()); + + // - phone, fax, email + targetContact.setContactLandLineNumber(sourceContact.getContactLandLineNumber()); + targetContact.setContactFaxNumber(sourceContact.getContactFaxNumber()); + targetContact.setContactMobileNumber(sourceContact.getContactMobileNumber()); + + // - other data + targetContact.setContactBirthday(sourceContact.getContactBirthday()); + targetContact.setContactComment(sourceContact.getContactComment()); + targetContact.setContactCreated(sourceContact.getContactCreated()); + targetContact.setContactUpdated(sourceContact.getContactUpdated()); + } + + /** + * Checks whether both contacts are same, but ignoring id number. If you + * want to include id number in comparison, better use Objects.equals() as + * the equal() method is implemented and checks all fields. + *

+ * @param contact Contact one + * @param other Contact two + *

+ * @return Whether both are the same + */ + public static boolean isSameContact (final Contact contact, final Contact other) { + // Both should not be null + if (null == contact) { + // First contact is null + throw new NullPointerException("contact is null"); //NOI18N + } else if (null == other) { + // Secondcontact is null + throw new NullPointerException("other is null"); //NOI18N + } + + // Check all data fields, except id number + return ((Objects.equals(contact.getContactBirthday(), other.getContactBirthday())) && + (Objects.equals(contact.getContactCity(), other.getContactCity())) && + (Objects.equals(contact.getContactCountry(), other.getContactCountry())) && + (Objects.equals(contact.getContactEmailAddress(), other.getContactEmailAddress())) && + (Objects.equals(contact.getContactFamilyName(), other.getContactFamilyName())) && + (Objects.equals(contact.getContactFirstName(), other.getContactFirstName())) && + (Objects.equals(contact.getContactPersonalTitle(), other.getContactPersonalTitle())) && + (Objects.equals(contact.getContactHouseNumber(), other.getContactHouseNumber())) && + (Objects.equals(contact.getContactStreet(), other.getContactStreet())) && + (Objects.equals(contact.getContactTitle(), other.getContactTitle())) && + (Objects.equals(contact.getContactZipCode(), other.getContactZipCode()))); + } + + /** + * Updates land-line data in contact instance. This method also removes the + * land-line instance if no country is selected. A bean (mostly EJB) should + * then make sure that the land-line entry is being unlinked from contact + * instance or being removed, if no longer used. + *

+ * @param contact Contact instance being updated + * @param faxCountry Updated fax number or null + * @param faxAreaCode Updated fax area code or null + * @param faxNumber Updated fax number + *

+ * @return Whether the fax number has been unlinked in contact object + */ + public static boolean updateFaxNumber (final Contact contact, final Country faxCountry, final Integer faxAreaCode, final Long faxNumber) { + // At least contact must be valid + if (null == contact) { + // Throw NPE + throw new NullPointerException("contact is null"); //NOI18N + } + + // Default is not unlinked + boolean isUnlinked = false; + + // Is there a fax instance? + if (contact.getContactFaxNumber() instanceof DialableFaxNumber) { + // Found existing fax number, remove it? + if ((null == faxCountry) || (null == faxAreaCode) || (null == faxNumber)) { + // Remove existing instance + contact.setContactFaxNumber(null); + + // Mark it as being removed + isUnlinked = true; + } else { + // Set all data + contact.getContactFaxNumber().setPhoneCountry(faxCountry); + contact.getContactFaxNumber().setPhoneAreaCode(faxAreaCode); + contact.getContactFaxNumber().setPhoneNumber(faxNumber); + } + } else if ((faxCountry instanceof Country) && (faxAreaCode > 0) && (faxNumber > 0)) { + // Set new land-line number + DialableFaxNumber fax = new FaxNumber(faxCountry, faxAreaCode, faxNumber); + + // Set it in contact + contact.setContactFaxNumber(fax); + } + + // Return status + return isUnlinked; + } + + /** + * Updates land-line data in contact instance. This method also removes the + * land-line instance if no country is selected. A bean (mostly EJB) should + * then make sure that the land-line entry is being unlinked from contact + * instance or being removed, if no longer used. + *

+ * @param contact Contact instance being updated + * @param phoneCountry New phone country or old or null + * @param phoneAreaCode New phone's area code (or old) + * @param phoneNumber New phone number (or old) + *

+ * @return Whether the land-line number has been unlinked in contact object + */ + public static boolean updateLandLineNumber (final Contact contact, final Country phoneCountry, final Integer phoneAreaCode, final Long phoneNumber) { + // At least contact must be valid + if (null == contact) { + // Throw NPE + throw new NullPointerException("contact is null"); //NOI18N + } + + // Default is not unlinked + boolean isUnlinked = false; + + // Is there a land-line instance? + if (contact.getContactLandLineNumber() instanceof DialableLandLineNumber) { + // Found existing land-line number, remove it? + if ((null == phoneCountry) || (null == phoneAreaCode) || (null == phoneNumber)) { + // Remove existing instance + contact.setContactLandLineNumber(null); + + // Mark it as being removed + isUnlinked = true; + } else { + // Set all data + contact.getContactLandLineNumber().setPhoneCountry(phoneCountry); + contact.getContactLandLineNumber().setPhoneAreaCode(phoneAreaCode); + contact.getContactLandLineNumber().setPhoneNumber(phoneNumber); + } + } else if ((phoneCountry instanceof Country) && (phoneAreaCode > 0) && (phoneNumber > 0)) { + // Set new land-line number + DialableLandLineNumber landLine = new LandLineNumber(phoneCountry, phoneAreaCode, phoneNumber); + + // Set it in contact + contact.setContactLandLineNumber(landLine); + } + + // Return status + return isUnlinked; + } + + /** + * Updates mobile data in contact instance. This method also removes the + * mobile instance if no provider is selected. A bean (mostly EJB) should + * then make sure that the mobile entry is being unlinked from contact + * instance or being removed, if no longer used. + *

+ * @param contact Contact instance to update + * @param mobileProvider New mobile provider (or old) + * @param mobileNumber New mobile number (or old) + *

+ * @return Whether the mobile has been unlinked in contact object + */ + public static boolean updateMobileNumber (final Contact contact, final MobileProvider mobileProvider, final Long mobileNumber) { + // At least contact must be valid + if (null == contact) { + // Throw NPE + throw new NullPointerException("contact is null"); //NOI18N + } else if ((mobileProvider instanceof MobileProvider) && (null == mobileNumber)) { + // Mobile provider given, but no number + throw new NullPointerException("mobileNumber is null"); //NOI18N + } + + // Default is not unlinked + boolean isUnlinked = false; + + // Is there a mobile number? + if (contact.getContactMobileNumber() instanceof DialableMobileNumber) { + // Is provider null? + if ((null == mobileProvider) || (null == mobileNumber) || (mobileNumber == 0)) { + // Remove instance + contact.setContactMobileNumber(null); + + // Mark as unlinked + isUnlinked = true; + } else { + // Yes, then update as well + contact.getContactMobileNumber().setMobileProvider(mobileProvider); + contact.getContactMobileNumber().setPhoneNumber(mobileNumber); + } + } else if ((mobileProvider instanceof MobileProvider) && (mobileNumber > 0)) { + // Create new instance + DialableMobileNumber mobile = new MobileNumber(mobileProvider, mobileNumber); + + // Set it in contact + contact.setContactMobileNumber(mobile); + } + + // Return status + return isUnlinked; + } + + /** + * Private constructor for utilities + */ + private ContactUtils () { + } + +} diff --git a/src/org/mxchange/jcontacts/contact/UserContact.java b/src/org/mxchange/jcontacts/contact/UserContact.java index 29a2c7b..b3e0c0b 100644 --- a/src/org/mxchange/jcontacts/contact/UserContact.java +++ b/src/org/mxchange/jcontacts/contact/UserContact.java @@ -247,39 +247,6 @@ public class UserContact implements Contact { this.contactFamilyName = contactFamilyName; } - @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.setContactPersonalTitle(contact.getContactPersonalTitle()); - 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()); - - // - phone, fax, email - this.setContactLandLineNumber(contact.getContactLandLineNumber()); - this.setContactFaxNumber(contact.getContactFaxNumber()); - this.setContactMobileNumber(contact.getContactMobileNumber()); - - // - other data - this.setContactBirthday(contact.getContactBirthday()); - this.setContactComment(contact.getContactComment()); - this.setContactCreated(contact.getContactCreated()); - this.setContactUpdated(contact.getContactUpdated()); - } - @Override public boolean equals (final Object object) { if (this == object) { diff --git a/src/org/mxchange/jcontacts/contact/utils/ContactUtils.java b/src/org/mxchange/jcontacts/contact/utils/ContactUtils.java deleted file mode 100644 index 1f4f02e..0000000 --- a/src/org/mxchange/jcontacts/contact/utils/ContactUtils.java +++ /dev/null @@ -1,234 +0,0 @@ -/* - * 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 . - */ -package org.mxchange.jcontacts.contact.utils; - -import java.io.Serializable; -import java.util.Objects; -import org.mxchange.jcontacts.contact.Contact; -import org.mxchange.jcountry.data.Country; -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; -import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider; - -/** - * Utilities for contacts - *

- * @author Roland Häder - */ -public class ContactUtils implements Serializable { - - /** - * Serial number - */ - private static final long serialVersionUID = 26_785_734_719_670L; - - /** - * Checks whether both contacts are same, but ignoring id number. If you - * want to include id number in comparison, better use Objects.equals() as - * the equal() method is implemented and checks all fields. - *

- * @param contact Contact one - * @param other Contact two - *

- * @return Whether both are the same - */ - public static boolean isSameContact (final Contact contact, final Contact other) { - // Both should not be null - if (null == contact) { - // First contact is null - throw new NullPointerException("contact is null"); //NOI18N - } else if (null == other) { - // Secondcontact is null - throw new NullPointerException("other is null"); //NOI18N - } - - // Check all data fields, except id number - return ((Objects.equals(contact.getContactBirthday(), other.getContactBirthday())) && - (Objects.equals(contact.getContactCity(), other.getContactCity())) && - (Objects.equals(contact.getContactCountry(), other.getContactCountry())) && - (Objects.equals(contact.getContactEmailAddress(), other.getContactEmailAddress())) && - (Objects.equals(contact.getContactFamilyName(), other.getContactFamilyName())) && - (Objects.equals(contact.getContactFirstName(), other.getContactFirstName())) && - (Objects.equals(contact.getContactPersonalTitle(), other.getContactPersonalTitle())) && - (Objects.equals(contact.getContactHouseNumber(), other.getContactHouseNumber())) && - (Objects.equals(contact.getContactStreet(), other.getContactStreet())) && - (Objects.equals(contact.getContactTitle(), other.getContactTitle())) && - (Objects.equals(contact.getContactZipCode(), other.getContactZipCode()))); - } - - /** - * Updates land-line data in contact instance. This method also removes the - * land-line instance if no country is selected. A bean (mostly EJB) should - * then make sure that the land-line entry is being unlinked from contact - * instance or being removed, if no longer used. - *

- * @param contact Contact instance being updated - * @param faxCountry Updated fax number or null - * @param faxAreaCode Updated fax area code or null - * @param faxNumber Updated fax number - *

- * @return Whether the fax number has been unlinked in contact object - */ - public static boolean updateFaxNumber (final Contact contact, final Country faxCountry, final Integer faxAreaCode, final Long faxNumber) { - // At least contact must be valid - if (null == contact) { - // Throw NPE - throw new NullPointerException("contact is null"); //NOI18N - } - - // Default is not unlinked - boolean isUnlinked = false; - - // Is there a fax instance? - if (contact.getContactFaxNumber() instanceof DialableFaxNumber) { - // Found existing fax number, remove it? - if ((null == faxCountry) || (null == faxAreaCode) || (null == faxNumber)) { - // Remove existing instance - contact.setContactFaxNumber(null); - - // Mark it as being removed - isUnlinked = true; - } else { - // Set all data - contact.getContactFaxNumber().setPhoneCountry(faxCountry); - contact.getContactFaxNumber().setPhoneAreaCode(faxAreaCode); - contact.getContactFaxNumber().setPhoneNumber(faxNumber); - } - } else if ((faxCountry instanceof Country) && (faxAreaCode > 0) && (faxNumber > 0)) { - // Set new land-line number - DialableFaxNumber fax = new FaxNumber(faxCountry, faxAreaCode, faxNumber); - - // Set it in contact - contact.setContactFaxNumber(fax); - } - - // Return status - return isUnlinked; - } - - /** - * Updates land-line data in contact instance. This method also removes the - * land-line instance if no country is selected. A bean (mostly EJB) should - * then make sure that the land-line entry is being unlinked from contact - * instance or being removed, if no longer used. - *

- * @param contact Contact instance being updated - * @param phoneCountry New phone country or old or null - * @param phoneAreaCode New phone's area code (or old) - * @param phoneNumber New phone number (or old) - *

- * @return Whether the land-line number has been unlinked in contact object - */ - public static boolean updateLandLineNumber (final Contact contact, final Country phoneCountry, final Integer phoneAreaCode, final Long phoneNumber) { - // At least contact must be valid - if (null == contact) { - // Throw NPE - throw new NullPointerException("contact is null"); //NOI18N - } - - // Default is not unlinked - boolean isUnlinked = false; - - // Is there a land-line instance? - if (contact.getContactLandLineNumber() instanceof DialableLandLineNumber) { - // Found existing land-line number, remove it? - if ((null == phoneCountry) || (null == phoneAreaCode) || (null == phoneNumber)) { - // Remove existing instance - contact.setContactLandLineNumber(null); - - // Mark it as being removed - isUnlinked = true; - } else { - // Set all data - contact.getContactLandLineNumber().setPhoneCountry(phoneCountry); - contact.getContactLandLineNumber().setPhoneAreaCode(phoneAreaCode); - contact.getContactLandLineNumber().setPhoneNumber(phoneNumber); - } - } else if ((phoneCountry instanceof Country) && (phoneAreaCode > 0) && (phoneNumber > 0)) { - // Set new land-line number - DialableLandLineNumber landLine = new LandLineNumber(phoneCountry, phoneAreaCode, phoneNumber); - - // Set it in contact - contact.setContactLandLineNumber(landLine); - } - - // Return status - return isUnlinked; - } - - /** - * Updates mobile data in contact instance. This method also removes the - * mobile instance if no provider is selected. A bean (mostly EJB) should - * then make sure that the mobile entry is being unlinked from contact - * instance or being removed, if no longer used. - *

- * @param contact Contact instance to update - * @param mobileProvider New mobile provider (or old) - * @param mobileNumber New mobile number (or old) - *

- * @return Whether the mobile has been unlinked in contact object - */ - public static boolean updateMobileNumber (final Contact contact, final MobileProvider mobileProvider, final Long mobileNumber) { - // At least contact must be valid - if (null == contact) { - // Throw NPE - throw new NullPointerException("contact is null"); //NOI18N - } else if ((mobileProvider instanceof MobileProvider) && (null == mobileNumber)) { - // Mobile provider given, but no number - throw new NullPointerException("mobileNumber is null"); //NOI18N - } - - // Default is not unlinked - boolean isUnlinked = false; - - // Is there a mobile number? - if (contact.getContactMobileNumber() instanceof DialableMobileNumber) { - // Is provider null? - if ((null == mobileProvider) || (null == mobileNumber) || (mobileNumber == 0)) { - // Remove instance - contact.setContactMobileNumber(null); - - // Mark as unlinked - isUnlinked = true; - } else { - // Yes, then update as well - contact.getContactMobileNumber().setMobileProvider(mobileProvider); - contact.getContactMobileNumber().setPhoneNumber(mobileNumber); - } - } else if ((mobileProvider instanceof MobileProvider) && (mobileNumber > 0)) { - // Create new instance - DialableMobileNumber mobile = new MobileNumber(mobileProvider, mobileNumber); - - // Set it in contact - contact.setContactMobileNumber(mobile); - } - - // Return status - return isUnlinked; - } - - /** - * Private constructor for utilities - */ - private ContactUtils () { - } - -}