package org.sef4j.testwebapp.service;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Component
public class ChatService {
private static final Logger LOG = LoggerFactory.getLogger(ChatService.class);
public static class ChatMessage {
private final String from;
private final Date date;
private final String text;
public ChatMessage(String from, Date date, String text) {
super();
this.from = from;
this.date = date;
this.text = text;
}
public String getFrom() {
return from;
}
public Date getDate() {
return date;
}
public String getText() {
return text;
}
}
private static class ChatEntry {
final String id;
private List<ChatMessage> messages = new ArrayList<ChatMessage>();
public ChatEntry(String id) {
this.id = id;
}
public void addMessage(String from, Date date, String text) {
messages.add(new ChatMessage(from, date, text));
}
}
private Map<String,ChatEntry> chats = new HashMap<String,ChatEntry>();
// ------------------------------------------------------------------------
public ChatService() {
createChat("chat0");
createChat("chat1");
}
// ------------------------------------------------------------------------
public Collection<String> findChats() {
Collection<String> res = chats.keySet();
return res;
}
public void createChat(String id) {
LOG.info("createChat chatId:" + id);
ChatEntry res = chats.get(id);
if (res == null) {
res = new ChatEntry(id);
chats.put(id, res);
}
}
public List<ChatMessage> findChatMessages(String id) {
LOG.info("findChatMessages chatId:" + id);
ChatEntry chat = safeGetChat(id);
return chat.messages;
}
public void sendChatMessage(String id, String text) {
LOG.info("sendChatMessage chatId:" + id + ", text:" + text);
ChatEntry chat = safeGetChat(id);
String from = "<<TODO currentUser>>";
Date now = new Date();
chat.addMessage(from, now, text);
}
private ChatEntry safeGetChat(String id) {
ChatEntry chat = chats.get(id);
if (chat == null) {
throw new IllegalArgumentException("chat not found '" + id + "'");
}
return chat;
}
}