]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/storage/recipients/Contact.java
25d6151ff101baa49157bf8936fd16bce4fbffe4
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / storage / recipients / Contact.java
1 package org.asamk.signal.manager.storage.recipients;
2
3 import java.util.Objects;
4
5 public class Contact {
6
7 private final String name;
8
9 private final String color;
10
11 private final int messageExpirationTime;
12
13 private final boolean blocked;
14
15 private final boolean archived;
16
17 private final boolean profileSharingEnabled;
18
19 public Contact(
20 final String name,
21 final String color,
22 final int messageExpirationTime,
23 final boolean blocked,
24 final boolean archived,
25 final boolean profileSharingEnabled
26 ) {
27 this.name = name;
28 this.color = color;
29 this.messageExpirationTime = messageExpirationTime;
30 this.blocked = blocked;
31 this.archived = archived;
32 this.profileSharingEnabled = profileSharingEnabled;
33 }
34
35 private Contact(final Builder builder) {
36 name = builder.name;
37 color = builder.color;
38 messageExpirationTime = builder.messageExpirationTime;
39 blocked = builder.blocked;
40 archived = builder.archived;
41 profileSharingEnabled = builder.profileSharingEnabled;
42 }
43
44 public static Builder newBuilder() {
45 return new Builder();
46 }
47
48 public static Builder newBuilder(final Contact copy) {
49 Builder builder = new Builder();
50 builder.name = copy.getName();
51 builder.color = copy.getColor();
52 builder.messageExpirationTime = copy.getMessageExpirationTime();
53 builder.blocked = copy.isBlocked();
54 builder.archived = copy.isArchived();
55 builder.profileSharingEnabled = copy.isProfileSharingEnabled();
56 return builder;
57 }
58
59 public String getName() {
60 return name;
61 }
62
63 public String getColor() {
64 return color;
65 }
66
67 public int getMessageExpirationTime() {
68 return messageExpirationTime;
69 }
70
71 public boolean isBlocked() {
72 return blocked;
73 }
74
75 public boolean isArchived() {
76 return archived;
77 }
78
79 public boolean isProfileSharingEnabled() {
80 return profileSharingEnabled;
81 }
82
83 @Override
84 public boolean equals(final Object o) {
85 if (this == o) return true;
86 if (o == null || getClass() != o.getClass()) return false;
87 final Contact contact = (Contact) o;
88 return messageExpirationTime == contact.messageExpirationTime
89 && blocked == contact.blocked
90 && archived == contact.archived
91 && profileSharingEnabled == contact.profileSharingEnabled
92 && Objects.equals(name, contact.name)
93 && Objects.equals(color, contact.color);
94 }
95
96 @Override
97 public int hashCode() {
98 return Objects.hash(name, color, messageExpirationTime, blocked, archived, profileSharingEnabled);
99 }
100
101 public static final class Builder {
102
103 private String name;
104 private String color;
105 private int messageExpirationTime;
106 private boolean blocked;
107 private boolean archived;
108 private boolean profileSharingEnabled;
109
110 private Builder() {
111 }
112
113 public Builder withName(final String val) {
114 name = val;
115 return this;
116 }
117
118 public Builder withColor(final String val) {
119 color = val;
120 return this;
121 }
122
123 public Builder withMessageExpirationTime(final int val) {
124 messageExpirationTime = val;
125 return this;
126 }
127
128 public Builder withBlocked(final boolean val) {
129 blocked = val;
130 return this;
131 }
132
133 public Builder withArchived(final boolean val) {
134 archived = val;
135 return this;
136 }
137
138 public Builder withProfileSharingEnabled(final boolean val) {
139 profileSharingEnabled = val;
140 return this;
141 }
142
143 public Contact build() {
144 return new Contact(this);
145 }
146 }
147 }