| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package com.zipcodewilmington.phone;
-
- import com.zipcodewilmington.exceptions.InvalidPhoneNumberFormatException;
- import com.zipcodewilmington.tools.RandomNumberFactory;
-
- import java.util.logging.Level;
- import java.util.logging.Logger;
-
- /**
- * Created by leon on 5/1/17.
- */
- public final class PhoneNumberFactory {
- private static final Logger logger = Logger.getGlobal();
-
- private PhoneNumberFactory() {
- /** This constructor is private
- * This class is uninstantiable */
- }
-
- /**
- * @param phoneNumberCount - number of PhoneNumber objects to instantiate
- * @return array of randomly generated PhoneNumber objects
- */ //TODO - Implement logic
- public static PhoneNumber[] createRandomPhoneNumberArray(int phoneNumberCount) throws InvalidPhoneNumberFormatException{
- PhoneNumber[] phoneNumbers = new PhoneNumber[phoneNumberCount];
- for (int i = 0; i < phoneNumberCount; i++) {
- phoneNumbers[i] = createRandomPhoneNumber();
- }
- return phoneNumbers;
- }
-
- /**
- * @return an instance of PhoneNumber with randomly generated phone number value
- */ //TODO - Implement logic
- public static PhoneNumber createRandomPhoneNumber() throws InvalidPhoneNumberFormatException {
- try {
- int areaCode = RandomNumberFactory.createInteger(100, 999);
- int officeCode = RandomNumberFactory.createInteger(100, 999);
- int phoneLine = RandomNumberFactory.createInteger(1000, 9999);
- return createPhoneNumberSafely(areaCode, officeCode, phoneLine);
- } catch (InvalidPhoneNumberFormatException e) {return null;}
- }
-
-
- /**
- * @param areaCode - 3 digit code
- * @param centralOfficeCode - 3 digit code
- * @param phoneLineCode - 4 digit code
- * @return a new phone number object
- */ //TODO - if input is valid, return respective PhoneNumber object, else return null
- public static PhoneNumber createPhoneNumberSafely(int areaCode, int centralOfficeCode, int phoneLineCode) throws InvalidPhoneNumberFormatException{
- String tempString = "";
- try {
- // if (3 == String.valueOf(areaCode).length() && 3 == String.valueOf(centralOfficeCode).length() && 4 == String.valueOf(phoneLineCode).length()) {
- tempString = String.valueOf(areaCode) + String.valueOf(centralOfficeCode) + String.valueOf(phoneLineCode);
- return createPhoneNumber(tempString);
- // return createPhoneNumber(tempString);
- // }
- } catch (InvalidPhoneNumberFormatException inv) {
- logger.log(Level.FINE, (tempString + "is not a valid phone number"));
- return null;
- }
- }
-
- /**
- * @param phoneNumberString - some String corresponding to a phone number whose format is `(###)-###-####`
- * @return a new phone number object
- * @throws InvalidPhoneNumberFormatException - thrown if phoneNumberString does not match acceptable format
- */ // TODO - Add throws statement to method signature
- public static PhoneNumber createPhoneNumber (String phoneNumberString) throws InvalidPhoneNumberFormatException {
- StringBuilder sb = new StringBuilder();
- try {
- sb.append("(");
- sb.append(phoneNumberString.substring(0, 3));
- sb.append(")-");
- sb.append(phoneNumberString.substring(3, 6));
- sb.append("-");
- sb.append(phoneNumberString.substring(6));
- return new PhoneNumber(sb.toString());
- } catch (InvalidPhoneNumberFormatException e) {
- logger.log(Level.FINE, ("Attempting to create a new PhoneNumber object with a value of " + phoneNumberString));
- return null;
- }
- }
- }
-
- // 012-345-6789
|