package org.jblooming.messaging;
import org.jblooming.waf.settings.ApplicationState;
import org.jblooming.operator.Operator;
import java.util.List;
import java.util.ArrayList;
import java.util.Date;
import java.io.Serializable;
public class ChatUtilities {
/**
* @param chatWith is the operator id to chat with. If null the public thread is given
* @param loggedId
* @param howManyMessages
* @return the list with the last "howManyMessages" message thread. The oldest one is the first.
*/
public static List<ChatMessage> getChatThread(Serializable chatWith, Serializable loggedId, int howManyMessages) {
List<ChatMessage> messageList = (List) ApplicationState.applicationParameters.get("MESSAGELIST");
List<ChatMessage> list = null;
if (messageList != null && messageList.size()>0) {
List<ChatMessage> filteredMessageList = new ArrayList<ChatMessage>();
for (int j = 0; j < messageList.size(); j++) {
ChatMessage msg = messageList.get(j);
if (chatWith != null) { // test if filtering is active get only messages logged->chatWith & chatWith->logged
if (msg != null && msg.fromID != null && msg.toID != null &&
((msg.fromID.equals(chatWith) && msg.toID.equals(loggedId)) ||
(msg.toID.equals(chatWith) && msg.fromID.equals(loggedId)))
) {
filteredMessageList.add(msg);
}
} else { // chatWith for public or to logged
if (msg != null && (msg.toID == null || loggedId.equals(msg.toID))) {
filteredMessageList.add(msg);
}
}
if (filteredMessageList.size() >= howManyMessages)
break;
}
list = filteredMessageList;
}
return list;
}
public static ChatMessage getLastUserMessage(Serializable id) {
List<ChatMessage> msgs =getChatThread(null,id,1);
if (msgs!=null&&msgs.size()>0)
return msgs.get(0);
else
return null;
}
public static String getHtmlTagForMessage(ChatMessage msg, Serializable loggedId) {
boolean isToMe = (msg.toID != null && msg.toID.equals(loggedId));
boolean isFromMe = (msg.fromID != null && msg.fromID.equals(loggedId));
String tag;
if (isToMe)
tag = "B";
else if (isFromMe)
tag = "I";
else
tag = null;
return tag;
}
public static class ChatMessage {
public String messageBody;
public String fromID;
public String from;
public String toID;
public String to;
public int numberOfTries;
public Date received;
}
}