PhoneNumberFactory.java 2.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package com.zipcodewilmington.phone;
  2. import com.zipcodewilmington.exceptions.InvalidPhoneNumberFormatException;
  3. import java.util.logging.Level;
  4. import java.util.logging.Logger;
  5. import static com.zipcodewilmington.tools.RandomNumberFactory.createInteger;
  6. /**
  7. * Created by leon on 5/1/17.
  8. */
  9. public final class PhoneNumberFactory {
  10. private static final Logger logger = Logger.getGlobal();
  11. private PhoneNumberFactory() {
  12. /** This constructor is private
  13. * This class is uninstantiable */
  14. }
  15. /**
  16. * @param phoneNumberCount - number of PhoneNumber objects to instantiate
  17. * @return array of randomly generated PhoneNumber objects
  18. */ //TODO - Implement logic
  19. public static PhoneNumber[] createRandomPhoneNumberArray(int phoneNumberCount) {
  20. PhoneNumber[] phoneArray = new PhoneNumber[phoneNumberCount];
  21. for (PhoneNumber number : phoneArray) { number = createRandomPhoneNumber(); }
  22. return phoneArray;
  23. }
  24. /**
  25. * @return an instance of PhoneNumber with randomly generated phone number value
  26. */ //TODO - Implement logic
  27. public static PhoneNumber createRandomPhoneNumber() {
  28. return createPhoneNumberSafely(createInteger(100,999), createInteger(100,999), createInteger(1000,9999));
  29. }
  30. /**
  31. * @param areaCode - 3 digit code
  32. * @param centralOfficeCode - 3 digit code
  33. * @param phoneLineCode - 4 digit code
  34. * @return a new phone number object
  35. */ //TODO - if input is valid, return respective PhoneNumber object, else return null
  36. public static PhoneNumber createPhoneNumberSafely(int areaCode, int centralOfficeCode, int phoneLineCode) {
  37. String newNumber = "(" + areaCode + ")" + "-" + centralOfficeCode + "-" + phoneLineCode;
  38. try {
  39. return createPhoneNumber(newNumber);
  40. } catch (InvalidPhoneNumberFormatException e) {
  41. logger.log(Level.INFO, newNumber + " is not a valid phone number");
  42. return null;
  43. }
  44. }
  45. /**
  46. * @param phoneNumberString - some String corresponding to a phone number whose format is `(###)-###-####`
  47. * @return a new phone number object
  48. * @throws InvalidPhoneNumberFormatException - thrown if phoneNumberString does not match acceptable format
  49. */ // TODO - Add throws statement to method signature
  50. public static PhoneNumber createPhoneNumber(String phoneNumberString) throws InvalidPhoneNumberFormatException{
  51. logger.log(Level.INFO, "Attempting to create a new PhoneNumber object with value of " + phoneNumberString);
  52. return new PhoneNumber(phoneNumberString);
  53. }
  54. }