package scrum.client.collaboration;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
import scrum.client.admin.User;
public class Chat extends GChat {
private LinkedList<ChatMessage> chatMessages = new LinkedList<ChatMessage>();
public LinkedList<ChatMessage> getChatMessages() {
return chatMessages;
}
public ChatMessage postSystemMessage(String text, boolean distribute) {
return postMessage(null, text, distribute);
}
public ChatMessage postMessage(String text) {
return postMessage(auth.getUser(), text, true);
}
private ChatMessage postMessage(User author, String text, boolean distribute) {
ChatMessage msg = new ChatMessage(project, author, text);
addChatMessage(msg);
if (distribute) dao.createChatMessage(msg);
return msg;
}
public void addChatMessage(ChatMessage msg) {
if (project == null || !msg.isProject(project)) return;
if (chatMessages.contains(msg)) return;
chatMessages.add(msg);
cleanupChatMessages();
projectWorkspaceWidgets.getSidebar().getChat().update();
}
private void cleanupChatMessages() {
for (Iterator<ChatMessage> it = chatMessages.iterator(); it.hasNext();) {
ChatMessage message = it.next();
if (message.isOld()) it.remove();
}
while (chatMessages.size() > 50)
chatMessages.remove(0);
Collections.sort(chatMessages);
}
}