package com.qprogramming.tasq.chat; import com.qprogramming.tasq.account.Account; import com.qprogramming.tasq.account.DisplayAccount; import org.springframework.beans.BeanUtils; /** * Created by Khobar on 07.01.2017. */ public class ChatResponse { private DisplayAccount user; private String time; private String message; private ChatEvent event; public ChatResponse() { } public ChatResponse(ResponseBuilder builder) { this.user = builder.user; this.time = builder.time; this.message = builder.message; this.event = builder.event; } /** * Create new message response out of chatmessage * * @param message */ public ChatResponse(ChatMessage message) { BeanUtils.copyProperties(message, this); if (message.getAccount() != null) { user = new DisplayAccount(message.getAccount()); } this.event = ChatEvent.MESSAGE; } public String getTime() { return time; } public void setTime(String time) { this.time = time; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public DisplayAccount getUser() { return user; } public void setUser(DisplayAccount user) { this.user = user; } public ChatEvent getEvent() { return event; } public void setEvent(ChatEvent event) { this.event = event; } public static class ResponseBuilder { private DisplayAccount user; private String time; private String message; private ChatEvent event; public ResponseBuilder author(DisplayAccount author) { this.user = author; return this; } public ResponseBuilder user(Account author) { if (author != null) { this.user = new DisplayAccount(author); } return this; } public ResponseBuilder time(String time) { this.time = time; return this; } public ResponseBuilder message(String message) { this.message = message; return this; } public ResponseBuilder event(ChatEvent event) { this.event = event; return this; } public ChatResponse build() { return new ChatResponse(this); } } }