-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStrongPassword.java
More file actions
68 lines (57 loc) · 2.38 KB
/
Copy pathStrongPassword.java
File metadata and controls
68 lines (57 loc) · 2.38 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
62
63
64
65
66
67
68
package StringSecure;
public class StrongPassword {
private final int minimumNumberOfDigits;
private final int minimumNumberOfCapitalLetters;
private final int minimumNumberOfSpecialCharacters;
private final int minimumLength;
private int length;
private int numberOfDigits;
private int numberOfSpecialCharacters;
private int numberOfCapitalLetters;
private StrongPassword(Builder builder) {
this.minimumNumberOfDigits = builder.minimumNumberOfDigits;
this.minimumNumberOfCapitalLetters = builder.minimumNumberOfCapitalLetters;
this.minimumNumberOfSpecialCharacters = builder.minimumNumberOfSpecialCharacters;
this.minimumLength = builder.minimumLength;
}
public boolean isWeek(String s) {
final boolean isWeekPassword = (length < minimumLength)
|| (numberOfDigits < minimumNumberOfDigits)
|| (numberOfSpecialCharacters < minimumNumberOfSpecialCharacters)
|| (numberOfCapitalLetters < minimumNumberOfCapitalLetters);
length++;
if (Character.isDigit(s.charAt(0))) {
numberOfDigits++;
} else if (!Character.isLetter(s.charAt(0))) {
numberOfSpecialCharacters++;
} else if (s.equals(s.toUpperCase())) {
numberOfCapitalLetters++;
}
return isWeekPassword;
}
public static class Builder {
private int minimumNumberOfDigits;
private int minimumNumberOfCapitalLetters;
private int minimumNumberOfSpecialCharacters;
private int minimumLength;
public Builder minimumNumberOfDigits(int minimumNumberOfDigits) {
this.minimumNumberOfDigits = minimumNumberOfDigits;
return this;
}
public Builder minimumNumberOfCapitalLetters(int minimumNumberOfCapitalLetters) {
this.minimumNumberOfCapitalLetters = minimumNumberOfCapitalLetters;
return this;
}
public Builder minimumNumberOfSpecialCharacters(int minimumNumberOfSpecialCharacters) {
this.minimumNumberOfSpecialCharacters = minimumNumberOfSpecialCharacters;
return this;
}
public Builder minimumLength(int minimumLength) {
this.minimumLength = minimumLength;
return this;
}
public StrongPassword build() {
return new StrongPassword(this);
}
}
}