From e4cf37cf4d13a7ae5c6f551ff0635eef691e8924 Mon Sep 17 00:00:00 2001 From: kshields412 Date: Tue, 12 Nov 2019 12:58:42 -0500 Subject: [PATCH] completed lab --- .../zipcodewilmington/phone/PhoneNumber.java | 5 +--- .../phone/PhoneNumberFactory.java | 23 +++++++++++++++---- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/phone/PhoneNumber.java b/src/main/java/com/zipcodewilmington/phone/PhoneNumber.java index d933eb5..b1f1114 100644 --- a/src/main/java/com/zipcodewilmington/phone/PhoneNumber.java +++ b/src/main/java/com/zipcodewilmington/phone/PhoneNumber.java @@ -9,13 +9,10 @@ public final class PhoneNumber { private final String phoneNumberString; // default constructor is uncallable - private PhoneNumber() throws InvalidPhoneNumberFormatException { - this(null); - } + private PhoneNumber() throws InvalidPhoneNumberFormatException { this(null); } // non-default constructor is package-protected protected PhoneNumber(String phoneNumber) throws InvalidPhoneNumberFormatException { - //validate phone number with format `(###)-###-####` if (!phoneNumber.matches("\\(\\d{3}\\)-\\d{3}-\\d{4}")) { throw new InvalidPhoneNumberFormatException(); } diff --git a/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java b/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java index 36d323b..2596569 100644 --- a/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java +++ b/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java @@ -2,6 +2,8 @@ import com.zipcodewilmington.exceptions.InvalidPhoneNumberFormatException; +import java.util.Random; +import java.util.logging.Level; import java.util.logging.Logger; /** @@ -20,14 +22,18 @@ private PhoneNumberFactory() { * @return array of randomly generated PhoneNumber objects */ //TODO - Implement logic public static PhoneNumber[] createRandomPhoneNumberArray(int phoneNumberCount) { - return null; + return new PhoneNumber[phoneNumberCount]; } /** * @return an instance of PhoneNumber with randomly generated phone number value */ //TODO - Implement logic public static PhoneNumber createRandomPhoneNumber() { - return createPhoneNumberSafely(-1, -1, -1); + Random randomNum = new Random(); + int areaCode = 100 + randomNum.nextInt(900); + int centOfficeCode = 100 + randomNum.nextInt(900); + int phoneLineCode = 1000 + randomNum.nextInt(9000); + return createPhoneNumberSafely(areaCode, centOfficeCode, phoneLineCode); } @@ -38,7 +44,13 @@ public static PhoneNumber createRandomPhoneNumber() { * @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) { - return createPhoneNumber(null); + String createdPhoneNumber = "(" + areaCode + ")-" + centralOfficeCode + "-" + phoneLineCode; + try { + return createPhoneNumber(createdPhoneNumber); + } catch (InvalidPhoneNumberFormatException e){ + logger.log(Level.WARNING, createdPhoneNumber + " is not a valid input. Try again."); + return null; + } } /** @@ -46,7 +58,8 @@ public static PhoneNumber createPhoneNumberSafely(int areaCode, int centralOffic * @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) { - return null; + public static PhoneNumber createPhoneNumber(String phoneNumberString) throws InvalidPhoneNumberFormatException { + logger.log(Level.INFO, "Created phone number is " + phoneNumberString); + return new PhoneNumber(phoneNumberString); } }