Index: lams_tool_chat/conf/hibernate/mappings/org/lamsfoundation/lams/tool/chat/model/Chat.hbm.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/conf/hibernate/mappings/org/lamsfoundation/lams/tool/chat/model/Attic/Chat.hbm.xml,v diff -u -r1.2 -r1.3 --- lams_tool_chat/conf/hibernate/mappings/org/lamsfoundation/lams/tool/chat/model/Chat.hbm.xml 8 Jun 2006 05:57:31 -0000 1.2 +++ lams_tool_chat/conf/hibernate/mappings/org/lamsfoundation/lams/tool/chat/model/Chat.hbm.xml 9 Aug 2006 01:12:11 -0000 1.3 @@ -87,6 +87,24 @@ /> + + + + + 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.3 -r1.4 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dao/hibernate/ChatMessageDAO.java 14 Jun 2006 23:50:02 -0000 1.3 +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dao/hibernate/ChatMessageDAO.java 9 Aug 2006 01:12:11 -0000 1.4 @@ -48,7 +48,7 @@ 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=?)))"; + + "f.chatSession.uid=? and f.hidden='false' and (f.type='groupchat' or (f.type='chat' and (f.fromUser.uid=? or f.toUser.uid=?)))"; public static final String SQL_QUERY_FIND_MESSAGE_BY_UID = "from " + ChatMessage.class.getName() + " where uid=?"; @@ -59,11 +59,11 @@ public static final String SQL_QUERY_FIND_MESSAGE_COUNT_BY_FROM_USER = "select f.fromUser.uid, count(*) from " + ChatMessage.class.getName() - + " as f where f.chatSession=? group by f.fromUser"; + + " as f where f.chatSession.uid=? group by f.fromUser"; public static final String SQL_QUERY_FIND_MESSAGE_COUNT_BY_SESSION = "select f.chatSession.uid, count(*) from " + ChatMessage.class.getName() - + " as f where f.chatSession.chat=? group by f.chatSession"; + + " as f where f.chatSession.chat.uid=? group by f.chatSession"; public void saveOrUpdate(ChatMessage chatMessage) { this.getHibernateTemplate().saveOrUpdate(chatMessage); Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dto/ChatDTO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dto/ChatDTO.java,v diff -u -r1.2 -r1.3 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dto/ChatDTO.java 21 Jun 2006 04:33:41 -0000 1.2 +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dto/ChatDTO.java 9 Aug 2006 01:12:12 -0000 1.3 @@ -39,17 +39,43 @@ private static Logger logger = Logger.getLogger(ChatDTO.class); + public Long toolContentId; + + public String title; + + public String instructions; + + public String onlineInstructions; + + public String offlineInstructions; + + public boolean defineLater; + + public boolean contentInUse; + + public boolean reflectOnActivity; + + public boolean lockOnFinish; + + public String reflectInstructions; + + public Set onlineInstructionsFiles = new TreeSet(); + + public Set offlineInstructionsFiles = new TreeSet(); + + public Set sessionDTOs = new HashSet();; + public ChatDTO(Chat chat) { toolContentId = chat.getToolContentId(); title = chat.getTitle(); instructions = chat.getInstructions(); onlineInstructions = chat.getOnlineInstructions(); offlineInstructions = chat.getOfflineInstructions(); contentInUse = chat.getContentInUse(); + reflectInstructions = chat.getReflectInstructions(); + reflectOnActivity = chat.getReflectOnActivity(); + lockOnFinish = chat.getLockOnFinished(); - onlineInstructionsFiles = new TreeSet(); - offlineInstructionsFiles = new TreeSet(); - for (Iterator i = chat.getChatAttachments().iterator(); i.hasNext();) { ChatAttachment att = (ChatAttachment) i.next(); if (att.getFileType().equals(IToolContentHandler.TYPE_OFFLINE)) { @@ -64,31 +90,9 @@ logger.error("File with uid " + att.getFileUuid() + " contains invalid fileType: " + att.getFileType()); } - } - - sessionDTOs = new HashSet(); + } } - public Long toolContentId; - - public String title; - - public String instructions; - - public String onlineInstructions; - - public String offlineInstructions; - - public boolean defineLater; - - public boolean contentInUse; - - public Set onlineInstructionsFiles; - - public Set offlineInstructionsFiles; - - public Set sessionDTOs; - public Set getSessionDTOs() { return sessionDTOs; } @@ -155,11 +159,43 @@ this.toolContentId = toolContentID; } - public Boolean getContentInUse() { + public String getReflectInstructions() { + return reflectInstructions; + } + + public void setReflectInstructions(String reflectInstructions) { + this.reflectInstructions = reflectInstructions; + } + + public boolean isContentInUse() { return contentInUse; } - public void setContentInUse(Boolean contentInUse) { + public void setContentInUse(boolean contentInUse) { this.contentInUse = contentInUse; } + + public boolean isDefineLater() { + return defineLater; + } + + public void setDefineLater(boolean defineLater) { + this.defineLater = defineLater; + } + + public boolean isReflectOnActivity() { + return reflectOnActivity; + } + + public void setReflectOnActivity(boolean reflectOnActivity) { + this.reflectOnActivity = reflectOnActivity; + } + + public boolean isLockOnFinish() { + return lockOnFinish; + } + + public void setLockOnFinish(boolean lockOnFinish) { + this.lockOnFinish = lockOnFinish; + } } \ No newline at end of file Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dto/ChatUserDTO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dto/ChatUserDTO.java,v diff -u -r1.1 -r1.2 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dto/ChatUserDTO.java 14 Jun 2006 23:59:22 -0000 1.1 +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/dto/ChatUserDTO.java 9 Aug 2006 01:12:12 -0000 1.2 @@ -39,14 +39,24 @@ public String lastName; + public Long userID; + + public String notebookEntry; + + public boolean finishedReflection; + public int postCount; + public boolean finishedActivity; + public ChatUserDTO(ChatUser user) { this.uid = user.getUid(); this.loginName = user.getLoginName(); this.jabberNickname = user.getJabberNickname(); this.firstName = user.getFirstName(); this.lastName = user.getLastName(); + this.userID = user.getUserId(); + this.finishedActivity = user.getFinishedActivity(); postCount=0; // this needs to be set manually. } @@ -107,5 +117,37 @@ public void setUid(Long uid) { this.uid = uid; } + + public Long getUserID() { + return userID; + } + + public void setUserID(Long userID) { + this.userID = userID; + } + + public boolean isFinishedActivity() { + return finishedActivity; + } + + public void setFinishedActivity(boolean finishedActivity) { + this.finishedActivity = finishedActivity; + } + + public String getNotebookEntry() { + return notebookEntry; + } + + public void setNotebookEntry(String notebookEntry) { + this.notebookEntry = notebookEntry; + } + + public boolean isFinishedReflection() { + return finishedReflection; + } + + public void setFinishedReflection(boolean finishedReflection) { + this.finishedReflection = finishedReflection; + } } Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/model/Chat.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/model/Chat.java,v diff -u -r1.6 -r1.7 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/model/Chat.java 8 Jun 2006 02:09:01 -0000 1.6 +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/model/Chat.java 9 Aug 2006 01:12:11 -0000 1.7 @@ -29,6 +29,8 @@ import java.util.Iterator; import java.util.Set; +import middlegen.Column; + import org.apache.log4j.Logger; import org.lamsfoundation.lams.contentrepository.ItemNotFoundException; import org.lamsfoundation.lams.contentrepository.NodeKey; @@ -68,6 +70,10 @@ private Boolean runOffline; private Boolean lockOnFinished; + + private Boolean reflectOnActivity; + + private String reflectInstructions; private Boolean filteringEnabled; @@ -86,7 +92,7 @@ private Set chatAttachments; private Set chatSessions; - + //*********** NON Persisit fields private IToolContentHandler toolContentHandler; @@ -225,8 +231,30 @@ public void setLockOnFinished(Boolean lockOnFinished) { this.lockOnFinished = lockOnFinished; } + + /** + * @hibernate.property column="reflect_on_activity" length="1" + */ + public Boolean getReflectOnActivity() { + return reflectOnActivity; + } + public void setReflectOnActivity(Boolean reflectOnActivity) { + this.reflectOnActivity = reflectOnActivity; + } + /** + * @hibernate.property column="reflect_instructions" length="65535" + */ + public String getReflectInstructions() { + return reflectInstructions; + } + + public void setReflectInstructions(String reflectInstructions) { + this.reflectInstructions = reflectInstructions; + } + + /** * @hibernate.property column="online_instructions" length="65535" * */ @@ -404,7 +432,7 @@ if (chatAttachments != null) { // create a copy of the attachments Iterator iter = chatAttachments.iterator(); - Set set = new HashSet(); + Set set = new HashSet(); while (iter.hasNext()) { ChatAttachment originalFile = (ChatAttachment) iter.next(); ChatAttachment newFile = (ChatAttachment) originalFile Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java,v diff -u -r1.25 -r1.26 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java 30 Jun 2006 04:10:37 -0000 1.25 +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java 9 Aug 2006 01:12:12 -0000 1.26 @@ -65,6 +65,8 @@ import org.lamsfoundation.lams.learningdesign.service.ExportToolContentException; import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; +import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolSessionExportOutputData; import org.lamsfoundation.lams.tool.ToolSessionManager; @@ -132,6 +134,8 @@ private IExportToolContentService exportContentService; + private ICoreNotebookService coreNotebookService; + public ChatService() { super(); // TODO Auto-generated constructor stub @@ -280,17 +284,17 @@ public void exportToolContent(Long toolContentId, String rootPath) throws DataMissingException, ToolException { - Chat toolContentObj = chatDAO.getByContentId(toolContentId); - if (toolContentObj == null) + Chat chat = chatDAO.getByContentId(toolContentId); + if (chat == null) throw new DataMissingException( "Unable to find tool content by given id :" + toolContentId); // set ResourceToolContentHandler as null to avoid copy file node in // repository again. - toolContentObj = Chat.newInstance(toolContentObj, toolContentId, null); - toolContentObj.setToolContentHandler(null); - toolContentObj.setChatSessions(null); - Set atts = toolContentObj.getChatAttachments(); + chat = Chat.newInstance(chat, toolContentId, null); + chat.setToolContentHandler(null); + chat.setChatSessions(null); + Set atts = chat.getChatAttachments(); for (ChatAttachment att : atts) { att.setChat(null); } @@ -299,7 +303,7 @@ .registerFileClassForExport(ChatAttachment.class.getName(), "fileUuid", "fileVersionId"); exportContentService.exportToolContent(toolContentId, - toolContentObj, chatToolContentHandler, rootPath); + chat, chatToolContentHandler, rootPath); } catch (ExportToolContentException e) { throw new ToolException(e); } @@ -1053,4 +1057,28 @@ public Map getMessageCountByFromUser(Long sessionUID) { return chatMessageDAO.getCountByFromUser(sessionUID); } + + public ICoreNotebookService getCoreNotebookService() { + return coreNotebookService; + } + + public void setCoreNotebookService(ICoreNotebookService coreNotebookService) { + this.coreNotebookService = coreNotebookService; + } + + public Long createNotebookEntry(Long id, Integer idType, String signature, + Integer userID, String entry) { + return coreNotebookService.createNotebookEntry(id, idType, signature, userID, "", entry); + } + + public NotebookEntry getEntry(Long id, Integer idType, String signature, + Integer userID) { + + List list = coreNotebookService.getEntry(id, idType, signature, userID); + if (list == null || list.isEmpty()) { + return null; + } else { + return list.get(0); + } + } } Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/IChatService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/IChatService.java,v diff -u -r1.11 -r1.12 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/IChatService.java 15 Jun 2006 00:00:22 -0000 1.11 +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/IChatService.java 9 Aug 2006 01:12:12 -0000 1.12 @@ -28,6 +28,7 @@ import java.util.Map; import org.apache.struts.upload.FormFile; +import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.tool.chat.dto.ChatMessageDTO; import org.lamsfoundation.lams.tool.chat.model.Chat; import org.lamsfoundation.lams.tool.chat.model.ChatAttachment; @@ -51,71 +52,74 @@ * @return */ public Chat copyDefaultContent(Long newContentID); - + /** * Returns an instance of the Chat tools default content. + * * @return */ public Chat getDefaultContent(); - + /** * @param toolSignature * @return */ public Long getDefaultContentIdBySignature(String toolSignature); - + /** * @param toolContentID * @return */ public Chat getChatByContentId(Long toolContentID); - + /** * @param toolContentId * @param file * @param type * @return */ - public ChatAttachment uploadFileToContent(Long toolContentId, FormFile file, String type); - + public ChatAttachment uploadFileToContent(Long toolContentId, + FormFile file, String type); + /** * @param uuid * @param versionID */ - public void deleteFromRepository(Long uuid, Long versionID) throws ChatException; - + public void deleteFromRepository(Long uuid, Long versionID) + throws ChatException; + /** * @param contentID * @param uuid * @param versionID * @param type */ - public void deleteInstructionFile(Long contentID, Long uuid, Long versionID, String type); - + public void deleteInstructionFile(Long contentID, Long uuid, + Long versionID, String type); + /** * @param chat */ public void saveOrUpdateChat(Chat chat); - /** * @param toolSessionId * @return */ public ChatSession getSessionBySessionId(Long toolSessionId); - + /** * * @param jabberRoom * @return */ public ChatSession getSessionByJabberRoom(String jabberRoom); - + /** * @param chatSession */ public void saveOrUpdateChatSession(ChatSession chatSession); - + /** * * @param userId @@ -130,58 +134,61 @@ * @param sessionID * @return */ - public ChatUser getUserByLoginNameAndSessionId(String loginName, Long sessionId); - + public ChatUser getUserByLoginNameAndSessionId(String loginName, + Long sessionId); + /** * * @param jabberID * @param jabberRoom * @return */ - public ChatUser getUserByJabberIDAndJabberRoom(String jabberID, String jabberRoom); - + public ChatUser getUserByJabberIDAndJabberRoom(String jabberID, + String jabberRoom); + /** * * @param uid * @return */ public ChatUser getUserByUID(Long uid); - + /** * * @param jabberNickname * @param sessionID * @return */ - public ChatUser getUserByJabberNicknameAndSessionID(String jabberNickname, Long sessionID); - + public ChatUser getUserByJabberNicknameAndSessionID(String jabberNickname, + Long sessionID); + /** * * @param chatUser */ public void saveOrUpdateChatUser(ChatUser chatUser); - + /** * * @param chatUser * @return */ public List getMessagesForUser(ChatUser chatUser); - + /** * * @param chatMessage */ - public void saveOrUpdateChatMessage(ChatMessage chatMessage); - + public void saveOrUpdateChatMessage(ChatMessage chatMessage); + /** * * @param user * @param chatSession * @return */ public ChatUser createChatUser(UserDTO user, ChatSession chatSession); - + /** * * @param chatSession @@ -199,48 +206,55 @@ * @param presenceElems */ public List processIncomingPresence(Node presence); - + /** * * @param toolContentID * @param pattern */ - public ChatMessageFilter updateMessageFilters(Chat chat); - + public ChatMessageFilter updateMessageFilters(Chat chat); + /** * * @param node */ public void filterMessage(Node message); - + /** * * @param message * @param chat */ public void filterMessage(Node message, Chat chat); - + /** * * @param messageDTO * @param chat */ public void filterMessage(ChatMessageDTO messageDTO, Chat chat); - + /** * * @param messageUID * @return */ public ChatMessage getMessageByUID(Long messageUID); - + public List getLastestMessages(ChatSession chatSession, int max); public void auditEditMessage(ChatMessage chatMessage, String messageBody); - public void auditHideShowMessage(ChatMessage chatMessage, boolean messageHidden ); - + public void auditHideShowMessage(ChatMessage chatMessage, + boolean messageHidden); + public Map getMessageCountBySession(Long chatUID); - + public Map getMessageCountByFromUser(Long sessionUID); + + public Long createNotebookEntry(Long id, Integer idType, String signature, + Integer userID, String entry); + + public NotebookEntry getEntry(Long id, Integer idType, String signature, + Integer userID); } \ No newline at end of file Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/AuthoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/AuthoringAction.java,v diff -u -r1.12 -r1.13 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/AuthoringAction.java 3 Aug 2006 05:15:35 -0000 1.12 +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/AuthoringAction.java 9 Aug 2006 01:12:10 -0000 1.13 @@ -126,7 +126,7 @@ chatService.saveOrUpdateChat(chat); // Set up sessionMap - SessionMap map = new SessionMap(); + SessionMap map = new SessionMap(); initSessionMap(map, request); updateSessionMap(map, chat); @@ -151,7 +151,7 @@ // get authForm and session map. AuthoringForm authForm = (AuthoringForm) form; - SessionMap map = getSessionMap(request, authForm); + SessionMap map = getSessionMap(request, authForm); // get chat content. Chat chat = chatService.getChatByContentId(authForm.getToolContentID()); @@ -160,9 +160,9 @@ updateChat(chat, authForm); // remove attachments marked for deletion. - Set attachments = chat.getChatAttachments(); + Set attachments = chat.getChatAttachments(); if (attachments == null) { - attachments = new HashSet(); + attachments = new HashSet(); } for (ChatAttachment att : getAttList(KEY_DELETED_FILES, map)) { @@ -240,7 +240,7 @@ private ActionForward uploadFile(ActionMapping mapping, AuthoringForm authForm, String type, HttpServletRequest request) { - SessionMap map = getSessionMap(request, authForm); + SessionMap map = getSessionMap(request, authForm); FormFile file; List unsavedFiles; @@ -284,7 +284,7 @@ private ActionForward deleteFile(ActionMapping mapping, AuthoringForm authForm, String type, HttpServletRequest request) { - SessionMap map = getSessionMap(request, authForm); + SessionMap map = getSessionMap(request, authForm); List fileList; if (StringUtils.equals(IToolContentHandler.TYPE_OFFLINE, type)) { @@ -316,7 +316,7 @@ private ActionForward removeUnsaved(ActionMapping mapping, AuthoringForm authForm, String type, HttpServletRequest request) { - SessionMap map = getSessionMap(request, authForm); + SessionMap map = getSessionMap(request, authForm); List unsavedFiles; @@ -357,6 +357,8 @@ chat.setOfflineInstructions(authForm.getOnlineInstruction()); chat.setOnlineInstructions(authForm.getOfflineInstruction()); chat.setLockOnFinished(authForm.isLockOnFinished()); + chat.setReflectOnActivity(authForm.isReflectOnActivity()); + chat.setReflectInstructions(authForm.getReflectInstructions()); chat.setFilteringEnabled(authForm.isFilteringEnabled()); chat.setFilterKeywords(authForm.getFilterKeywords()); } @@ -375,9 +377,10 @@ authForm.setOnlineInstruction(chat.getOnlineInstructions()); authForm.setOfflineInstruction(chat.getOfflineInstructions()); authForm.setLockOnFinished(chat.getLockOnFinished()); + authForm.setReflectOnActivity(chat.getReflectOnActivity()); + authForm.setReflectInstructions(chat.getReflectInstructions()); authForm.setFilteringEnabled(chat.getFilteringEnabled()); authForm.setFilterKeywords(chat.getFilterKeywords()); - // TODO add the rest. } /** @@ -386,7 +389,7 @@ * @param map * @param chat */ - private void updateSessionMap(SessionMap map, Chat chat) { + private void updateSessionMap(SessionMap map, Chat chat) { getAttList(KEY_UNSAVED_OFFLINE_FILES, map).clear(); getAttList(KEY_UNSAVED_ONLINE_FILES, map).clear(); @@ -432,7 +435,7 @@ * @param map * @param request */ - private void initSessionMap(SessionMap map, HttpServletRequest request) { + private void initSessionMap(SessionMap map, HttpServletRequest request) { map.put(KEY_MODE, getAccessMode(request)); map.put(KEY_ONLINE_FILES, new LinkedList()); map.put(KEY_OFFLINE_FILES, new LinkedList()); @@ -448,7 +451,7 @@ * @param map * @return */ - private List getAttList(String key, SessionMap map) { + private List getAttList(String key, SessionMap map) { List list = (List) map.get(key); return list; } @@ -460,9 +463,9 @@ * @param authForm * @return */ - private SessionMap getSessionMap(HttpServletRequest request, + private SessionMap getSessionMap(HttpServletRequest request, AuthoringForm authForm) { - return (SessionMap) request.getSession().getAttribute( + return (SessionMap) request.getSession().getAttribute( authForm.getSessionMapID()); } } \ No newline at end of file Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/LearningAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/LearningAction.java,v diff -u -r1.14 -r1.15 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/LearningAction.java 10 Jul 2006 04:51:09 -0000 1.14 +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/LearningAction.java 9 Aug 2006 01:12:10 -0000 1.15 @@ -34,15 +34,20 @@ import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; +import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.ToolSessionManager; +import org.lamsfoundation.lams.tool.chat.dto.ChatDTO; +import org.lamsfoundation.lams.tool.chat.dto.ChatUserDTO; import org.lamsfoundation.lams.tool.chat.model.Chat; import org.lamsfoundation.lams.tool.chat.model.ChatSession; import org.lamsfoundation.lams.tool.chat.model.ChatUser; import org.lamsfoundation.lams.tool.chat.service.ChatServiceProxy; import org.lamsfoundation.lams.tool.chat.service.IChatService; import org.lamsfoundation.lams.tool.chat.util.ChatConstants; import org.lamsfoundation.lams.tool.chat.util.ChatException; +import org.lamsfoundation.lams.tool.chat.web.forms.LearningForm; import org.lamsfoundation.lams.tool.exception.DataMissingException; import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; @@ -57,10 +62,12 @@ * @author * @version * - * @struts.action path="/learning" parameter="dispatch" scope="request" name="learningForm" + * @struts.action path="/learning" parameter="dispatch" scope="request" + * name="learningForm" * @struts.action-forward name="chat_client" path="tiles:/learning/main" * @struts.action-forward name="runOffline" path="tiles:/learning/runOffline" * @struts.action-forward name="defineLater" path="tiles:/learning/defineLater" + * @struts.action-forward name="notebook" path="tiles:/learning/notebook" */ public class LearningAction extends LamsDispatchAction { @@ -77,7 +84,7 @@ // TODO need to catch exceptions and handle errors. ToolAccessMode mode = WebUtil.readToolAccessModeParam(request, AttributeNames.PARAM_MODE, MODE_OPTIONAL); - + Long toolSessionID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID); @@ -100,7 +107,7 @@ // Retrieve the current user ChatUser chatUser = getCurrentUser(toolSessionID); - + // check defineLater if (chat.getDefineLater()) { return mapping.findForward("defineLater"); @@ -110,7 +117,6 @@ if (chat.getRunOffline()) { request.setAttribute("MODE", mode.toString()); request.setAttribute("USER_UID", chatUser.getUid()); - request.setAttribute("SESSION_ID", toolSessionID); return mapping.findForward("runOffline"); } @@ -120,22 +126,27 @@ chatService.saveOrUpdateChatSession(chatSession); } - request.setAttribute("XMPPDOMAIN", Configuration.get(ConfigurationKeys.XMPP_DOMAIN)); - request.setAttribute("USERNAME", chatUser.getUserId()); - request.setAttribute("PASSWORD", chatUser.getUserId()); + ChatDTO chatDTO = new ChatDTO(chat); + request.setAttribute("chatDTO", chatDTO); + + request.setAttribute("XMPPDOMAIN", Configuration + .get(ConfigurationKeys.XMPP_DOMAIN)); request.setAttribute("CONFERENCEROOM", chatSession.getJabberRoom()); - request.setAttribute("NICK", chatUser.getJabberNickname()); request.setAttribute("MODE", mode.toString()); - request.setAttribute("USER_UID", chatUser.getUid()); - request.setAttribute("SESSION_ID", toolSessionID); - request - .setAttribute("LEARNER_FINISHED", chatUser - .getFinishedActivity()); - request.setAttribute("LOCK_ON_FINISHED", chat.getLockOnFinished()); - - request.setAttribute("chatTitle", chat.getTitle()); - request.setAttribute("chatInstructions", chat.getInstructions()); - + + ChatUserDTO chatUserDTO = new ChatUserDTO(chatUser); + if (chatUser.getFinishedActivity()) { + // get the notebook entry. + NotebookEntry notebookEntry = chatService.getEntry(toolSessionID, + CoreNotebookConstants.NOTEBOOK_TOOL, + ChatConstants.TOOL_SIGNATURE, chatUser.getUserId() + .intValue()); + if (notebookEntry != null) { + chatUserDTO.notebookEntry = notebookEntry.getEntry(); + } + } + request.setAttribute("chatUserDTO", chatUserDTO); + // Ensure that the content is use flag is set. if (!chat.getContentInUse()) { chat.setContentInUse(new Boolean(true)); @@ -165,28 +176,25 @@ public ActionForward finishActivity(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { - Long chatUserUID = WebUtil.readLongParam(request, "chatUserUID"); - Long toolSessionID = WebUtil.readLongParam(request, "toolSessionID"); + LearningForm lrnForm = (LearningForm) form; // set the finished flag - ChatUser chatUser = chatService.getUserByUID(chatUserUID); + ChatUser chatUser = chatService.getUserByUID(lrnForm.getChatUserUID()); if (chatUser != null) { chatUser.setFinishedActivity(true); chatService.saveOrUpdateChatUser(chatUser); } else { log.error("finishActivity(): couldn't find ChatUser with uid: " - + chatUserUID); + + lrnForm.getChatUserUID()); } ToolSessionManager sessionMgrService = ChatServiceProxy .getChatSessionManager(getServlet().getServletContext()); - // get back login user DTO - // get session from shared session. - HttpSession ss = SessionManager.getSession(); UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); Long userID = new Long(user.getUserID().longValue()); + Long toolSessionID = chatUser.getChatSession().getSessionId(); String nextActivityUrl; try { @@ -203,4 +211,36 @@ return null; // TODO need to return proper page. } + + public ActionForward openNotebook(ActionMapping mapping, ActionForm form, + HttpServletRequest request, HttpServletResponse response) { + + LearningForm lrnForm = (LearningForm) form; + + // set the finished flag + ChatUser chatUser = chatService.getUserByUID(lrnForm.getChatUserUID()); + ChatDTO chatDTO = new ChatDTO(chatUser.getChatSession().getChat()); + + request.setAttribute("chatDTO", chatDTO); + return mapping.findForward("notebook"); + } + + public ActionForward submitReflection(ActionMapping mapping, + ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + + // save the reflection entry and call the notebook. + + LearningForm lrnForm = (LearningForm) form; + + ChatUser chatUser = chatService.getUserByUID(lrnForm.getChatUserUID()); + + chatService.createNotebookEntry(chatUser.getChatSession() + .getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + ChatConstants.TOOL_SIGNATURE, chatUser.getUserId().intValue(), + lrnForm.getEntryText()); + + return finishActivity(mapping, form, request, response); + } + } Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/MonitoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/MonitoringAction.java,v diff -u -r1.14 -r1.15 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/MonitoringAction.java 10 Jul 2006 04:51:09 -0000 1.14 +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/MonitoringAction.java 9 Aug 2006 01:12:10 -0000 1.15 @@ -35,6 +35,8 @@ import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; +import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.tool.chat.dto.ChatDTO; import org.lamsfoundation.lams.tool.chat.dto.ChatSessionDTO; import org.lamsfoundation.lams.tool.chat.dto.ChatUserDTO; @@ -68,6 +70,8 @@ * @struts.action-forward name="chat_history" * path="tiles:/monitoring/chat_history" * + * @struts.action-forward name="notebook" path="tiles:/monitoring/notebook" + * */ public class MonitoringAction extends LamsDispatchAction { @@ -123,6 +127,18 @@ count = 0; } userDTO.setPostCount(count); + + // get the notebook entry. + NotebookEntry notebookEntry = chatService.getEntry(session.getSessionId(), + CoreNotebookConstants.NOTEBOOK_TOOL, + ChatConstants.TOOL_SIGNATURE, user.getUserId() + .intValue()); + if (notebookEntry != null) { + userDTO.finishedReflection = true; + } else { + userDTO.finishedReflection = false; + } + sessionDTO.getUserDTOs().add(userDTO); } @@ -144,7 +160,24 @@ request.setAttribute("sessionDTO", sessionDTO); return mapping.findForward("chat_history"); } - + + public ActionForward openNotebook(ActionMapping mapping, + ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + + Long uid = WebUtil.readLongParam(request, "uid", false); + + ChatUser chatUser = chatService.getUserByUID(uid); + NotebookEntry notebookEntry = chatService.getEntry(chatUser.getChatSession().getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, ChatConstants.TOOL_SIGNATURE, chatUser.getUserId().intValue()); + + ChatUserDTO chatUserDTO = new ChatUserDTO(chatUser); + chatUserDTO.setNotebookEntry(notebookEntry.getEntry()); + + request.setAttribute("chatUserDTO", chatUserDTO); + + return mapping.findForward("notebook"); + } + public ActionForward editMessage(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { MonitoringForm monitoringForm = (MonitoringForm) form; Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/forms/AuthoringForm.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/forms/AuthoringForm.java,v diff -u -r1.7 -r1.8 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/forms/AuthoringForm.java 13 Jul 2006 02:27:16 -0000 1.7 +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/forms/AuthoringForm.java 9 Aug 2006 01:12:11 -0000 1.8 @@ -56,6 +56,10 @@ boolean lockOnFinished; + boolean reflectOnActivity; + + String reflectInstructions; + boolean filteringEnabled; String filterKeywords; @@ -202,4 +206,20 @@ public void setFilterKeywords(String filterKeywords) { this.filterKeywords = filterKeywords; } + + public boolean isReflectOnActivity() { + return reflectOnActivity; + } + + public void setReflectOnActivity(boolean reflectOnActivity) { + this.reflectOnActivity = reflectOnActivity; + } + + public String getReflectInstructions() { + return reflectInstructions; + } + + public void setReflectInstructions(String reflectInstructions) { + this.reflectInstructions = reflectInstructions; + } } Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/forms/LearningForm.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/forms/LearningForm.java,v diff -u -r1.1 -r1.2 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/forms/LearningForm.java 10 Jul 2006 04:51:35 -0000 1.1 +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/forms/LearningForm.java 9 Aug 2006 01:12:11 -0000 1.2 @@ -41,6 +41,7 @@ Long chatUserUID; Long toolSessionID; String mode; + String entryText; public String getMode() { return mode; @@ -73,4 +74,12 @@ public void setToolSessionID(Long toolSessionID) { this.toolSessionID = toolSessionID; } + + public String getEntryText() { + return entryText; + } + + public void setEntryText(String entryText) { + this.entryText = entryText; + } } Index: lams_tool_chat/web/WEB-INF/struts/struts-config.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/web/WEB-INF/struts/Attic/struts-config.xml,v diff -u -r1.8 -r1.9 --- lams_tool_chat/web/WEB-INF/struts/struts-config.xml 25 Jul 2006 05:00:57 -0000 1.8 +++ lams_tool_chat/web/WEB-INF/struts/struts-config.xml 9 Aug 2006 01:12:11 -0000 1.9 @@ -69,6 +69,11 @@ path="tiles:/learning/defineLater" redirect="false" /> + + + + + + + @@ -116,6 +121,15 @@ + + + + + + + + + Index: lams_tool_chat/web/pages/authoring/advanced.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/web/pages/authoring/advanced.jsp,v diff -u -r1.4 -r1.5 --- lams_tool_chat/web/pages/authoring/advanced.jsp 17 Jun 2006 05:15:58 -0000 1.4 +++ lams_tool_chat/web/pages/authoring/advanced.jsp 9 Aug 2006 01:12:11 -0000 1.5 @@ -15,6 +15,22 @@ + + + + + + + + + + + + + + + + Index: lams_tool_chat/web/pages/authoring/instructions.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/web/pages/authoring/Attic/instructions.jsp,v diff -u -r1.6 -r1.7 --- lams_tool_chat/web/pages/authoring/instructions.jsp 3 Jul 2006 02:32:40 -0000 1.6 +++ lams_tool_chat/web/pages/authoring/instructions.jsp 9 Aug 2006 01:12:11 -0000 1.7 @@ -12,9 +12,6 @@ - - - Index: lams_tool_chat/web/pages/export/exportPortfolio.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/web/pages/export/exportPortfolio.jsp,v diff -u -r1.3 -r1.4 --- lams_tool_chat/web/pages/export/exportPortfolio.jsp 10 Jul 2006 07:09:16 -0000 1.3 +++ lams_tool_chat/web/pages/export/exportPortfolio.jsp 9 Aug 2006 01:12:11 -0000 1.4 @@ -49,7 +49,6 @@ - Index: lams_tool_chat/web/pages/learning/chat_app.js =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/web/pages/learning/Attic/chat_app.js,v diff -u -r1.2 -r1.3 --- lams_tool_chat/web/pages/learning/chat_app.js 11 Jul 2006 02:34:07 -0000 1.2 +++ lams_tool_chat/web/pages/learning/chat_app.js 9 Aug 2006 01:12:11 -0000 1.3 @@ -194,6 +194,9 @@ document.getElementById("chat_pane").style.display = ""; if (MODE == "learner") { if (LEARNER_FINISHED == "true") { + + document.getElementById("notebookEntry_pane").style.display = ""; + if (LOCK_ON_FINISHED == "true") { // disable sending messages. document.getElementById("msgArea").disabled = "disabled"; Index: lams_tool_chat/web/pages/learning/chat_style.css =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/web/pages/learning/Attic/chat_style.css,v diff -u -r1.1 -r1.2 --- lams_tool_chat/web/pages/learning/chat_style.css 10 Jul 2006 04:51:08 -0000 1.1 +++ lams_tool_chat/web/pages/learning/chat_style.css 9 Aug 2006 01:12:11 -0000 1.2 @@ -50,8 +50,4 @@ margin-right: 12px; width: 532px; height: 100%; -} - -#finishButton_pane { - } \ No newline at end of file Index: lams_tool_chat/web/pages/learning/chat_ui.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/web/pages/learning/Attic/chat_ui.jsp,v diff -u -r1.1 -r1.2 --- lams_tool_chat/web/pages/learning/chat_ui.jsp 10 Jul 2006 04:51:09 -0000 1.1 +++ lams_tool_chat/web/pages/learning/chat_ui.jsp 9 Aug 2006 01:12:11 -0000 1.2 @@ -1,35 +1,41 @@ <%@ include file="/common/taglibs.jsp"%> - - - - - - + + + + + + - + @@ -44,51 +50,70 @@ - - - - - + + + + + + - - - <%-- options dynamically updated as users join/leave --%> - - loading - - - - + + + <%-- options dynamically updated as users join/leave --%> + + loading + + + + - - label.sendMessageTo - label.everyone - + + label.sendMessageTo + label.everyone + + - + - - - - - - + + + + + + - - - - - - - - button.finish - - - + + + + + + + + + + + + + + ${buttonLabel} + + + + + + + + + ${chatDTO.reflectInstructions} + ${chatUserDTO.notebookEntry} + - - Index: lams_tool_chat/web/pages/learning/notebook.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/web/pages/learning/notebook.jsp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_chat/web/pages/learning/notebook.jsp 9 Aug 2006 01:12:11 -0000 1.1 @@ -0,0 +1,34 @@ +<%@ include file="/common/taglibs.jsp"%> + + + ${chatDTO.title} + + + + + + + + ${chatDTO.reflectInstructions} + + + + + + + + + + + + + + + button.finish + + + + + + + Index: lams_tool_chat/web/pages/learning/runOffline.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/web/pages/learning/Attic/runOffline.jsp,v diff -u -r1.2 -r1.3 --- lams_tool_chat/web/pages/learning/runOffline.jsp 11 Jul 2006 02:34:07 -0000 1.2 +++ lams_tool_chat/web/pages/learning/runOffline.jsp 9 Aug 2006 01:12:11 -0000 1.3 @@ -18,7 +18,6 @@ - button.finish Index: lams_tool_chat/web/pages/monitoring/notebook.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/web/pages/monitoring/notebook.jsp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_chat/web/pages/monitoring/notebook.jsp 9 Aug 2006 01:12:11 -0000 1.1 @@ -0,0 +1,17 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + ${chatUserDTO.firstName} ${chatUserDTO.lastName} + + + + + + ${chatUserDTO.notebookEntry} + + + + Index: lams_tool_chat/web/pages/monitoring/statistics.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/web/pages/monitoring/statistics.jsp,v diff -u -r1.4 -r1.5 --- lams_tool_chat/web/pages/monitoring/statistics.jsp 2 Jul 2006 08:39:53 -0000 1.4 +++ lams_tool_chat/web/pages/monitoring/statistics.jsp 9 Aug 2006 01:12:11 -0000 1.5 @@ -30,11 +30,16 @@ - Learner + heading.learner - No of Posts + heading.numPosts + + + heading.reflection + + @@ -45,6 +50,20 @@ ${user.postCount} + + + + + + + + + + + + + +
- -
+ +
${chatUserDTO.notebookEntry}