diff --git a/src/main/java/com/zipcodewilmington/exceptions/InvalidPhoneNumberFormatException.java b/src/main/java/com/zipcodewilmington/exceptions/InvalidPhoneNumberFormatException.java index 5d3fb58..9c1a95a 100644 --- a/src/main/java/com/zipcodewilmington/exceptions/InvalidPhoneNumberFormatException.java +++ b/src/main/java/com/zipcodewilmington/exceptions/InvalidPhoneNumberFormatException.java @@ -4,4 +4,6 @@ * Created by leon on 5/10/17. */ // Checked Exception public final class InvalidPhoneNumberFormatException extends Exception { + + } diff --git a/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java b/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java index 36d323b..1e8f98b 100644 --- a/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java +++ b/src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java @@ -1,8 +1,12 @@ package com.zipcodewilmington.phone; import com.zipcodewilmington.exceptions.InvalidPhoneNumberFormatException; +import com.zipcodewilmington.tools.RandomNumberFactory; +import java.util.logging.ConsoleHandler; +import java.util.logging.Level; import java.util.logging.Logger; +import java.util.logging.SimpleFormatter; /** * Created by leon on 5/1/17. @@ -20,14 +24,25 @@ 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(); + } + + 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); + + Integer areaCode = RandomNumberFactory.createInteger(101, 999); + Integer centralOfficeCode = RandomNumberFactory.createInteger(101, 999); + Integer phoneLineCode = RandomNumberFactory.createInteger(1001, 9999); + + return createPhoneNumberSafely(areaCode,centralOfficeCode,phoneLineCode); } @@ -36,17 +51,35 @@ public static PhoneNumber createRandomPhoneNumber() { * @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 + */ //TODO - if input is valid, return respective PhoneNumber object, else return null (DONE) public static PhoneNumber createPhoneNumberSafely(int areaCode, int centralOfficeCode, int phoneLineCode) { - return createPhoneNumber(null); + + PhoneNumber phoneNumber = null; + try { + phoneNumber = createPhoneNumber(String.format("(%s)-%s-%s",areaCode,centralOfficeCode,phoneLineCode)); + } catch (InvalidPhoneNumberFormatException e) { + e.printStackTrace(); + } + return phoneNumber; } /** * @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) { - return null; + */ // TODO - Add throws statement to method signature (DONE) + public static PhoneNumber createPhoneNumber(String phoneNumberString) throws InvalidPhoneNumberFormatException { + + logger.log(Level.INFO,String.format("Attempting to create a new PhoneNumber object with a value of %s", + phoneNumberString) ); + return new PhoneNumber(phoneNumberString); + } + + + public static void main(String[] args) { + + createRandomPhoneNumber(); + createRandomPhoneNumber(); + } } diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties index 4fea3b3..f6b7c91 100644 --- a/src/main/resources/log4j.properties +++ b/src/main/resources/log4j.properties @@ -1,16 +1,34 @@ -# Root logger option -log4j.rootLogger=DEBUG, stdout, file +## Root logger option +#log4j.rootLogger=DEBUG, stdout, file +# +## Redirect log messages to console +#log4j.appender.stdout=org.apache.log4j.ConsoleAppender +#log4j.appender.stdout.Target=System.out +#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +#log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n +# +## Redirect log messages to a log file, support file rolling. +#log4j.appender.file=org.apache.log4j.RollingFileAppender +#log4j.appender.file.File=log4j-application.log +#log4j.appender.file.MaxFileSize=5MB +#log4j.appender.file.MaxBackupIndex=10 +#log4j.appender.file.layout=org.apache.log4j.PatternLayout +#log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n -# Redirect log messages to console -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.Target=System.out -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n +# Root logger option +log4j.rootLogger=INFO, file, stdout -# Redirect log messages to a log file, support file rolling. +# Direct log messages to a log file log4j.appender.file=org.apache.log4j.RollingFileAppender -log4j.appender.file.File=log4j-application.log -log4j.appender.file.MaxFileSize=5MB +#log4j.appender.file.File=${logFileLoc}/debug-log.out +log4j.appender.file.File=project.log +log4j.appender.file.MaxFileSize=10MB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.layout=org.apache.log4j.PatternLayout -log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n \ No newline at end of file +log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n + +# Direct log messages to stdout +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target=System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n \ No newline at end of file diff --git a/src/test/java/com/zipcodewilmington/PhoneNumberFactoryTest.java b/src/test/java/com/zipcodewilmington/PhoneNumberFactoryTest.java index a607c50..cf78ab1 100644 --- a/src/test/java/com/zipcodewilmington/PhoneNumberFactoryTest.java +++ b/src/test/java/com/zipcodewilmington/PhoneNumberFactoryTest.java @@ -43,7 +43,7 @@ public void testGetAreaCode() { // : When PhoneNumber phoneNumber = PhoneNumberFactory.createPhoneNumberSafely(areaCode, centralOfficeCode, phoneLineCode); - + System.out.println(phoneNumber.getAreaCode()); // : Then Assert.assertEquals(phoneNumber.getAreaCode(), areaCode.toString()); } @@ -70,9 +70,9 @@ public void testPhoneLineCode() { int centralOfficeCode = 312; Integer phoneLineCode = 5555; + // : When PhoneNumber phoneNumber = PhoneNumberFactory.createPhoneNumberSafely(areaCode, centralOfficeCode, phoneLineCode); - // : Then Assert.assertEquals(phoneNumber.getPhoneLineCode(), phoneLineCode.toString()); }