-
Notifications
You must be signed in to change notification settings - Fork 174
Expand file tree
/
Copy pathValidator.java
More file actions
61 lines (47 loc) · 1.66 KB
/
Validator.java
File metadata and controls
61 lines (47 loc) · 1.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package baseball.util;
import java.util.HashSet;
import java.util.Set;
import static baseball.constant.ErrorMessage.*;
public class Validator {
private static int THRESHOLD_INPUT_LENGTH = 3;
public void validateInput(String input) {
checkNumberType(input);
checkNumberLength(input);
checkDuplicateNumber(input);
}
public void validateRestart(String restart) {
checkRestartType(restart);
}
private void checkRestartType(String restart) {
if (!restart.equals("1") && !restart.equals("2")) {
throw new IllegalArgumentException(NOT_ONE_OR_TWO_ERROR.getMessage());
}
}
private void checkNumberType(String input) {
try {
Integer.parseInt(input);
} catch (NumberFormatException e) {
throw new IllegalArgumentException(NOT_NUMBER_ERROR.getMessage());
}
}
private void checkNumberLength(String input) {
if (input.length() != THRESHOLD_INPUT_LENGTH) {
throw new IllegalArgumentException(NOT_THREE_DIGIT_NUMBER_ERROR.getMessage());
}
}
private void checkDuplicateNumber(String input) {
Set<Character> set = new HashSet<>();
for (Character c : input.toCharArray()) {
checkRange(c);
if (set.contains(c)) {
throw new IllegalArgumentException(DUPLICATE_NUMBER_ERROR.getMessage());
}
set.add(c);
}
}
private void checkRange(Character number) {
if (number == null || !String.valueOf(number).matches("^[1-9]$")) {
throw new IllegalArgumentException(ZERO_NUMBER_ERROR.getMessage());
}
}
}