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