]> git.mxchange.org Git - jphone-core.git/blob - src/org/mxchange/jphone/model/utils/MobileNumberUtils.java
5bef495e7fcc5dc85f470ad6142d963334650d63
[jphone-core.git] / src / org / mxchange / jphone / model / utils / MobileNumberUtils.java
1 /*
2  * Copyright (C) 2017 - 2022 Free Software Foundation
3  *
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.
8  *
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.
13  *
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/>.
16  */
17 package org.mxchange.jphone.model.utils;
18
19 import java.io.Serializable;
20 import java.util.Objects;
21 import org.mxchange.jphone.model.phonenumbers.mobile.DialableMobileNumber;
22
23 /**
24  * An utilities class for mobile numbers
25  * <p>
26  * @author Roland Häder<roland@mxchange.org>
27  */
28 public class MobileNumberUtils implements Serializable {
29
30         /**
31          * Serial number
32          */
33         private static final long serialVersionUID = 291_608_496_882_761L;
34
35         /**
36          * Compares two mobile number instances with each other
37          * <p>
38          * @param mobileNumber1 First instance of a DialableMobileNumber class
39          * @param mobileNumber2 Second instance of a DialableMobileNumber class
40          * <p>
41          * @return Comparison value
42          */
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)) {
46                         // Both are same
47                         return 0;
48                 } else if (null == mobileNumber1) {
49                         // First is null
50                         return -1;
51                 } else if (null == mobileNumber2) {
52                         // Second is null
53                         return 1;
54                 }
55
56                 // Invoke compareTo() method
57                 return mobileNumber1.compareTo(mobileNumber2);
58         }
59
60         /**
61          * Copy all fields from source object to this
62          * <p>
63          * @param sourceNumber Source number object
64          * @param targetNumber Target number object
65          */
66         public static void copyMobileNumberData (final DialableMobileNumber sourceNumber, final DialableMobileNumber targetNumber) {
67                 // Validate instance
68                 if (null == sourceNumber) {
69                         // Throw NPE
70                         throw new NullPointerException("sourceNumber is null"); //NOI18N
71                 } else if (null == targetNumber) {
72                         // Throw NPE
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
77                 }
78
79                 // Copy all fields
80                 targetNumber.setMobileProvider(sourceNumber.getMobileProvider());
81                 targetNumber.setMobileId(sourceNumber.getMobileId());
82                 targetNumber.setMobileNumber(sourceNumber.getMobileNumber());
83         }
84
85         /**
86          * Checks if both are the same
87          * <p>
88          * @param mobileNumber Mobile number 1
89          * @param otherNumber  Mobile number 2
90          * <p>
91          * @return Whether both are the same number
92          * <p>
93          * @throws NullPointerException If both instances are null
94          */
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)
99                         return true;
100                 } else if (((null == mobileNumber) && (otherNumber instanceof DialableMobileNumber)) || ((null == otherNumber) && (mobileNumber instanceof DialableMobileNumber))) {
101                         // One is null the other not
102                         return false;
103                 } else if (null == mobileNumber && null == otherNumber) {
104                         // Throw NPE
105                         throw new NullPointerException("Both mobileNumber and otherNumber are null"); //NOI18N
106                 }
107
108                 // Now compare deeper
109                 final boolean sameProvider = Objects.equals(mobileNumber.getMobileProvider(), otherNumber.getMobileProvider());
110                 final boolean sameNumber = Objects.equals(mobileNumber.getMobileNumber(), otherNumber.getMobileNumber());
111
112                 // All are the same?
113                 return sameProvider && sameNumber;
114         }
115
116         /**
117          * No constructor for utilities classes
118          */
119         private MobileNumberUtils () {
120         }
121
122 }