package com.idega.block.messenger.business;
import java.util.HashMap;
import java.util.Vector;
import com.idega.block.messenger.data.Packet;
import com.idega.block.messenger.data.Message;
/**
* Title: com.idega.block.messenger.business
* Description: idega classes
* Copyright: Copyright (c) 2001
* Company: Idega Software
* @author <a href="mailto:eiki@idega.is">Eirikur S. Hrafnsson</a>
* @version 1.0
*/
public class MessageManager implements PacketManager{
public static HashMap inbox = new HashMap();
public static void sendToInbox(Message message, String recipientId){
//System.out.println("MessageManager : before inbox get");
Vector messageVector = (Vector) inbox.get(recipientId);
//System.out.println("MessageManager : after inbox get");
if( messageVector == null ){
messageVector = new Vector();
}
messageVector.add(message);
inbox.put(recipientId,messageVector);
}
public void processPacket(Packet packet){
//get the stored messages from the client packet
if(packet!=null){
Vector messages = packet.getMessages();
if( messages!=null ){
int length = messages.size();
String senderName;
String recipientName;
//System.out.println("MessageManager : "+length+" Messages in packet.");
for (int i = 0; i < length; i++) {
Message msg = (Message) messages.elementAt(i);
//System.out.println("MessageManager : getting sender name from ClientManager");
//System.out.println("MessageManager : msg.getsender"+msg.getSender());
senderName = ClientManager.getClientName(msg.getSender());
if ( senderName != null ){
msg.setSenderName(senderName);
//System.out.println("MessageManager : "+senderName);
}
else {
msg.setSenderName("Unknown sender");
//System.out.println("MessageManager : Unknown sender");
}
//System.out.println("MessageManager : msg.getRecipient"+msg.getRecipient());
recipientName = ClientManager.getClientName(msg.getRecipient());
if ( recipientName != null ) {
msg.setRecipientName(recipientName);
}
else {
msg.setRecipientName("Unknown recipient");
//System.out.println("MessageManager : Unknown recipient");
}
MessageManager.sendToInbox( msg, msg.getRecipient() );
}
}
//else System.out.println("MessageManager : No messages in packet!");
//set the stored messages to the client packet
packet.clearMessages();
//System.out.println("MessageManager : getting stored messages");
Vector storedMessages = (Vector) MessageManager.inbox.get(packet.getSender());
if( storedMessages!=null ){
packet.setMessages(storedMessages);
}
//else System.out.println("MessageManager : No stored messages!");
inbox.remove(packet.getSender());
//this ignores if the messages got to the client or not. That requers an Observer pattern
//System.out.println("MessageManager : done getting stored messages");
}
//else System.out.println("MessageManager : packet is NULL!");
}
public static void moveMessages(String fromId, String toId){
Vector messageFrom = (Vector) inbox.get(fromId);
Vector messageTo = (Vector) inbox.get(toId);
if( messageFrom != null ){
if(messageTo==null){
messageTo = new Vector();
}
int length = messageFrom.size();
Message msg;
for (int i = 0; i < length; i++) {
msg = (Message)messageFrom.elementAt(i);
msg.setRecipient(toId);
messageTo.addElement(msg);
}
inbox.remove(fromId);
inbox.put(toId,messageTo);
}
}
}