www.pudn.com > spring_struts_hibernate_messages.rar > MessageManagerImpl.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 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 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 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 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