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