]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/api/RecipientIdentifier.java
Refactor NoteToSelf to singleton class
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / api / RecipientIdentifier.java
1 package org.asamk.signal.manager.api;
2
3 import org.asamk.signal.manager.groups.GroupId;
4 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
5 import org.whispersystems.signalservice.api.util.InvalidNumberException;
6 import org.whispersystems.signalservice.api.util.PhoneNumberFormatter;
7 import org.whispersystems.signalservice.api.util.UuidUtil;
8
9 import java.util.UUID;
10
11 public abstract class RecipientIdentifier {
12
13 public static class NoteToSelf extends RecipientIdentifier {
14
15 public static NoteToSelf INSTANCE = new NoteToSelf();
16
17 private NoteToSelf() {
18 }
19 }
20
21 public abstract static class Single extends RecipientIdentifier {
22
23 public static Single fromString(String identifier, String localNumber) throws InvalidNumberException {
24 return UuidUtil.isUuid(identifier)
25 ? new Uuid(UUID.fromString(identifier))
26 : new Number(PhoneNumberFormatter.formatNumber(identifier, localNumber));
27 }
28
29 public static Single fromAddress(SignalServiceAddress address) {
30 return new Uuid(address.getUuid());
31 }
32 }
33
34 public static class Uuid extends Single {
35
36 public final UUID uuid;
37
38 public Uuid(final UUID uuid) {
39 this.uuid = uuid;
40 }
41
42 @Override
43 public boolean equals(final Object o) {
44 if (this == o) return true;
45 if (o == null || getClass() != o.getClass()) return false;
46
47 final Uuid uuid1 = (Uuid) o;
48
49 return uuid.equals(uuid1.uuid);
50 }
51
52 @Override
53 public int hashCode() {
54 return uuid.hashCode();
55 }
56 }
57
58 public static class Number extends Single {
59
60 public final String number;
61
62 public Number(final String number) {
63 this.number = number;
64 }
65
66 @Override
67 public boolean equals(final Object o) {
68 if (this == o) return true;
69 if (o == null || getClass() != o.getClass()) return false;
70
71 final Number number1 = (Number) o;
72
73 return number.equals(number1.number);
74 }
75
76 @Override
77 public int hashCode() {
78 return number.hashCode();
79 }
80 }
81
82 public static class Group extends RecipientIdentifier {
83
84 public final GroupId groupId;
85
86 public Group(final GroupId groupId) {
87 this.groupId = groupId;
88 }
89
90 @Override
91 public boolean equals(final Object o) {
92 if (this == o) return true;
93 if (o == null || getClass() != o.getClass()) return false;
94
95 final Group group = (Group) o;
96
97 return groupId.equals(group.groupId);
98 }
99
100 @Override
101 public int hashCode() {
102 return groupId.hashCode();
103 }
104 }
105 }