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

📄 messagemanagerimpl.java

📁 基于hibernate,struts,spring三大框架的在线短信系统
💻 JAVA
字号:
package com.bjsxt.messages.managers;

import java.util.Date;
import java.util.Iterator;
import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.bjsxt.messages.model.Message;
import com.bjsxt.messages.model.User;

public class MessageManagerImpl extends HibernateDaoSupport implements
		MessageManager {

	public void clearDeletedMessages(int userId) {
		List msgs = findAllDeletedMessages(userId);
		if(msgs == null || msgs.size() == 0){
			return;
		}
		for (Iterator iter = msgs.iterator(); iter.hasNext();) {
			Message msg = (Message) iter.next();
			getHibernateTemplate().delete(msg);
		}
	}

	public void deleteMessage(int messageId) {
		Message msg = (Message)getHibernateTemplate().load(Message.class, messageId);
		msg.setDeleted(true);
		getHibernateTemplate().update(msg);
	}

	public List<Message> findAllDeletedMessages(int userId) {
		String hql = "select m from Message m where m.deleted = true and (m.sender.id = ? and m.receiveOrSend = ? or m.receiver.id = ? and m.receiveOrSend = ?)";
		
		return getHibernateTemplate().find(hql, new Object[]{
				userId,
				false,
				userId,
				true
		});
	}

	public List<Message> findAllReceiveMessages(int userId) {
		String hql = "select m from Message m where m.deleted = false and m.receiver.id = ? and m.receiveOrSend = ?";
		return getHibernateTemplate().find(hql,new Object[]{
				userId,
				true
		});
	}

	public List<Message> findAllRecordMessages(int userId, int theotherId) {
		String hql = "select m from Message m where m.deleted = false " +
			"and (m.sender.id = ? and m.receiveOrSend = ? and m.receiver.id = ? or " + //userId -> theotherId
			" m.sender.id = ? and m.receiveOrSend = ? and m.receiver.id = ? ) " + //theotherId -> userId
			" order by m.createTime desc ";
		
		return getHibernateTemplate().find(hql, new Object[]{
				userId,
				false,
				theotherId,
				theotherId,
				true,
				userId
		});
	}

	public List<Message> findAllSendMessages(int userId) {
		String hql = "select m from Message m where m.deleted = false and m.sender.id = ? and m.receiveOrSend = ?";
		return getHibernateTemplate().find(hql,new Object[]{
				userId,
				false
		});
	}

	public Message readMessage(int messageId) {
		Message msg = (Message)getHibernateTemplate().load(Message.class, messageId);
		if(!msg.isHasRead()){
			msg.setHasRead(true);
		}
		getHibernateTemplate().update(msg);
		return msg;
	}

	public void restoreMessage(int messageId) {
		Message msg = (Message)getHibernateTemplate().load(Message.class, messageId);
		msg.setDeleted(false);
		getHibernateTemplate().update(msg);
	}

	public void sendMessage(int senderId, int[] receiverId, String title,
			String content) {
		if(receiverId == null || receiverId.length == 0){
			return;
		}
		User sender = (User)getHibernateTemplate().load(User.class, senderId);
		Integer[] receiverIds = new Integer[receiverId.length];
		for(int i=0; i<receiverIds.length; i++){
			receiverIds[i] = receiverId[i];
		}
		List receivers = 
			getSession()
			.createQuery("select u from User u where u.id in (:uids)")
			.setParameterList("uids", receiverIds)
			.list();
		
		for(int i=0; i<receiverId.length; i++){
			Message sm = new Message();
			sm.setSender(sender);
			sm.setSenderName(sender.getName());
			sm.setReceiver((User)receivers.get(i));
			sm.setReceiverName(((User)receivers.get(i)).getName());
			sm.setTitle(title);
			sm.setContent(content);
			sm.setCreateTime(new Date());
			sm.setDeleted(false);
			sm.setHasRead(false);
			sm.setReceiveOrSend(false);
			getHibernateTemplate().save(sm);
			
			Message rm = new Message();
			rm.setSender(sender);
			rm.setSenderName(sender.getName());
			rm.setReceiver((User)receivers.get(i));
			rm.setReceiverName(((User)receivers.get(i)).getName());
			rm.setTitle(title);
			rm.setContent(content);
			rm.setCreateTime(new Date());
			rm.setDeleted(false);
			rm.setHasRead(false);
			rm.setReceiveOrSend(true);
			getHibernateTemplate().save(rm);
		}
	}

}

⌨️ 快捷键说明

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