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