001: /**********************************************************************************
002: * $URL: https://source.sakaiproject.org/svn/rwiki/tags/sakai_2-4-1/rwiki-impl/impl/src/java/uk/ac/cam/caret/sakai/rwiki/component/message/MessageServiceImpl.java $
003: * $Id: MessageServiceImpl.java 9108 2006-05-08 14:30:57Z ian@caret.cam.ac.uk $
004: ***********************************************************************************
005: *
006: * Copyright (c) 2003, 2004, 2005, 2006 The Sakai Foundation.
007: *
008: * Licensed under the Educational Community License, Version 1.0 (the "License");
009: * you may not use this file except in compliance with the License.
010: * You may obtain a copy of the License at
011: *
012: * http://www.opensource.org/licenses/ecl1.php
013: *
014: * Unless required by applicable law or agreed to in writing, software
015: * distributed under the License is distributed on an "AS IS" BASIS,
016: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: * See the License for the specific language governing permissions and
018: * limitations under the License.
019: *
020: **********************************************************************************/package uk.ac.cam.caret.sakai.rwiki.component.message;
021:
022: import java.util.Date;
023: import java.util.List;
024:
025: import org.apache.commons.logging.Log;
026: import org.apache.commons.logging.LogFactory;
027:
028: import uk.ac.cam.caret.sakai.rwiki.service.message.api.MessageService;
029: import uk.ac.cam.caret.sakai.rwiki.service.message.api.dao.MessageDao;
030: import uk.ac.cam.caret.sakai.rwiki.service.message.api.dao.PagePresenceDao;
031: import uk.ac.cam.caret.sakai.rwiki.service.message.api.model.Message;
032: import uk.ac.cam.caret.sakai.rwiki.service.message.api.model.PagePresence;
033:
034: /**
035: * @author ieb
036: */
037: public class MessageServiceImpl implements MessageService {
038: private static Log log = LogFactory
039: .getLog(MessageServiceImpl.class);
040:
041: private MessageDao messageDao;
042:
043: private PagePresenceDao pagePresenceDao;
044:
045: /*
046: * (non-Javadoc)
047: *
048: * @see uk.ac.cam.caret.sakai.rwiki.service.message.api.MessageService#updatePresence(java.lang.String,
049: * java.lang.String, java.lang.String, java.lang.String)
050: */
051: public void updatePresence(String session, String user,
052: String page, String space) {
053: PagePresence pp = pagePresenceDao.findBySession(session);
054: if (pp != null) {
055: pp.setUser(user);
056: pp.setPagename(page);
057: pp.setPagespace(space);
058: pp.setLastseen(new Date());
059: pagePresenceDao.update(pp);
060: } else {
061: pp = pagePresenceDao.createPagePresence(page, space,
062: session, user);
063: pagePresenceDao.update(pp);
064: }
065: log.debug("Page Presence " + space + ":" + page + ":" + user
066: + ":" + session);
067:
068: }
069:
070: /*
071: * (non-Javadoc)
072: *
073: * @see uk.ac.cam.caret.sakai.rwiki.service.message.api.MessageService#addMessage(java.lang.String,
074: * java.lang.String, java.lang.String, java.lang.String,
075: * java.lang.String)
076: */
077: public void addMessage(String session, String user, String page,
078: String space, String message) {
079: Message messageobj = messageDao.createMessage(space, page,
080: session, user, message);
081: messageDao.update(messageobj);
082: }
083:
084: /*
085: * (non-Javadoc)
086: *
087: * @see uk.ac.cam.caret.sakai.rwiki.service.message.api.MessageService#getSessionMessages(java.lang.String)
088: */
089: public List getSessionMessages(String session) {
090: return messageDao.findBySession(session);
091: }
092:
093: /*
094: * (non-Javadoc)
095: *
096: * @see uk.ac.cam.caret.sakai.rwiki.service.message.api.MessageService#getMessagesInSpace(java.lang.String)
097: */
098: public List getMessagesInSpace(String space) {
099: return messageDao.findBySpace(space);
100: }
101:
102: /*
103: * (non-Javadoc)
104: *
105: * @see uk.ac.cam.caret.sakai.rwiki.service.message.api.MessageService#getMessagesInPage(java.lang.String,
106: * java.lang.String)
107: */
108: public List getMessagesInPage(String space, String page) {
109: return messageDao.findByPage(space, page);
110: }
111:
112: /*
113: * (non-Javadoc)
114: *
115: * @see uk.ac.cam.caret.sakai.rwiki.service.message.api.MessageService#getUsersInSpace(java.lang.String)
116: */
117: public List getUsersInSpace(String space) {
118: List l = pagePresenceDao.findBySpace(space);
119: log.info("Found " + l.size() + " users in " + space);
120: return l;
121: }
122:
123: /*
124: * (non-Javadoc)
125: *
126: * @see uk.ac.cam.caret.sakai.rwiki.service.message.api.MessageService#getUsersOnPage(java.lang.String,
127: * java.lang.String)
128: */
129: public List getUsersOnPage(String space, String page) {
130: List l = pagePresenceDao.findByPage(space, page);
131: log.info("Found " + l.size() + " users in " + space + " on "
132: + page);
133: return l;
134: }
135:
136: /*
137: * (non-Javadoc)
138: *
139: * @see uk.ac.cam.caret.sakai.rwiki.service.message.api.MessageService#getMessagesInSpaceOnly(java.lang.String,
140: * java.lang.String)
141: */
142: public List getUsersInSpaceOnly(String pageSpace, String pageName) {
143: log.info("Searching for users in " + pageSpace + " but not "
144: + pageName);
145: return pagePresenceDao.findBySpaceOnly(pageSpace, pageName);
146: }
147:
148: /**
149: * @return Returns the messageDao.
150: */
151: public MessageDao getMessageDao() {
152: return messageDao;
153: }
154:
155: /**
156: * @param messageDao
157: * The messageDao to set.
158: */
159: public void setMessageDao(MessageDao messageDao) {
160: this .messageDao = messageDao;
161: }
162:
163: /**
164: * @return Returns the pagePresenceDao.
165: */
166: public PagePresenceDao getPagePresenceDao() {
167: return pagePresenceDao;
168: }
169:
170: /**
171: * @param pagePresenceDao
172: * The pagePresenceDao to set.
173: */
174: public void setPagePresenceDao(PagePresenceDao pagePresenceDao) {
175: this.pagePresenceDao = pagePresenceDao;
176: }
177:
178: }
|