2 * Copyright (C) 2017 - 2024 Free Software Foundation
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with targetNumber program. If not, see <http://www.gnu.org/licenses/>.
17 package org.mxchange.jphone.model.utils;
19 import java.io.Serializable;
20 import java.util.Objects;
21 import org.mxchange.jphone.model.phonenumbers.mobile.DialableMobileNumber;
24 * An utilities class for mobile numbers
26 * @author Roland Häder<roland@mxchange.org>
28 public class MobileNumberUtils implements Serializable {
33 private static final long serialVersionUID = 291_608_496_882_761L;
36 * Compares two mobile number instances with each other
38 * @param mobileNumber1 First instance of a DialableMobileNumber class
39 * @param mobileNumber2 Second instance of a DialableMobileNumber class
41 * @return Comparison value
43 public static int compare (final DialableMobileNumber mobileNumber1, final DialableMobileNumber mobileNumber2) {
44 // Check equality, then at least first must be given
45 if (Objects.equals(mobileNumber1, mobileNumber2)) {
48 } else if (null == mobileNumber1) {
51 } else if (null == mobileNumber2) {
56 // Invoke compareTo() method
57 return mobileNumber1.compareTo(mobileNumber2);
61 * Copy all fields from source object to this
63 * @param sourceNumber Source number object
64 * @param targetNumber Target number object
66 public static void copyMobileNumberData (final DialableMobileNumber sourceNumber, final DialableMobileNumber targetNumber) {
68 if (null == sourceNumber) {
70 throw new NullPointerException("sourceNumber is null"); //NOI18N
71 } else if (null == targetNumber) {
73 throw new NullPointerException("targetNumber is null"); //NOI18N
74 } else if (Objects.equals(sourceNumber, targetNumber)) {
75 // Is exactly the same!
76 throw new IllegalArgumentException("sourcerNumber and targetNumber are the same."); //NOI18N
80 targetNumber.setMobileProvider(sourceNumber.getMobileProvider());
81 targetNumber.setMobileId(sourceNumber.getMobileId());
82 targetNumber.setMobileNumber(sourceNumber.getMobileNumber());
86 * Checks if both are the same
88 * @param mobileNumber Mobile number 1
89 * @param otherNumber Mobile number 2
91 * @return Whether both are the same number
93 * @throws NullPointerException If both instances are null
95 public static boolean isSameMobileNumber (final DialableMobileNumber mobileNumber, final DialableMobileNumber otherNumber) {
96 // Test object equality first
97 if (Objects.equals(mobileNumber, otherNumber)) {
98 // Both the same object (null/null or same object)
100 } else if (((null == mobileNumber) && (otherNumber instanceof DialableMobileNumber)) || ((null == otherNumber) && (mobileNumber instanceof DialableMobileNumber))) {
101 // One is null the other not
103 } else if (null == mobileNumber && null == otherNumber) {
105 throw new NullPointerException("Both mobileNumber and otherNumber are null"); //NOI18N
108 // Now compare deeper
109 final boolean sameProvider = Objects.equals(mobileNumber.getMobileProvider(), otherNumber.getMobileProvider());
110 final boolean sameNumber = Objects.equals(mobileNumber.getMobileNumber(), otherNumber.getMobileNumber());
113 return sameProvider && sameNumber;
117 * No constructor for utilities classes
119 private MobileNumberUtils () {