package me.moodcat.backend.rooms;
import lombok.AllArgsConstructor;
import lombok.Data;
import me.moodcat.api.models.ChatMessageModel;
import me.moodcat.database.entities.ChatMessage;
import me.moodcat.util.Transformable;
/**
* ChatMessageModel.
*/
@Data
@AllArgsConstructor
class ChatMessageInstance implements Comparable<ChatMessageInstance>,
Transformable<ChatMessageModel> {
/**
* Author for the ChatMessage.
*/
private final int userId;
/**
* Model for this ChatMessageInstance.
*/
private final ChatMessageModel model;
@Override
public int compareTo(final ChatMessageInstance other) {
return getModel().compareTo(other.getModel());
}
@Override
public ChatMessageModel transform() {
return model;
}
/**
* Id for the ChatMessage.
*
* @return the id for the chat message
*/
public Integer getId() {
return getModel().getId();
}
/**
* The actual message.
*
* @return The actual message of this chatmessage.
*/
public String getMessage() {
return getModel().getMessage();
}
/**
* The timestamp the message was posted.
*
* @return The timestamp at which the chatmessage has been received by the server.
*/
public Long getTimestamp() {
return getModel().getTimestamp();
}
/**
* Create a new ChatMessageInstance.
*
* @param chatMessage
* The ChatMessage to be created.
* @return the created ChatMessageInstance.
*/
public static ChatMessageInstance create(final ChatMessage chatMessage) {
final ChatMessageModel model = new ChatMessageModel();
model.setMessage(chatMessage.getMessage());
model.setAuthor(chatMessage.getUser().getName());
model.setTimestamp(chatMessage.getTimestamp());
model.setId(chatMessage.getId());
int userId = chatMessage.getUser().getId();
return new ChatMessageInstance(userId, model);
}
}