package me.moodcat.backend.rooms;
import me.moodcat.database.controllers.UserDAO;
import me.moodcat.database.entities.ChatMessage;
import me.moodcat.database.entities.Room;
import me.moodcat.database.entities.User;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.persist.Transactional;
/**
* ChatMessageFactory.
*/
public class ChatMessageFactory {
private final Provider<UserDAO> userDAOProvider;
@Inject
public ChatMessageFactory(final Provider<UserDAO> userDAOProvider) {
this.userDAOProvider = userDAOProvider;
}
/**
* Create a ChatMessage entity according to the ChatMessage instance
* provided by the backend.
*
* @param room
* The room the chat message was posted in.
* @param chatMessageInstance
* The ChatMessage.
* @return The ChatMessage entity to store in the database.
*/
@Transactional
public ChatMessage create(final Room room, final ChatMessageInstance chatMessageInstance) {
final ChatMessage chatMessage = new ChatMessage();
final User user = userDAOProvider.get().findById(
chatMessageInstance.getUserId());
chatMessage.setUser(user);
chatMessage.setMessage(chatMessageInstance.getMessage());
chatMessage.setTimestamp(chatMessageInstance.getTimestamp());
chatMessage.setId(chatMessageInstance.getId());
chatMessage.setRoom(room);
return chatMessage;
}
}