Index: lams_tool_notebook/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -raaa815dc36a10df764cb28d0b1474354fa31764b -r0d511541f6bfff14442dec68a5f0144c49781fab --- lams_tool_notebook/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision aaa815dc36a10df764cb28d0b1474354fa31764b) +++ lams_tool_notebook/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 0d511541f6bfff14442dec68a5f0144c49781fab) @@ -103,6 +103,7 @@ monitor.summary.notification =Notification monitor.summary.date.restriction.set =Deadline has been set monitor.summary.date.restriction.removed =Deadline has been removed +monitor.summary.print = Print output.desc.all.users.entries.definition.notebook =Each learners' entry in Notebook button.submit =Finish message.monitoring.summary.no.session =No sessions available Index: lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/dao/INotebookUserDAO.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r0d511541f6bfff14442dec68a5f0144c49781fab --- lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/dao/INotebookUserDAO.java (.../INotebookUserDAO.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/dao/INotebookUserDAO.java (.../INotebookUserDAO.java) (revision 0d511541f6bfff14442dec68a5f0144c49781fab) @@ -21,7 +21,6 @@ * **************************************************************** */ - package org.lamsfoundation.lams.tool.notebook.dao; import java.util.List; @@ -38,7 +37,7 @@ */ public interface INotebookUserDAO extends IBaseDAO { /** - * + * * @param userId * @param toolSessionId * @return @@ -48,15 +47,15 @@ void saveOrUpdate(NotebookUser notebookUser); /** - * + * * @param loginName * @param sessionID * @return */ NotebookUser getByLoginNameAndSessionId(String loginName, Long toolSessionId); /** - * + * * @param uid * @return */ @@ -65,8 +64,9 @@ /** * Will return List<[NotebookUser, String, Date]> where the String is the notebook entry and the modified date. */ - List getUsersForTablesorter(final Long sessionId, int page, int size, int sorting, String searchString, - ICoreNotebookService coreNotebookService, IUserManagementService userManagementService); + List getUsersEntriesDates(final Long sessionId, Integer page, Integer size, int sorting, + String searchString, ICoreNotebookService coreNotebookService, + IUserManagementService userManagementService); int getCountUsersBySession(final Long sessionId, String searchString); Index: lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/dao/hibernate/NotebookUserDAO.java =================================================================== diff -u -r0e7d403e91b0916fd3842d8d3098b1c466d28ece -r0d511541f6bfff14442dec68a5f0144c49781fab --- lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/dao/hibernate/NotebookUserDAO.java (.../NotebookUserDAO.java) (revision 0e7d403e91b0916fd3842d8d3098b1c466d28ece) +++ lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/dao/hibernate/NotebookUserDAO.java (.../NotebookUserDAO.java) (revision 0d511541f6bfff14442dec68a5f0144c49781fab) @@ -102,7 +102,7 @@ /** * Will return List<[NotebookUser, String, Date]> where the String is the notebook entry and the modified date. */ - public List getUsersForTablesorter(final Long sessionId, int page, int size, int sorting, + public List getUsersEntriesDates(final Long sessionId, Integer page, Integer size, int sorting, String searchString, ICoreNotebookService coreNotebookService, IUserManagementService userManagementService) { String sortingOrder; @@ -154,7 +154,15 @@ NativeQuery query = getSession().createNativeQuery(queryText.toString()); query.addEntity("user", NotebookUser.class).addScalar("notebookEntry", StringType.INSTANCE) .addScalar("notebookModifiedDate", TimestampType.INSTANCE).addScalar("portraitId", StringType.INSTANCE) - .setParameter("sessionId", sessionId.longValue()).setFirstResult(page * size).setMaxResults(size); + .setParameter("sessionId", sessionId.longValue()); + + if (size != null) { + query.setMaxResults(size); + if (page != null) { + query.setFirstResult(page * size); + } + } + return query.list(); } Index: lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/dto/NotebookPrintDTO.java =================================================================== diff -u --- lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/dto/NotebookPrintDTO.java (revision 0) +++ lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/dto/NotebookPrintDTO.java (revision 0d511541f6bfff14442dec68a5f0144c49781fab) @@ -0,0 +1,102 @@ +package org.lamsfoundation.lams.tool.notebook.dto; + +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +public class NotebookPrintDTO { + public static class NotebookPrintUserDTO { + private String firstName; + private String lastName; + private String email; + private String entry; + private Date entryModifiedDate; + private String teacherComment; + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getEntry() { + return entry; + } + + public void setEntry(String entry) { + this.entry = entry; + } + + public Date getEntryModifiedDate() { + return entryModifiedDate; + } + + public void setEntryModifiedDate(Date entryModifiedDate) { + this.entryModifiedDate = entryModifiedDate; + } + + public String getTeacherComment() { + return teacherComment; + } + + public void setTeacherComment(String teacherComment) { + this.teacherComment = teacherComment; + } + } + + private String title; + private String instructions; + private boolean groupedActivity; + private Map> usersBySession = new TreeMap<>(); + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getInstructions() { + return instructions; + } + + public void setInstructions(String instructions) { + this.instructions = instructions; + } + + public boolean isGroupedActivity() { + return groupedActivity; + } + + public void setGroupedActivity(boolean groupedActivity) { + this.groupedActivity = groupedActivity; + } + + public Map> getUsersBySession() { + return usersBySession; + } + + public void setUsersBySession(Map> usersBySession) { + this.usersBySession = usersBySession; + } +} Index: lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/INotebookService.java =================================================================== diff -u -r3bb7e0141ae1cc15ccd737c95d90b5762a34ad61 -r0d511541f6bfff14442dec68a5f0144c49781fab --- lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/INotebookService.java (.../INotebookService.java) (revision 3bb7e0141ae1cc15ccd737c95d90b5762a34ad61) +++ lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/INotebookService.java (.../INotebookService.java) (revision 0d511541f6bfff14442dec68a5f0144c49781fab) @@ -21,7 +21,6 @@ * **************************************************************** */ - package org.lamsfoundation.lams.tool.notebook.service; import java.util.Collection; @@ -113,7 +112,7 @@ NotebookUser createNotebookUser(UserDTO user, NotebookSession notebookSession); boolean notifyUser(Integer userId, String comment); - + String finishToolSession(NotebookUser notebookUser, Boolean isContentEditable, String entryText); /** @@ -150,7 +149,8 @@ /** * Will return List<[NotebookUser, String, Date]> where the String is the notebook entry and the modified date. */ - List getUsersForTablesorter(final Long sessionId, int page, int size, int sorting, String searchString); + List getUsersEntriesDates(final Long sessionId, Integer page, Integer size, int sorting, + String searchString); int getCountUsersBySession(final Long sessionId, String searchString); Index: lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/NotebookService.java =================================================================== diff -u -r20aa6cbca9fc96d341080e6ad39f82593443f792 -r0d511541f6bfff14442dec68a5f0144c49781fab --- lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/NotebookService.java (.../NotebookService.java) (revision 20aa6cbca9fc96d341080e6ad39f82593443f792) +++ lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/NotebookService.java (.../NotebookService.java) (revision 0d511541f6bfff14442dec68a5f0144c49781fab) @@ -28,7 +28,6 @@ import java.util.Date; import java.util.List; import java.util.Random; -import java.util.Set; import java.util.SortedMap; import org.apache.log4j.Logger; @@ -98,7 +97,7 @@ private ICoreNotebookService coreNotebookService; private IEventNotificationService eventNotificationService; - + private IUserManagementService userManagementService; private MessageService messageService; @@ -171,7 +170,7 @@ public List getConfidenceLevels(Long toolSessionId) { return null; } - + @Override public boolean isUserGroupLeader(Long userId, Long toolSessionId) { return false; @@ -226,7 +225,7 @@ return; } - for (NotebookSession session : (Set) notebook.getNotebookSessions()) { + for (NotebookSession session : notebook.getNotebookSessions()) { List entries = coreNotebookService.getEntry(session.getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, NotebookConstants.TOOL_SIGNATURE); for (NotebookEntry entry : entries) { @@ -252,7 +251,7 @@ return; } - for (NotebookSession session : (Set) notebook.getNotebookSessions()) { + for (NotebookSession session : notebook.getNotebookSessions()) { NotebookUser user = notebookUserDAO.getByUserIdAndSessionId(userId.longValue(), session.getSessionId()); if (user != null) { if (user.getEntryUID() != null) { @@ -357,7 +356,7 @@ @Override public boolean isReadOnly(Long toolContentId) { Notebook notebook = notebookDAO.getByContentId(toolContentId); - for (NotebookSession session : (Set) notebook.getNotebookSessions()) { + for (NotebookSession session : notebook.getNotebookSessions()) { if (!session.getNotebookUsers().isEmpty()) { return true; } @@ -367,12 +366,12 @@ } /* ********** INotebookService Methods ********************************* */ - + @Override public String finishToolSession(NotebookUser notebookUser, Boolean isContentEditable, String entryText) { Long userId = notebookUser.getUserId(); Long toolSessionId = notebookUser.getNotebookSession().getSessionId(); - + // learningForm.getContentEditable() will be null if the deadline has passed if (isContentEditable != null && isContentEditable) { // TODO fix idType to use real value not 999 @@ -381,7 +380,7 @@ CoreNotebookConstants.NOTEBOOK_TOOL, NotebookConstants.TOOL_SIGNATURE, notebookUser.getUserId().intValue(), "", entryText); notebookUser.setEntryUID(entryUID); - + } else { // update existing entry. coreNotebookService.updateEntry(notebookUser.getEntryUID(), "", entryText); @@ -507,10 +506,10 @@ } @Override - public List getUsersForTablesorter(final Long sessionId, int page, int size, int sorting, + public List getUsersEntriesDates(final Long sessionId, Integer page, Integer size, int sorting, String searchString) { - return notebookUserDAO.getUsersForTablesorter(sessionId, page, size, sorting, searchString, - coreNotebookService, userManagementService); + return notebookUserDAO.getUsersEntriesDates(sessionId, page, size, sorting, searchString, coreNotebookService, + userManagementService); } @Override @@ -583,11 +582,11 @@ } public IUserManagementService getUserManagementService() { - return userManagementService; + return userManagementService; } public void setUserManagementService(IUserManagementService userManagementService) { - this.userManagementService = userManagementService; + this.userManagementService = userManagementService; } public ICoreNotebookService getCoreNotebookService() { @@ -657,7 +656,7 @@ public void auditLogStartEditingActivityInMonitor(long toolContentID) { toolService.auditLogStartEditingActivityInMonitor(toolContentID); } - + @Override public boolean isLastActivity(Long toolSessionId) { return toolService.isLastActivity(toolSessionId); Index: lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/web/controller/MonitoringController.java =================================================================== diff -u -r0e7d403e91b0916fd3842d8d3098b1c466d28ece -r0d511541f6bfff14442dec68a5f0144c49781fab --- lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 0e7d403e91b0916fd3842d8d3098b1c466d28ece) +++ lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 0d511541f6bfff14442dec68a5f0144c49781fab) @@ -25,6 +25,7 @@ import java.io.IOException; import java.util.Date; +import java.util.LinkedList; import java.util.List; import java.util.TimeZone; @@ -33,12 +34,16 @@ import javax.servlet.http.HttpSession; import org.apache.commons.lang.StringUtils; +import org.lamsfoundation.lams.tool.notebook.dto.NotebookPrintDTO; +import org.lamsfoundation.lams.tool.notebook.dto.NotebookPrintDTO.NotebookPrintUserDTO; import org.lamsfoundation.lams.tool.notebook.dto.NotebookSessionsDTO; import org.lamsfoundation.lams.tool.notebook.model.Notebook; +import org.lamsfoundation.lams.tool.notebook.model.NotebookSession; import org.lamsfoundation.lams.tool.notebook.model.NotebookUser; import org.lamsfoundation.lams.tool.notebook.service.INotebookService; import org.lamsfoundation.lams.tool.notebook.util.NotebookConstants; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.util.DateUtil; import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; @@ -48,8 +53,10 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.util.HtmlUtils; @@ -66,13 +73,16 @@ private INotebookService notebookService; @Autowired + private IUserManagementService userManagementService; + + @Autowired @Qualifier("notebookMessageService") private MessageService messageService; @RequestMapping(value = "") public String unspecified(HttpServletRequest request) { - Long toolContentID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID)); + Long toolContentID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); String contentFolderID = WebUtil.readStrParam(request, AttributeNames.PARAM_CONTENT_FOLDER_ID); request.setAttribute("contentFolderID", contentFolderID); @@ -137,7 +147,7 @@ ArrayNode rows = JsonNodeFactory.instance.arrayNode(); // our code expects the first page to be 0 but jqgrid uses 1 for the first page. - List users = notebookService.getUsersForTablesorter(toolSessionId, page > 0 ? page - 1 : 0, size, + List users = notebookService.getUsersEntriesDates(toolSessionId, page > 0 ? page - 1 : 0, size, sorting, searchString); String noEntry = getNoEntryText(); @@ -258,6 +268,39 @@ return "pages/monitoring/statisticpart"; } + @RequestMapping("/showPrintDialog") + public String showPrintDialog(@RequestParam(AttributeNames.PARAM_TOOL_CONTENT_ID) long toolContentID, Model model) { + Notebook notebook = notebookService.getNotebookByContentId(toolContentID); + NotebookPrintDTO printDTO = new NotebookPrintDTO(); + printDTO.setTitle(notebook.getTitle()); + printDTO.setInstructions(notebook.getInstructions()); + + boolean isGroupedActivity = notebookService.isGroupedActivity(toolContentID); + printDTO.setGroupedActivity(isGroupedActivity); + + for (NotebookSession session : notebook.getNotebookSessions()) { + List users = notebookService.getUsersEntriesDates(session.getSessionId(), null, null, + NotebookConstants.SORT_BY_USERNAME_ASC, null); + List printUserDTOs = new LinkedList<>(); + for (Object[] userData : users) { + NotebookUser user = (NotebookUser) userData[0]; + NotebookPrintUserDTO printUserDTO = new NotebookPrintUserDTO(); + printUserDTO.setFirstName(user.getFirstName()); + printUserDTO.setLastName(user.getLastName()); + printUserDTO.setEmail(userManagementService.getUserById(user.getUserId().intValue()).getEmail()); + printUserDTO.setEntry((String) userData[1]); + printUserDTO.setEntryModifiedDate((Date) userData[2]); + printUserDTO.setTeacherComment(user.getTeachersComment()); + printUserDTOs.add(printUserDTO); + } + + printDTO.getUsersBySession().put(session.getSessionName(), printUserDTOs); + } + model.addAttribute("printDTO", printDTO); + + return "pages/monitoring/print"; + } + /** * set up notebookService */ Index: lams_tool_notebook/web/pages/monitoring/print.jsp =================================================================== diff -u --- lams_tool_notebook/web/pages/monitoring/print.jsp (revision 0) +++ lams_tool_notebook/web/pages/monitoring/print.jsp (revision 0d511541f6bfff14442dec68a5f0144c49781fab) @@ -0,0 +1,34 @@ + +<%@ include file="/common/taglibs.jsp"%> +<%@ page import="org.lamsfoundation.lams.tool.notebook.util.NotebookConstants"%> + + + + + + +

+ +
+ + + +

+
+ + +

  

+ + +

+ + +

+

+ +
+
+
+
+ +
Index: lams_tool_notebook/web/pages/monitoring/summary.jsp =================================================================== diff -u -rf1ca97f406da2f8804ba1ab0fe07f96738053010 -r0d511541f6bfff14442dec68a5f0144c49781fab --- lams_tool_notebook/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision f1ca97f406da2f8804ba1ab0fe07f96738053010) +++ lams_tool_notebook/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 0d511541f6bfff14442dec68a5f0144c49781fab) @@ -182,20 +182,25 @@
+ +

- - - - - + + + + + -
+