⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 samplechat.java

📁 WebChatSample
💻 JAVA
字号:
package com.signorinolong.test.chat;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import org.directwebremoting.ScriptBuffer;
import org.directwebremoting.ScriptSession;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;

import com.signorinolong.test.chat.model.Message;
import com.signorinolong.test.chat.model.User;

public class SampleChat implements Chat {

	private UserManager userManager;

	private MessageManager messageManager;

	public SampleChat() {
		// TODO Auto-generated constructor stub
	}

	public MessageManager getMessageManager() {
		return messageManager;
	}

	public void setMessageManager(MessageManager messageManager) {
		this.messageManager = messageManager;
	}

	public UserManager getUserManager() {
		return userManager;
	}

	public void setUserManager(UserManager userManager) {
		this.userManager = userManager;
	}

	public Map getAllMessage() {
		// TODO Auto-generated method stub
		return null;
	}

	public List getMessageByChannel(String channel) {
		// TODO Auto-generated method stub
		return messageManager.getMessage(channel);
	}

	public Map getMessageByUser(String username) {
		// TODO Auto-generated method stub
		User user = userManager.getUser(username);
		HashMap<String, LinkedList<Message>> messages = new HashMap<String, LinkedList<Message>>();
		messages.put("user", user.getMessages());
		List<String> channels = user.getChanels();
		for (int i = 0, n = channels.size(); i < n; i++) {
			messages.put(channels.get(i), (LinkedList<Message>) messageManager
					.getMessage(channels.get(i)));
		}
		return messages;
	}

	public void sendMessage(String user, String message, String channel) {
		// TODO Auto-generated method stub
		//测试使用
		userManager.login(user);
		userManager.getUser(user).addChanel(channel);
		messageManager.addChannel(channel);
		
		messageManager.addMessage(channel, user, message);
		HashMap<String, LinkedList<Message>> messages = (HashMap<String, LinkedList<Message>>) getMessageByUser(user);

		WebContext wctx = WebContextFactory.get();
		String currentPage = wctx.getCurrentPage();

		ScriptBuffer script = new ScriptBuffer();

		script.appendScript("receiveUserMessages(").appendData(
				messages.get("user")).appendScript(");");
		script.appendScript("receivePublicMessages(").appendData(messages.get("public")).appendScript(");");
		script.appendScript("receiveUserList(").appendData(userManager.getUserList()).appendScript(");");
		Collection pages = wctx.getScriptSessionsByPage(currentPage);
		for (Iterator it = pages.iterator(); it.hasNext();) {
			ScriptSession otherSession = (ScriptSession) it.next();
			otherSession.addScript(script);
		}
	}

	public void sendMessageToUser(String fromuser, String message, String touser) {
		// TODO Auto-generated method stub
		messageManager.addMessageToUser( fromuser, message, touser);
		/*HashMap<String, LinkedList<Message>> messages = (HashMap<String, LinkedList<Message>>) getMessageByUser(touser);*/

		/*WebContext wctx = WebContextFactory.get();
		String currentPage = wctx.getCurrentPage();

		ScriptBuffer script = new ScriptBuffer();

		script.appendScript("receiveUserMessages(").appendData(messages.get("user")).appendScript(");");
		script.appendScript("receivePublicMessages(").appendData(messages.get("public")).appendScript(");");
		script.appendScript("receiveUserList(").appendData(userManager.getUserList()).appendScript(");");
		Collection pages = wctx.getScriptSessionsByPage(currentPage);
		for (Iterator it = pages.iterator(); it.hasNext();) {
			ScriptSession otherSession = (ScriptSession) it.next();
			otherSession.addScript(script);
		}*/
		
	}

	public void startWork() {
		// TODO Auto-generated method stub
		WebContext wctx = WebContextFactory.get();
        final ScriptSession scriptSession = wctx.getScriptSession();
        Thread worker = new Thread(new Runnable()
        {
            public void run()
            {
                int count = 0;
                while (count < 100)
                {
                    count++;
                    try
                    {
                        Thread.sleep(100000);
                        scriptSession.addScript(new ScriptBuffer("receiveUserMessages();"));
                    }
                    catch (Exception ex)
                    {
                    }
                }
            }
        });
        worker.start();
	}

	public LinkedList<Message> getUserMessage(String user) {
		// TODO Auto-generated method stub
		HashMap<String, LinkedList<Message>> messages = (HashMap<String, LinkedList<Message>>) getMessageByUser(user);
		return messages.get("user");
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -