Index: lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/service/WookieService.java =================================================================== diff -u -r08622dbb2e6672584f1cfcb52a239a46b3d667b1 -rc950f1229e26a9532391d9a07356161bf80ed270 --- lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/service/WookieService.java (.../WookieService.java) (revision 08622dbb2e6672584f1cfcb52a239a46b3d667b1) +++ lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/service/WookieService.java (.../WookieService.java) (revision c950f1229e26a9532391d9a07356161bf80ed270) @@ -137,7 +137,7 @@ private IWookieConfigItemDAO wookieConfigItemDAO; private MessageService messageService; - + private IUserManagementService userManagementService; public WookieService() { @@ -166,22 +166,26 @@ try { String newSharedDataKey = toolSessionId.toString() + "_" + toolContentId.toString(); - if (wookieUrl != null && wookie.getWidgetIdentifier() != null && wookie.getWidgetIdentifier() != "") { + if (wookieUrl != null) { - wookieUrl += WookieConstants.RELATIVE_URL_WIDGET_SERVICE; + if (wookie.getWidgetIdentifier() != null && wookie.getWidgetIdentifier() != "") { - logger.debug("Creating a new clone for session of widget: " + toolContentId.toString()); - boolean success = WookieUtil.cloneWidget(wookieUrl, getWookieAPIKey(), wookie.getWidgetIdentifier(), - toolContentId.toString(), newSharedDataKey, wookie.getCreateBy().toString()); + wookieUrl += WookieConstants.RELATIVE_URL_WIDGET_SERVICE; - if (success) { - session.setWidgetSharedDataKey(newSharedDataKey); - session.setWidgetHeight(wookie.getWidgetHeight()); - session.setWidgetWidth(wookie.getWidgetWidth()); - session.setWidgetMaximise(wookie.getWidgetMaximise()); - session.setWidgetIdentifier(wookie.getWidgetIdentifier()); - } else { - throw new WookieException("Failed to copy widget on wookie server, check log for details."); + logger.debug("Creating a new clone for session of widget: " + toolContentId.toString()); + boolean success = WookieUtil.cloneWidget(wookieUrl, getWookieAPIKey(), + wookie.getWidgetIdentifier(), toolContentId.toString(), newSharedDataKey, wookie + .getCreateBy().toString()); + + if (success) { + session.setWidgetSharedDataKey(newSharedDataKey); + session.setWidgetHeight(wookie.getWidgetHeight()); + session.setWidgetWidth(wookie.getWidgetWidth()); + session.setWidgetMaximise(wookie.getWidgetMaximise()); + session.setWidgetIdentifier(wookie.getWidgetIdentifier()); + } else { + throw new WookieException("Failed to copy widget on wookie server, check log for details."); + } } } else { @@ -282,11 +286,12 @@ toContent.setCreateBy(fromContent.getCreateBy()); // Need to add the author to the widget so authoring widget url is different in the copy - User user = (User)userManagementService.findById(User.class, fromContent.getCreateBy()); - String returnXML = WookieUtil.getWidget(wookieUrl, getWookieAPIKey(), fromContent.getWidgetIdentifier(), user.getUserDTO(), toContentId.toString(), true); - + User user = (User) userManagementService.findById(User.class, fromContent.getCreateBy()); + String returnXML = WookieUtil.getWidget(wookieUrl, getWookieAPIKey(), fromContent + .getWidgetIdentifier(), user.getUserDTO(), toContentId.toString(), true); + toContent.setWidgetAuthorUrl(WookieUtil.getWidgetUrlFromXML(returnXML)); - + } else { throw new WookieException("Failed to copy widget on wookie server, check log for details."); } @@ -301,7 +306,6 @@ wookieDAO.saveOrUpdate(toContent); } - public void copyFile(File srcFile, String destPath) throws Exception { if (srcFile.exists() && srcFile.canRead()) { @@ -677,7 +681,8 @@ wookie.setCreateBy(user.getUserID()); wookie.setCreateDate(now); wookie.setDefineLater(Boolean.FALSE); - wookie.setInstructions(WebUtil.convertNewlines((String) importValues.get(ToolContentImport102Manager.CONTENT_BODY))); + wookie.setInstructions(WebUtil.convertNewlines((String) importValues + .get(ToolContentImport102Manager.CONTENT_BODY))); wookie.setLockOnFinished(Boolean.TRUE); wookie.setOfflineInstructions(null); wookie.setOnlineInstructions(null); @@ -815,11 +820,11 @@ } public IUserManagementService getUserManagementService() { - return userManagementService; + return userManagementService; } public void setUserManagementService(IUserManagementService userManagementService) { - this.userManagementService = userManagementService; + this.userManagementService = userManagementService; } } Index: lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/web/actions/LearningAction.java =================================================================== diff -u -r705d4b051cba5f8acaf541cd23d0846b92d82869 -rc950f1229e26a9532391d9a07356161bf80ed270 --- lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/web/actions/LearningAction.java (.../LearningAction.java) (revision 705d4b051cba5f8acaf541cd23d0846b92d82869) +++ lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/web/actions/LearningAction.java (.../LearningAction.java) (revision c950f1229e26a9532391d9a07356161bf80ed270) @@ -37,6 +37,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.axis.utils.StringUtils; import org.apache.log4j.Logger; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; @@ -142,12 +143,15 @@ } else { wookieUser = getCurrentUser(toolSessionID); } - + // Create a new widget instance for the user if required. - if (wookieUser.getUserWidgetURL() == null || wookieUser.getUserWidgetURL().equals("")) { - String userWidgetURL = initiateWidget(wookieSession.getWidgetIdentifier(), wookieSession.getWidgetSharedDataKey()); - wookieUser.setUserWidgetURL(userWidgetURL); - wookieService.saveOrUpdateWookieUser(wookieUser); + if (!StringUtils.isEmpty(wookieSession.getWidgetSharedDataKey())) { + if (wookieUser.getUserWidgetURL() == null || wookieUser.getUserWidgetURL().equals("")) { + String userWidgetURL = initiateWidget(wookieSession.getWidgetIdentifier(), wookieSession + .getWidgetSharedDataKey()); + wookieUser.setUserWidgetURL(userWidgetURL); + wookieService.saveOrUpdateWookieUser(wookieUser); + } } // set up the user dto @@ -187,7 +191,7 @@ request.setAttribute("finishedActivity", wookieUser.isFinishedActivity()); return mapping.findForward("wookie"); } - + private String initiateWidget(String wookieIdentifier, String sharedDataKey) throws WookieException { try { @@ -196,8 +200,9 @@ wookieUrl += WookieConstants.RELATIVE_URL_WIDGET_SERVICE; - String returnXML = WookieUtil.getWidget(wookieUrl, wookieKey, wookieIdentifier, getUser(), sharedDataKey, false); - return WookieUtil.getWidgetUrlFromXML(returnXML); + String returnXML = WookieUtil.getWidget(wookieUrl, wookieKey, wookieIdentifier, getUser(), sharedDataKey, + false); + return WookieUtil.getWidgetUrlFromXML(returnXML); } catch (Exception e) { log.error("Problem intitating widget for learner" + e); @@ -219,7 +224,7 @@ return wookieUser; } - + private UserDTO getUser() { return (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER); } Index: lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/web/actions/MonitoringAction.java =================================================================== diff -u -r2dafe7131ccf51f9ac062eb9fe3aac6fe63bfa78 -rc950f1229e26a9532391d9a07356161bf80ed270 --- lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/web/actions/MonitoringAction.java (.../MonitoringAction.java) (revision 2dafe7131ccf51f9ac062eb9fe3aac6fe63bfa78) +++ lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/web/actions/MonitoringAction.java (.../MonitoringAction.java) (revision c950f1229e26a9532391d9a07356161bf80ed270) @@ -27,6 +27,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.axis.utils.StringUtils; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; @@ -80,26 +81,29 @@ } WookieDTO wookieDT0 = new WookieDTO(wookie); - + for (WookieSessionDTO sessionDTO : wookieDT0.getSessionDTOs()) { Long toolSessionID = sessionDTO.getSessionID(); - + // Initiate the wookie widget for the monitor - String sessionUserWidgetUrl = initiateWidget(sessionDTO.getWidgetIdentifier(), sessionDTO.getWidgetSharedDataKey()); - sessionDTO.setSessionUserWidgetUrl(sessionUserWidgetUrl); - + if (!StringUtils.isEmpty(sessionDTO.getWidgetSharedDataKey())) { + String sessionUserWidgetUrl = initiateWidget(sessionDTO.getWidgetIdentifier(), sessionDTO + .getWidgetSharedDataKey()); + sessionDTO.setSessionUserWidgetUrl(sessionUserWidgetUrl); + } for (WookieUserDTO userDTO : sessionDTO.getUserDTOs()) { // get the notebook entry. - NotebookEntry notebookEntry = wookieService.getEntry(toolSessionID, CoreNotebookConstants.NOTEBOOK_TOOL, - WookieConstants.TOOL_SIGNATURE, userDTO.getUserId().intValue()); + NotebookEntry notebookEntry = wookieService.getEntry(toolSessionID, + CoreNotebookConstants.NOTEBOOK_TOOL, WookieConstants.TOOL_SIGNATURE, userDTO.getUserId() + .intValue()); if (notebookEntry != null) { userDTO.notebookEntry = notebookEntry.getEntry(); userDTO.setFinishedReflection(true); } - + } } - + // Set a flag if there is only one session boolean multipleSessionFlag = false; if (wookieDT0.getSessionDTOs() != null && wookieDT0.getSessionDTOs().size() > 1) { @@ -115,7 +119,7 @@ request.setAttribute("toolContentID", toolContentID); return mapping.findForward("success"); } - + private String initiateWidget(String wookieIdentifier, String sharedDataKey) throws WookieException { try { @@ -124,15 +128,16 @@ wookieUrl += WookieConstants.RELATIVE_URL_WIDGET_SERVICE; - String returnXML = WookieUtil.getWidget(wookieUrl, wookieKey, wookieIdentifier, getUser(), sharedDataKey, true); - return WookieUtil.getWidgetUrlFromXML(returnXML); + String returnXML = WookieUtil.getWidget(wookieUrl, wookieKey, wookieIdentifier, getUser(), sharedDataKey, + true); + return WookieUtil.getWidgetUrlFromXML(returnXML); } catch (Exception e) { log.error("Problem intitating widget for learner" + e); throw new WookieException(e); } } - + private UserDTO getUser() { return (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER); } @@ -161,7 +166,7 @@ wookieService = WookieServiceProxy.getWookieService(this.getServlet().getServletContext()); } } - + /** * Opens a user's reflection * Index: lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/web/servlets/ExportServlet.java =================================================================== diff -u -r16f19684cdc9d508fab563581a9d12e823f8804d -rc950f1229e26a9532391d9a07356161bf80ed270 --- lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/web/servlets/ExportServlet.java (.../ExportServlet.java) (revision 16f19684cdc9d508fab563581a9d12e823f8804d) +++ lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/web/servlets/ExportServlet.java (.../ExportServlet.java) (revision c950f1229e26a9532391d9a07356161bf80ed270) @@ -191,8 +191,10 @@ Long toolSessionID = sessionDTO.getSessionID(); // Initiate the wookie widget for the monitor - String sessionUserWidgetUrl = initiateWidget(sessionDTO.getWidgetIdentifier(), sessionDTO.getWidgetSharedDataKey()); - sessionDTO.setSessionUserWidgetUrl(sessionUserWidgetUrl); + if (!StringUtils.isEmpty(sessionDTO.getWidgetSharedDataKey())) { + String sessionUserWidgetUrl = initiateWidget(sessionDTO.getWidgetIdentifier(), sessionDTO.getWidgetSharedDataKey()); + sessionDTO.setSessionUserWidgetUrl(sessionUserWidgetUrl); + } for (WookieUserDTO userDTO : sessionDTO.getUserDTOs()) { // get the notebook entry.