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 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 Builder builder() { return new Builder<>(); } private static class Builder { 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 build() { return new ViewInterlocutor<>(name, address, accountAddress, subscriptionMode, lastActivity, isTyping, status, avatar); } } }