diff --git a/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java b/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java index 36d323b..b9ee2e0 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; /** @@ -19,15 +21,29 @@ private PhoneNumberFactory() { * @param phoneNumberCount - number of PhoneNumber objects to instantiate * @return array of randomly generated PhoneNumber objects */ //TODO - Implement logic - public static PhoneNumber[] createRandomPhoneNumberArray(int phoneNumberCount) { - return null; - } + public static PhoneNumber[] createRandomPhoneNumberArray(int phoneNumberCount) + { + PhoneNumber[] numbers = new PhoneNumber[phoneNumberCount]; + + for (int i = 0; i < phoneNumberCount; i++) { + + numbers[i] = createRandomPhoneNumber(); + } + return numbers; + } /** * @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 +54,18 @@ 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 representation of the phone# + StringBuilder phoneNumberString = new StringBuilder (String.format("(%s)-%s-%s",areaCode, centralOfficeCode, phoneLineCode)); + try { + + return createPhoneNumber(phoneNumberString.toString()); + } + catch (InvalidPhoneNumberFormatException i ) + { + logger.log(Level.WARNING, phoneNumberString + " is not a valid phone number. "); + return null; + } + } /** @@ -46,7 +73,11 @@ 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, "Attempting to create a new PhoneNumber object with a value of " + phoneNumberString); + + return new PhoneNumber(phoneNumberString); } + }