]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.api.uuid/src/org/argeo/api/uuid/GUID.java
Improve build and local deployment
[lgpl/argeo-commons.git] / org.argeo.api.uuid / src / org / argeo / api / uuid / GUID.java
1 package org.argeo.api.uuid;
2
3 import java.util.UUID;
4
5 /**
6 * A variant 6 {@link UUID}.
7 *
8 * @see "https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.1"
9 */
10 public class GUID extends TypedUuid {
11 private static final long serialVersionUID = APM.SERIAL;
12
13 /** Constructor based on a {@link UUID}. */
14 public GUID(UUID uuid) {
15 super(uuid);
16 if (uuid.variant() != 6)
17 throw new IllegalArgumentException("The provided UUID is not a GUID.");
18 }
19
20 /**
21 * Formats N, D, B, P are supported:
22 * <ul>
23 * <li>D: 1db31359-bdd8-5a0f-b672-30c247d582c5</li>
24 * <li>N: 1db31359bdd85a0fb67230c247d582c5</li>
25 * <li>B: {1db31359-bdd8-5a0f-b672-30c247d582c5}</li>
26 * <li>P: (1db31359-bdd8-5a0f-b672-30c247d582c5)</li>
27 * </ul>
28 *
29 * @see "https://docs.microsoft.com/en-us/dotnet/api/system.guid.tostring"
30 */
31 public static String toString(UUID uuid, char format, boolean upperCase) {
32 String str;
33 switch (format) {
34 case 'D':
35 str = uuid.toString();
36 break;
37 case 'N':
38 str = UuidBinaryUtils.toCompact(uuid);
39 break;
40 case 'B':
41 str = "{" + uuid.toString() + "}";
42 break;
43 case 'P':
44 str = "(" + uuid.toString() + ")";
45 break;
46 default:
47 throw new IllegalArgumentException("Unsupported format : " + format);
48 }
49 return upperCase ? str.toUpperCase() : str;
50 }
51
52 }