Mercury-IM/view_entity/src/main/java/org/mercury_im/messenger/view/entity/ViewInterlocutor.java

135 lines
3.5 KiB
Java

package org.mercury_im.messenger.view.entity;
import org.mercury_im.messenger.entity.contact.SubscriptionMode;
import org.mercury_im.messenger.view.entity.definition.InterlocutorViewEntity;
public class ViewInterlocutor<A> implements InterlocutorViewEntity {
private final String name;
private final String address;
private final String accountAddress;
private final SubscriptionMode subscriptionMode;
private final String lastActivity;
private final boolean isTyping;
private final String status;
private final A avatar;
private ViewInterlocutor(String name,
String address,
String accountAddress,
SubscriptionMode subscriptionMode,
String lastActivity,
boolean isTyping,
String status,
A avatar) {
this.name = name;
this.address = address;
this.accountAddress = accountAddress;
this.subscriptionMode = subscriptionMode;
this.lastActivity = lastActivity;
this.isTyping = isTyping;
this.status = status;
this.avatar = avatar;
}
@Override
public String getName() {
return name;
}
@Override
public String getAddress() {
return address;
}
@Override
public String getAccountAddress() {
return accountAddress;
}
@Override
public SubscriptionMode getSubscriptionMode() {
return subscriptionMode;
}
@Override
public String getLastActivity() {
return lastActivity;
}
@Override
public boolean isTyping() {
return isTyping;
}
@Override
public String getStatus() {
return status;
}
public A getAvatar() {
return avatar;
}
public static <A> Builder<A> builder() {
return new Builder<>();
}
private static class Builder<A> {
private String name;
private String address;
private String accountAddress;
private SubscriptionMode subscriptionMode;
private String lastActivity;
private boolean isTyping;
private String status;
private A avatar;
public Builder setName(String name) {
this.name = name;
return this;
}
public Builder setAddress(String address) {
this.address = address;
return this;
}
public Builder setAccountAddress(String accountAddress) {
this.accountAddress = accountAddress;
return this;
}
public Builder setSubscriptionMode(SubscriptionMode subscriptionMode) {
this.subscriptionMode = subscriptionMode;
return this;
}
public Builder setLastActivity(String lastActivity) {
this.lastActivity = lastActivity;
return this;
}
public Builder setIsTyping(boolean isTyping) {
this.isTyping = isTyping;
return this;
}
public Builder setStatus(String status) {
this.status = status;
return this;
}
public Builder setAvatar(A avatar) {
this.avatar = avatar;
return this;
}
public ViewInterlocutor<A> build() {
return new ViewInterlocutor<>(name, address, accountAddress, subscriptionMode,
lastActivity, isTyping, status, avatar);
}
}
}