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