package com.mavlushechka.notaryqueue.model; import java.io.Serializable; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.Objects; public class Client implements Serializable { public String numberInQueue; public String name; public LocalTime localTime; public String clientDocumentType; private Status status; private boolean isClientDocumentTypeVisible; private boolean isLocalTimeVisible; public Client() { } public Client(Client client) { this.numberInQueue = client.numberInQueue; this.name = client.name; this.status = client.status; this.clientDocumentType = client.clientDocumentType; this.isClientDocumentTypeVisible = client.isClientDocumentTypeVisible; this.localTime = client.localTime; this.isLocalTimeVisible = client.isLocalTimeVisible; } public Client(String numberInQueue, String name, Status status, String clientDocumentType, boolean isClientDocumentTypeVisible, LocalTime localTime, boolean isLocalTimeVisible) { this.numberInQueue = numberInQueue; this.name = name; this.status = status; this.clientDocumentType = clientDocumentType; this.isClientDocumentTypeVisible = isClientDocumentTypeVisible; this.localTime = localTime; this.isLocalTimeVisible = isLocalTimeVisible; } public String getNumberInQueue() { return numberInQueue; } public void setNumberInQueue(String numberInQueue) { this.numberInQueue = numberInQueue; } public String getName() { return name; } public void setName(String name) { this.name = name; } public LocalTime getLocalTime() { return localTime; } public void setLocalTime(LocalTime localTime) { this.localTime = localTime; } public String getClientDocumentType() { return clientDocumentType; } public void setClientDocumentType(String clientDocumentType) { this.clientDocumentType = clientDocumentType; } public Status getStatus() { return status; } public void setStatus(Status status) { this.status = status; } public boolean isClientDocumentTypeVisible() { return isClientDocumentTypeVisible; } public void setClientDocumentTypeVisible(boolean clientDocumentTypeVisible) { isClientDocumentTypeVisible = clientDocumentTypeVisible; } public boolean isLocalTimeVisible() { return isLocalTimeVisible; } public void setLocalTimeVisible(boolean localTimeVisible) { isLocalTimeVisible = localTimeVisible; } @Override public boolean equals(Object object) { if (this == object) return true; if (object == null || getClass() != object.getClass()) return false; Client client = (Client) object; return isClientDocumentTypeVisible == client.isClientDocumentTypeVisible && isLocalTimeVisible == client.isLocalTimeVisible && Objects.equals(numberInQueue, client.numberInQueue) && Objects.equals(name, client.name) && Objects.equals(localTime, client.localTime) && Objects.equals(clientDocumentType, client.clientDocumentType) && status == client.status; } @Override public int hashCode() { return Objects.hash(numberInQueue, name, localTime, clientDocumentType, status, isClientDocumentTypeVisible, isLocalTimeVisible); } @Override public String toString() { String string = numberInQueue + ". " + name; if (isClientDocumentTypeVisible || isLocalTimeVisible) { string += " ("; if (isClientDocumentTypeVisible) { string += clientDocumentType; } if (isLocalTimeVisible) { string += (isClientDocumentTypeVisible ? ", " : "") + localTime.format(DateTimeFormatter.ofPattern("hh:mm")); } string += ")"; } return string; } }