Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dao/IChatMessageDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dao/IChatMessageDAO.java,v diff -u -r1.1 -r1.2 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dao/IChatMessageDAO.java 23 May 2006 04:09:05 -0000 1.1 +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dao/IChatMessageDAO.java 8 Jun 2006 01:51:11 -0000 1.2 @@ -25,8 +25,12 @@ package org.lamsfoundation.lams.tool.chat.dao; +import java.util.List; + import org.lamsfoundation.lams.dao.IBaseDAO; import org.lamsfoundation.lams.tool.chat.model.ChatMessage; +import org.lamsfoundation.lams.tool.chat.model.ChatSession; +import org.lamsfoundation.lams.tool.chat.model.ChatUser; /** * DAO for accessing the ChatMessage objects - interface defining @@ -35,4 +39,10 @@ public interface IChatMessageDAO extends IBaseDAO { void saveOrUpdate(ChatMessage chatMessage); + + List getForUser(ChatUser chatUser); + + ChatMessage getByUID(Long uid); + + List getLatest(ChatSession chatSession, int max); } Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dao/hibernate/ChatMessageDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dao/hibernate/ChatMessageDAO.java,v diff -u -r1.1 -r1.2 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dao/hibernate/ChatMessageDAO.java 23 May 2006 04:10:23 -0000 1.1 +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dao/hibernate/ChatMessageDAO.java 8 Jun 2006 01:51:11 -0000 1.2 @@ -25,14 +25,70 @@ package org.lamsfoundation.lams.tool.chat.dao.hibernate; +import java.util.List; + +import org.hibernate.HibernateException; +import org.hibernate.Query; import org.lamsfoundation.lams.dao.hibernate.BaseDAO; import org.lamsfoundation.lams.tool.chat.dao.IChatMessageDAO; +import org.lamsfoundation.lams.tool.chat.model.Chat; import org.lamsfoundation.lams.tool.chat.model.ChatMessage; +import org.lamsfoundation.lams.tool.chat.model.ChatSession; +import org.lamsfoundation.lams.tool.chat.model.ChatUser; public class ChatMessageDAO extends BaseDAO implements IChatMessageDAO { + // public static final String SQL_QUERY_FIND_USER_MESSAGE_HISTORY = "from " + // + ChatMessage.class.getName() + " as f where " + // + "f.chatSession=? and (f.type='groupchat' or " + // + "(f.type='chat' and (f.fromUser.userId=? or f.toUser.userId=?)))"; + + public static final String SQL_QUERY_FIND_USER_MESSAGE_HISTORY = "from " + + ChatMessage.class.getName() + + " as f where " + + "f.chatSession=? and f.hidden='false' and (f.type='groupchat' or (f.type='chat' and (f.fromUser=? or f.toUser=?)))"; + + public static final String SQL_QUERY_FIND_MESSAGE_BY_UID = "from " + + ChatMessage.class.getName() + " where uid=?"; + + public static final String SQL_QUERY_FIND_MESSAGE_BY_SESSION_ORDER_BY_DATE_ASC = "from " + + ChatMessage.class.getName() + + " as f where f.chatSession=? order by f.sendDate desc"; + public void saveOrUpdate(ChatMessage chatMessage) { this.getHibernateTemplate().saveOrUpdate(chatMessage); this.getHibernateTemplate().flush(); } + + public List getForUser(ChatUser chatUser) { + return this.getHibernateTemplate().find( + SQL_QUERY_FIND_USER_MESSAGE_HISTORY, + new Object[] { chatUser.getChatSession().getUid(), + chatUser.getUid(), chatUser.getUid() }); + } + + public ChatMessage getByUID(Long uid) { + // TODO Auto-generated method stub + List list = this.getHibernateTemplate().find( + SQL_QUERY_FIND_MESSAGE_BY_UID, new Object[] { uid }); + + if (list != null && list.size() > 0) + return (ChatMessage) list.get(0); + else + return null; + + } + + public List getLatest(ChatSession chatSession, int max) { + try { + Query query = this.getSession().createQuery( + SQL_QUERY_FIND_MESSAGE_BY_SESSION_ORDER_BY_DATE_ASC); + query.setLong(0, chatSession.getUid()); + query.setMaxResults(max); + return query.list(); + } catch (HibernateException he) { + logger.error("getLatest: hibernate exception"); + return null; + } + } }