Bläddra i källkod

Merge 83823c1ca6c7c8115f276323798dd65c298f1295 into 0665dd6f3de2bb92a7f856bde34efac87df0531f

Vincent Masiello 8 år sedan
förälder
incheckning
628e8efd00
No account linked to committer's email

+ 0
- 1
pom.xml Visa fil

@@ -26,5 +26,4 @@
26 26
             <version>4.12</version>
27 27
         </dependency>
28 28
     </dependencies>
29
-
30 29
 </project>

+ 15
- 3
src/main/java/com/zipcodewilmington/phone/PhoneNumber.java Visa fil

@@ -23,15 +23,27 @@ public final class PhoneNumber {
23 23
     }
24 24
 
25 25
     public String getAreaCode() {
26
-        return toString().substring(1, 4);
26
+        try {
27
+            return toString().substring(1, 4);
28
+        } catch (NullPointerException npe) {
29
+            return null;
30
+        }
27 31
     }
28 32
 
29 33
     public String getCentralOfficeCode() {
30
-        return toString().substring(6, 9);
34
+        try {
35
+            return toString().substring(6, 9);
36
+        } catch (NullPointerException npe) {
37
+            return null;
38
+        }
31 39
     }
32 40
 
33 41
     public String getPhoneLineCode() {
34
-        return toString().substring(10, 14);
42
+        try {
43
+            return toString().substring(10, 14);
44
+        } catch (NullPointerException npe) {
45
+            return null;
46
+        }
35 47
 }
36 48
 
37 49
     @Override

+ 31
- 5
src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java Visa fil

@@ -2,6 +2,7 @@ package com.zipcodewilmington.phone;
2 2
 
3 3
 import com.zipcodewilmington.exceptions.InvalidPhoneNumberFormatException;
4 4
 
5
+import java.util.Random;
5 6
 import java.util.logging.Logger;
6 7
 
7 8
 /**
@@ -20,16 +21,34 @@ public final class PhoneNumberFactory {
20 21
      * @return array of randomly generated PhoneNumber objects
21 22
      */ //TODO - Implement logic
22 23
     public static PhoneNumber[] createRandomPhoneNumberArray(int phoneNumberCount) {
23
-        return null;
24
+        PhoneNumber[] ret = new PhoneNumber[phoneNumberCount];
25
+        for (int i=0;i<ret.length;i++)
26
+            ret[i] = createRandomPhoneNumber();
27
+        return ret;
24 28
     }
25 29
 
26 30
     /**
27 31
      * @return an instance of PhoneNumber with randomly generated phone number value
28 32
      */ //TODO - Implement logic
29 33
     public static PhoneNumber createRandomPhoneNumber() {
30
-        return createPhoneNumberSafely(-1, -1, -1);
34
+        return createPhoneNumberSafely(randAreaOrOfficeCode(), randAreaOrOfficeCode(), randLineCode());
31 35
     }
32 36
 
37
+    static int randAreaOrOfficeCode() {
38
+        return genRandomSequence(3);
39
+    }
40
+
41
+    static int randLineCode() {
42
+        return genRandomSequence(4);
43
+    }
44
+
45
+    static int genRandomSequence(int howManyDigits) {
46
+        Random r = new Random();
47
+        int sum = 0;
48
+        for (int i=0;i<howManyDigits;i++)
49
+            sum += r.nextInt(10) * Math.pow(10, i);
50
+        return sum;
51
+    }
33 52
 
34 53
     /**
35 54
      * @param areaCode          - 3 digit code
@@ -38,7 +57,14 @@ public final class PhoneNumberFactory {
38 57
      * @return a new phone number object
39 58
      */ //TODO - if input is valid, return respective PhoneNumber object, else return null
40 59
     public static PhoneNumber createPhoneNumberSafely(int areaCode, int centralOfficeCode, int phoneLineCode) {
41
-        return createPhoneNumber(null);
60
+        String phoneNumberString = String.format("(%03d)-%03d-%04d", areaCode, centralOfficeCode, phoneLineCode);
61
+        try {
62
+            logger.info("Attempting to create a new PhoneNumber object with a value of " + phoneNumberString);
63
+            return createPhoneNumber(phoneNumberString);
64
+        } catch (InvalidPhoneNumberFormatException ipne) {
65
+            logger.info(phoneNumberString + "  is not a valid phone number");
66
+            return null;
67
+        }
42 68
     }
43 69
 
44 70
     /**
@@ -46,7 +72,7 @@ public final class PhoneNumberFactory {
46 72
      * @return a new phone number object
47 73
      * @throws InvalidPhoneNumberFormatException - thrown if phoneNumberString does not match acceptable format
48 74
      */ // TODO - Add throws statement to method signature
49
-    public static PhoneNumber createPhoneNumber(String phoneNumberString) {
50
-        return null;
75
+    public static PhoneNumber createPhoneNumber(String phoneNumberString) throws InvalidPhoneNumberFormatException{
76
+        return new PhoneNumber(phoneNumberString);
51 77
     }
52 78
 }

+ 8
- 4
src/main/java/com/zipcodewilmington/tools/RandomNumberFactory.java Visa fil

@@ -1,6 +1,6 @@
1 1
 package com.zipcodewilmington.tools;
2
-import java.awt.*;
3
-import java.util.*;
2
+
3
+import java.util.Random;
4 4
 
5 5
 /**
6 6
  * Created by Leon on 2/4/2017.
@@ -9,12 +9,16 @@ import java.util.*;
9 9
 public abstract class RandomNumberFactory {
10 10
     private static final Random random = new Random();
11 11
 
12
-    /** @return a random float between the specified min and max numeric range */
12
+    /**
13
+     * @return a random float between the specified min and max numeric range
14
+     */
13 15
     public static Float createFloat(float min, float max) {
14 16
         return random.nextFloat() * (max - min) + min;
15 17
     }
16 18
 
17
-    /** @return a random integer between the specified min and max numeric range */
19
+    /**
20
+     * @return a random integer between the specified min and max numeric range
21
+     */
18 22
     public static Integer createInteger(Integer min, Integer max) {
19 23
         return createFloat(min, max).intValue();
20 24
     }

+ 5
- 1
src/test/java/com/zipcodewilmington/PhoneNumberFactoryTest.java Visa fil

@@ -30,8 +30,12 @@ public class PhoneNumberFactoryTest {
30 30
         // : When
31 31
         PhoneNumber phoneNumber = PhoneNumberFactory.createPhoneNumberSafely(areaCode, centralOfficeCode, phoneLineCode);
32 32
 
33
+        //looks good to me...(###)-###-####
33 34
         // : Then
34
-        Assert.assertEquals(null, phoneNumber);
35
+
36
+
37
+        // I'm a doctor not an operator.
38
+        Assert.assertNotNull(phoneNumber);
35 39
     }
36 40
 
37 41
     @Test