messagemanagerimpl.java

来自「基于hibernate,struts,spring三大框架的在线短信系统」· Java 代码 · 共 136 行

JAVA
136
字号
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 + =
减小字号Ctrl + -
显示快捷键?