From 7c1a4c389a44d1f0567b10d99075e4451d88e4c8 Mon Sep 17 00:00:00 2001 From: Joshua Wurdemann Date: Fri, 2 Mar 2018 14:55:15 -0500 Subject: [PATCH 1/2] something --- .../InvalidPhoneNumberFormatException.java | 7 ++++ .../zipcodewilmington/phone/PhoneNumber.java | 2 +- .../phone/PhoneNumberFactory.java | 34 +++++++++++++++---- 3 files changed, 36 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/exceptions/InvalidPhoneNumberFormatException.java b/src/main/java/com/zipcodewilmington/exceptions/InvalidPhoneNumberFormatException.java index 5d3fb58..b342554 100644 --- a/src/main/java/com/zipcodewilmington/exceptions/InvalidPhoneNumberFormatException.java +++ b/src/main/java/com/zipcodewilmington/exceptions/InvalidPhoneNumberFormatException.java @@ -4,4 +4,11 @@ * Created by leon on 5/10/17. */ // Checked Exception public final class InvalidPhoneNumberFormatException extends Exception { + public InvalidPhoneNumberFormatException(){ + super(); + } + + public InvalidPhoneNumberFormatException(String message){ + super(message); + } } diff --git a/src/main/java/com/zipcodewilmington/phone/PhoneNumber.java b/src/main/java/com/zipcodewilmington/phone/PhoneNumber.java index d933eb5..ea56657 100644 --- a/src/main/java/com/zipcodewilmington/phone/PhoneNumber.java +++ b/src/main/java/com/zipcodewilmington/phone/PhoneNumber.java @@ -17,7 +17,7 @@ private PhoneNumber() throws InvalidPhoneNumberFormatException { protected PhoneNumber(String phoneNumber) throws InvalidPhoneNumberFormatException { //validate phone number with format `(###)-###-####` if (!phoneNumber.matches("\\(\\d{3}\\)-\\d{3}-\\d{4}")) { - throw new InvalidPhoneNumberFormatException(); + throw new InvalidPhoneNumberFormatException("invalid phone number format"); } this.phoneNumberString = phoneNumber; } diff --git a/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java b/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java index 36d323b..71cc6bf 100644 --- a/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java +++ b/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java @@ -1,7 +1,9 @@ package com.zipcodewilmington.phone; import com.zipcodewilmington.exceptions.InvalidPhoneNumberFormatException; +import com.zipcodewilmington.tools.RandomNumberFactory; +import java.util.Random; import java.util.logging.Logger; /** @@ -20,14 +22,23 @@ private PhoneNumberFactory() { * @return array of randomly generated PhoneNumber objects */ //TODO - Implement logic public static PhoneNumber[] createRandomPhoneNumberArray(int phoneNumberCount) { - return null; + PhoneNumber[] number = new PhoneNumber[phoneNumberCount]; + for (int i = 0; i < number.length; i++) { + number[i] = createRandomPhoneNumber(); + } + return number; } /** * @return an instance of PhoneNumber with randomly generated phone number value */ //TODO - Implement logic public static PhoneNumber createRandomPhoneNumber() { - return createPhoneNumberSafely(-1, -1, -1); + + int areaCode = RandomNumberFactory.createInteger(0, 999); + int centralOfficeCode = RandomNumberFactory.createInteger(0, 999); + int phoneline = RandomNumberFactory.createInteger(0, 9999); + + return createPhoneNumberSafely(areaCode, centralOfficeCode, phoneline); } @@ -37,8 +48,18 @@ public static PhoneNumber createRandomPhoneNumber() { * @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) { - return createPhoneNumber(null); + public static PhoneNumber createPhoneNumberSafely(int areaCode, int centralOfficeCode, int phoneLineCode) { + StringBuilder sb = new StringBuilder(); + sb.append("(" + areaCode + ")" + "-" + centralOfficeCode + "-" + phoneLineCode); + String s = sb.toString(); + try { + return createPhoneNumber(s); + } catch (InvalidPhoneNumberFormatException e) { + logger.info("invalid phoneNumber"); + + } + + return null; } /** @@ -46,7 +67,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 { + PhoneNumber phoneNumber = new PhoneNumber(phoneNumberString); + return phoneNumber; } } From 8ae7904b20d7f5f1fe13e1847ed171f995fdc7e7 Mon Sep 17 00:00:00 2001 From: Joshua Wurdemann Date: Fri, 2 Mar 2018 16:22:06 -0500 Subject: [PATCH 2/2] changed random number to start at higher numbers to avoid invalid numbers --- .../phone/PhoneNumberFactory.java | 23 ++++++++++++++----- .../PhoneNumberFactoryTest.java | 2 +- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java b/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java index 71cc6bf..81da612 100644 --- a/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java +++ b/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java @@ -1,5 +1,6 @@ package com.zipcodewilmington.phone; +import com.sun.javafx.binding.StringFormatter; import com.zipcodewilmington.exceptions.InvalidPhoneNumberFormatException; import com.zipcodewilmington.tools.RandomNumberFactory; @@ -34,11 +35,11 @@ public static PhoneNumber[] createRandomPhoneNumberArray(int phoneNumberCount) { */ //TODO - Implement logic public static PhoneNumber createRandomPhoneNumber() { - int areaCode = RandomNumberFactory.createInteger(0, 999); - int centralOfficeCode = RandomNumberFactory.createInteger(0, 999); - int phoneline = RandomNumberFactory.createInteger(0, 9999); + int areaCode = RandomNumberFactory.createInteger(100, 999); + int centralOfficeCode = RandomNumberFactory.createInteger(100, 999); + int phoneLine = RandomNumberFactory.createInteger(1000, 9999); - return createPhoneNumberSafely(areaCode, centralOfficeCode, phoneline); + return createPhoneNumberSafely(areaCode, centralOfficeCode, phoneLine); } @@ -48,9 +49,19 @@ public static PhoneNumber createRandomPhoneNumber() { * @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) { + public static PhoneNumber createPhoneNumberSafely(int areaCode, int centralOfficeCode, int phoneLineCode) { + //StringFormatter.format(%2) + StringBuilder sb = new StringBuilder(); - sb.append("(" + areaCode + ")" + "-" + centralOfficeCode + "-" + phoneLineCode); + // sb.append("("); + // sb.append(String.format("%02d", areaCode)); + // sb.append(")"); + // sb.append("-"); + // sb.append(String.format("%02d", centralOfficeCode)); + // sb.append("-"); + // sb.append(String.format("%03d", phoneLineCode)); + + sb.append("(" + areaCode + ")" + "-" + centralOfficeCode + "-" + phoneLineCode); String s = sb.toString(); try { return createPhoneNumber(s); diff --git a/src/test/java/com/zipcodewilmington/PhoneNumberFactoryTest.java b/src/test/java/com/zipcodewilmington/PhoneNumberFactoryTest.java index a607c50..87b6178 100644 --- a/src/test/java/com/zipcodewilmington/PhoneNumberFactoryTest.java +++ b/src/test/java/com/zipcodewilmington/PhoneNumberFactoryTest.java @@ -83,7 +83,7 @@ public void testCreateRandomPhoneNumber() { // : Given // : When PhoneNumber phoneNumber = PhoneNumberFactory.createRandomPhoneNumber(); - + // : Then Assert.assertTrue(phoneNumber != null); }