1
2
3
4 package de.powerstat.validation.values;
5
6
7 import java.util.Objects;
8 import java.util.regex.Pattern;
9
10 import de.powerstat.validation.interfaces.IValueObject;
11
12
13
14
15
16
17
18 public final class SubBuilding implements Comparable<SubBuilding>, IValueObject
19 {
20
21
22
23
24
25
26
27
28 private static final Pattern SUBBUILDING_REGEXP = Pattern.compile("^[\\p{L}][\\p{L}\\p{Digit}., -]*$");
29
30
31
32
33 private final String subBuilding;
34
35
36
37
38
39
40
41
42
43 private SubBuilding(final String subBuilding)
44 {
45 super();
46 Objects.requireNonNull(subBuilding, "subBuilding");
47 if ((subBuilding.length() < 1) || (subBuilding.length() > 32))
48 {
49 throw new IllegalArgumentException("SubBuilding with wrong length");
50 }
51 if (!SubBuilding.SUBBUILDING_REGEXP.matcher(subBuilding).matches())
52 {
53 throw new IllegalArgumentException("SubBuilding with wrong format");
54 }
55 this.subBuilding = subBuilding;
56 }
57
58
59
60
61
62
63
64
65 public static SubBuilding of(final String subBuilding)
66 {
67
68
69
70
71
72
73
74
75
76
77
78
79
80 return new SubBuilding(subBuilding);
81 }
82
83
84
85
86
87
88
89 @Override
90 public String stringValue()
91 {
92 return this.subBuilding;
93 }
94
95
96
97
98
99
100
101
102 @Override
103 public int hashCode()
104 {
105 return this.subBuilding.hashCode();
106 }
107
108
109
110
111
112
113
114
115
116 @Override
117 public boolean equals(final Object obj)
118 {
119 if (this == obj)
120 {
121 return true;
122 }
123 if (!(obj instanceof SubBuilding))
124 {
125 return false;
126 }
127 final SubBuilding other = (SubBuilding)obj;
128 return this.subBuilding.equals(other.subBuilding);
129 }
130
131
132
133
134
135
136
137
138
139
140
141
142 @Override
143 public String toString()
144 {
145 final var builder = new StringBuilder(25);
146 builder.append("SubBuilding[subBuilding=").append(this.subBuilding).append(']');
147 return builder.toString();
148 }
149
150
151
152
153
154
155
156
157
158 @Override
159 public int compareTo(final SubBuilding obj)
160 {
161 Objects.requireNonNull(obj, "obj");
162 return this.subBuilding.compareTo(obj.subBuilding);
163 }
164
165 }