diff --git a/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java b/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java index 36d323b..33dab55 100644 --- a/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java +++ b/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java @@ -1,13 +1,17 @@ package com.zipcodewilmington.phone; import com.zipcodewilmington.exceptions.InvalidPhoneNumberFormatException; +import com.zipcodewilmington.tools.RandomNumberFactory; +import java.io.IOException; +import java.util.Random; +import java.util.logging.Level; import java.util.logging.Logger; /** * Created by leon on 5/1/17. */ -public final class PhoneNumberFactory { +public final class PhoneNumberFactory extends IOException { private static final Logger logger = Logger.getGlobal(); private PhoneNumberFactory() { @@ -20,14 +24,21 @@ private PhoneNumberFactory() { * @return array of randomly generated PhoneNumber objects */ //TODO - Implement logic public static PhoneNumber[] createRandomPhoneNumberArray(int phoneNumberCount) { - return null; + PhoneNumber[] phoneNumbers = new PhoneNumber[phoneNumberCount]; + for (int i = 0; i < phoneNumberCount; i++){ + phoneNumbers[i] = createRandomPhoneNumber(); + } // populate phone number [] with for loop and then insert random numbers into the array + return phoneNumbers; } /** * @return an instance of PhoneNumber with randomly generated phone number value */ //TODO - Implement logic public static PhoneNumber createRandomPhoneNumber() { - return createPhoneNumberSafely(-1, -1, -1); + int ac = RandomNumberFactory.createInteger(100, 999); + int coc = RandomNumberFactory.createInteger(100, 999); + int plc = RandomNumberFactory.createInteger(1000, 9999); + return createPhoneNumberSafely(ac, coc, plc); } @@ -38,7 +49,14 @@ 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 newNum = "(" + Integer.toString(areaCode) + ")" + "-" + Integer.toString(centralOfficeCode) + "-" + Integer.toString(phoneLineCode); + try { + return createPhoneNumber(newNum); + } catch (InvalidPhoneNumberFormatException e) { + String str = (newNum + " is not a valid phone number"); + logger.log(Level.ALL, str); + return null; + } } /** @@ -46,7 +64,9 @@ 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 { + String str = ("Attempting to create a new PhoneNumber object with the value of" + phoneNumberString); + logger.log(Level.ALL, str); + return new PhoneNumber(phoneNumberString); } } diff --git a/src/main/java/com/zipcodewilmington/tools/RandomNumberFactory.java b/src/main/java/com/zipcodewilmington/tools/RandomNumberFactory.java index 269dcfc..588433a 100644 --- a/src/main/java/com/zipcodewilmington/tools/RandomNumberFactory.java +++ b/src/main/java/com/zipcodewilmington/tools/RandomNumberFactory.java @@ -11,11 +11,13 @@ public abstract class RandomNumberFactory { /** @return a random float between the specified min and max numeric range */ public static Float createFloat(float min, float max) { + return random.nextFloat() * (max - min) + min; } /** @return a random integer between the specified min and max numeric range */ public static Integer createInteger(Integer min, Integer max) { + return createFloat(min, max).intValue(); } } \ No newline at end of file