1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.bremersee.ldaptive.transcoder;
18
19 import static java.util.Objects.isNull;
20
21 import lombok.EqualsAndHashCode;
22 import lombok.Getter;
23 import lombok.ToString;
24
25
26
27
28
29
30 @EqualsAndHashCode
31 @ToString
32 @Getter
33 public class UserAccountControl {
34
35
36
37
38 static final int DISABLED_ACCOUNT = 1 << 1;
39
40
41
42
43 static final int NORMAL_ACCOUNT = 1 << 9;
44
45
46
47
48 static final int DONT_EXPIRE_PASSWORD = 1 << 16;
49
50 private int value;
51
52
53
54
55 public UserAccountControl() {
56 this(null);
57 }
58
59
60
61
62
63
64 public UserAccountControl(Integer value) {
65 if (isNull(value) || value < 0) {
66 this.value = NORMAL_ACCOUNT;
67 setEnabled(true);
68 setPasswordExpirationEnabled(false);
69 } else {
70 this.value = value;
71 }
72 }
73
74
75
76
77
78
79 public boolean isNormalAccount() {
80 return (value & NORMAL_ACCOUNT) == NORMAL_ACCOUNT;
81 }
82
83
84
85
86
87
88 public void setNormalAccount(boolean isNormalAccount) {
89 if (isNormalAccount && !isNormalAccount()) {
90 value = value + NORMAL_ACCOUNT;
91 } else if (!isNormalAccount && isNormalAccount()) {
92 value = value - NORMAL_ACCOUNT;
93 }
94 }
95
96
97
98
99
100
101 public boolean isEnabled() {
102 return (value & DISABLED_ACCOUNT) != DISABLED_ACCOUNT;
103 }
104
105
106
107
108
109
110 public void setEnabled(boolean enabled) {
111 if (enabled && !isEnabled()) {
112 value = value - DISABLED_ACCOUNT;
113 } else if (!enabled && isEnabled()) {
114 value = value + DISABLED_ACCOUNT;
115 }
116 }
117
118
119
120
121
122
123 public boolean isPasswordExpirationEnabled() {
124 return (value & DONT_EXPIRE_PASSWORD) != DONT_EXPIRE_PASSWORD;
125 }
126
127
128
129
130
131
132 public void setPasswordExpirationEnabled(boolean enabled) {
133 if (enabled && !isPasswordExpirationEnabled()) {
134 value = value - DONT_EXPIRE_PASSWORD;
135 } else if (!enabled && isPasswordExpirationEnabled()) {
136 value = value + DONT_EXPIRE_PASSWORD;
137 }
138 }
139
140 }