Index: lams_tool_laqa/conf/language/lams/ApplicationResources_en_AU.properties
===================================================================
diff -u -red84afe5b317b35b156848df66a1a9332af0f4b1 -r9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90
--- lams_tool_laqa/conf/language/lams/ApplicationResources_en_AU.properties	(.../ApplicationResources_en_AU.properties)	(revision ed84afe5b317b35b156848df66a1a9332af0f4b1)
+++ lams_tool_laqa/conf/language/lams/ApplicationResources_en_AU.properties	(.../ApplicationResources_en_AU.properties)	(revision 9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90)
@@ -257,6 +257,7 @@
 label.users.from.group  =Other learners participating in current group:
 label.use.select.leader.tool.output  =Use leaders from Select Leader tool
 label.group.leader  =Group Leader: {0}
+label.modify.users.response =Modify user's response
+label.info.use.select.leader.outputs  =Group leader's option is enabled
 
-
 #======= End labels: Exported 251 labels for en AU =====
Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaAppConstants.java
===================================================================
diff -u -r1caf9e1e75a249a528bd0d7a55851b4136692d65 -r9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90
--- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaAppConstants.java	(.../QaAppConstants.java)	(revision 1caf9e1e75a249a528bd0d7a55851b4136692d65)
+++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaAppConstants.java	(.../QaAppConstants.java)	(revision 9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90)
@@ -59,8 +59,9 @@
     public static final String LOAD_MONITORING = "refreshMonitoring";
     public static final String SOURCE_QA_STARTER = "sourceQaStarter";
     public static final String LOAD_VIEW_ONLY = "loadViewOnly";
-    public static final String EDIT_RESPONSE = "editResponse";
     public static final String EDITABLE_RESPONSE_ID = "editableResponseId";
+    public static final String RESPONSE_UID = "responseUid";
+    public static final String IS_HIDE_ITEM = "isHideItem";
     public static final String COPY_TOOL_CONTENT = "copyToolContent";
     public static final String MAP_SEQUENTIAL_ANSWERS_KEY = "mapSequentialAnswersKey";
     public static final String DEFAULT_CONTENT_ID_STR = "defaultContentIdStr";
@@ -70,11 +71,9 @@
     public static final String ENTRY_TEXT = "entryText";
     public static final String REFLECTIONS_CONTAINER_DTO = "reflectionsContainerDTO";
     public static final String LEARNER_NOTEBOOK = "learnerNotebook";
-    public static final String NOTEBOOK_ENTRIES_EXIST = "notebookEntriesExist";
-    public static final String NO_SESSIONS_NOTEBOOK_ENTRIES_EXIST = "noSessionsNotebookEntriesExist";
     public static final String QA_STATS_DTO = "qaStatsDTO";
     public static final String LIST_ALL_GROUPS_DTO = "listAllGroupsDTO";
-    public static final String CURRENT_SESSION_NAME = "currentSessionName";
+    public static final String IS_TOOL_SESSION_AVAILABLE = "isToolSessionAvailable";
 
     public static final String ACTIVE_MODULE = "activeModule";
     public static final String AUTHORING = "authoring";
@@ -123,7 +122,6 @@
     public static final String IS_ADD_QUESTION = "isAddQuestion";
     public static final String IS_REMOVE_QUESTION = "isRemoveQuestion";
     public static final String IS_REMOVE_CONTENT = "isRemoveContent";
-    public static final String SELECTION_CASE = "selectionCase";
 
     /*
      * authoring mode constants
@@ -172,12 +170,10 @@
     public static final String USER_EXCEPTION_MODE_INVALID = "userExceptionModeInvalid";
     public static final String USER_EXCEPTION_QUESTIONS_DUPLICATE = "userExceptionQuestionsDuplicate";
     public static final String COUNT_SESSION_COMPLETE = "countSessionComplete";
-    public static final String CURRENT_MONITORED_TOOL_SESSION = "currentMonitoredToolSession";
 
     public static final String COUNT_ALL_USERS = "countAllUsers";
     public static final String LIST_MONITORED_ANSWERS_CONTAINER_DTO = "listMonitoredAnswersContainerDto";
     public static final String SUMMARY_TOOL_SESSIONS = "summaryToolSessions";
-    public static final String SUMMARY_TOOL_SESSIONS_ID = "summaryToolSessionsId";
     public static final String EDIT_ACTIVITY_DTO = "editActivityDTO";
 
     public static final String ACTIVITY_TITLE = "activityTitle";
Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUsrResp.java
===================================================================
diff -u -r501ddb69e1c739b90388262f41b4927356cb0449 -r9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90
--- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUsrResp.java	(.../QaUsrResp.java)	(revision 501ddb69e1c739b90388262f41b4927356cb0449)
+++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUsrResp.java	(.../QaUsrResp.java)	(revision 9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90)
@@ -75,15 +75,6 @@
     }
 
     public QaUsrResp(String answer, Date attemptTime, String timezone, QaQueContent qaQuestion,
-	    QaQueUsr qaQueUser) {
-	this.answer = answer;
-	this.attemptTime = attemptTime;
-	this.timezone = timezone;
-	this.qaQuestion = qaQuestion;
-	this.qaQueUser = qaQueUser;
-    }
-
-    public QaUsrResp(String answer, Date attemptTime, String timezone, QaQueContent qaQuestion,
 	    QaQueUsr qaQueUser, boolean visible) {
 	this.answer = answer;
 	this.attemptTime = attemptTime;
Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/ResponseRatingDAO.java
===================================================================
diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90
--- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/ResponseRatingDAO.java	(.../ResponseRatingDAO.java)	(revision 15045d0b9b0dbb930f42a9da7757207e7a325341)
+++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/ResponseRatingDAO.java	(.../ResponseRatingDAO.java)	(revision 9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90)
@@ -29,7 +29,6 @@
 
 import org.hibernate.FlushMode;
 import org.lamsfoundation.lams.dao.hibernate.BaseDAO;
-import org.lamsfoundation.lams.tool.qa.QaUsrResp;
 import org.lamsfoundation.lams.tool.qa.ResponseRating;
 import org.lamsfoundation.lams.tool.qa.dao.IResponseRatingDAO;
 import org.lamsfoundation.lams.tool.qa.dto.AverageRatingDTO;
Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dto/GeneralMonitoringDTO.java
===================================================================
diff -u -rbe07c35c372d904a65581d98660e73f3b13b69db -r9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90
--- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dto/GeneralMonitoringDTO.java	(.../GeneralMonitoringDTO.java)	(revision be07c35c372d904a65581d98660e73f3b13b69db)
+++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dto/GeneralMonitoringDTO.java	(.../GeneralMonitoringDTO.java)	(revision 9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90)
@@ -23,209 +23,198 @@
 /* $$Id$$ */
 package org.lamsfoundation.lams.tool.qa.dto;
 
-
 import org.apache.commons.lang.builder.ToStringBuilder;
 
-
 /**
- * 
 DTO that holds learner flow decision properties and some other view-only properties
+ * 
+ * DTO that holds learner flow decision properties and some other view-only properties
  * 
  * 
  * @author Ozgur Demirtas
  */
-public class GeneralMonitoringDTO implements Comparable
-{
-    protected String userExceptionNoToolSessions;
+public class GeneralMonitoringDTO implements Comparable {
     protected String userExceptionNoStudentActivity;
     protected String userExceptionContentInUse;
     protected String monitoredContentInUse;
-    
+
     protected String defineLaterInEditMode;
-    
+
     protected String countAllUsers;
     protected String countSessionComplete;
-    
+
     protected String activityTitle;
     protected String activityInstructions;
-    
-    protected String editResponse;
-    
+
     protected String defaultQuestionContent;
-    
+
     protected String contentFolderID;
-    
-	
-	public String toString() {
-        return new ToStringBuilder(this)
-            .append("userExceptionNoToolSessions: ", userExceptionNoToolSessions)
-            .append("userExceptionNoStudentActivity: ", userExceptionNoStudentActivity)
-            .append("userExceptionContentInUse: ", userExceptionContentInUse)
-            .append("defineLaterInEditMode: ", defineLaterInEditMode)
-            .append("monitoredContentInUse: ", monitoredContentInUse)
-            .append("activityTitle: ", activityTitle)
-            .append("activityInstructions: ", activityInstructions)
-            .append("editResponse: ", editResponse)
-            .append("defaultQuestionContent: ", defaultQuestionContent)
-            .append("countAllUsers: ", countAllUsers)
-            .append("countSessionComplete: ", countSessionComplete)      
-            .toString();
+
+    public String toString() {
+	return new ToStringBuilder(this).append("userExceptionNoStudentActivity: ", userExceptionNoStudentActivity)
+		.append("userExceptionContentInUse: ", userExceptionContentInUse)
+		.append("defineLaterInEditMode: ", defineLaterInEditMode)
+		.append("monitoredContentInUse: ", monitoredContentInUse).append("activityTitle: ", activityTitle)
+		.append("activityInstructions: ", activityInstructions)
+		.append("defaultQuestionContent: ", defaultQuestionContent).append("countAllUsers: ", countAllUsers)
+		.append("countSessionComplete: ", countSessionComplete).toString();
     }
 
-	public int compareTo(Object o)
-    {
-	    GeneralMonitoringDTO generalMonitoringDTO = (GeneralMonitoringDTO) o;
-     
-        if (generalMonitoringDTO == null)
-        	return 1;
-		else
-			return 0;
+    public int compareTo(Object o) {
+	GeneralMonitoringDTO generalMonitoringDTO = (GeneralMonitoringDTO) o;
+
+	if (generalMonitoringDTO == null)
+	    return 1;
+	else
+	    return 0;
     }
 
-	
     /**
      * @return Returns the defineLaterInEditMode.
      */
     public String getDefineLaterInEditMode() {
-        return defineLaterInEditMode;
+	return defineLaterInEditMode;
     }
+
     /**
-     * @param defineLaterInEditMode The defineLaterInEditMode to set.
+     * @param defineLaterInEditMode
+     *            The defineLaterInEditMode to set.
      */
     public void setDefineLaterInEditMode(String defineLaterInEditMode) {
-        this.defineLaterInEditMode = defineLaterInEditMode;
+	this.defineLaterInEditMode = defineLaterInEditMode;
     }
+
     /**
      * @return Returns the monitoredContentInUse.
      */
     public String getMonitoredContentInUse() {
-        return monitoredContentInUse;
+	return monitoredContentInUse;
     }
+
     /**
-     * @param monitoredContentInUse The monitoredContentInUse to set.
+     * @param monitoredContentInUse
+     *            The monitoredContentInUse to set.
      */
     public void setMonitoredContentInUse(String monitoredContentInUse) {
-        this.monitoredContentInUse = monitoredContentInUse;
+	this.monitoredContentInUse = monitoredContentInUse;
     }
+
     /**
      * @return Returns the userExceptionContentInUse.
      */
     public String getUserExceptionContentInUse() {
-        return userExceptionContentInUse;
+	return userExceptionContentInUse;
     }
+
     /**
-     * @param userExceptionContentInUse The userExceptionContentInUse to set.
+     * @param userExceptionContentInUse
+     *            The userExceptionContentInUse to set.
      */
     public void setUserExceptionContentInUse(String userExceptionContentInUse) {
-        this.userExceptionContentInUse = userExceptionContentInUse;
+	this.userExceptionContentInUse = userExceptionContentInUse;
     }
+
     /**
-     * @return Returns the editResponse.
-     */
-    public String getEditResponse() {
-        return editResponse;
-    }
-    /**
-     * @param editResponse The editResponse to set.
-     */
-    public void setEditResponse(String editResponse) {
-        this.editResponse = editResponse;
-    }
-    /**
      * @return Returns the defaultQuestionContent.
      */
     public String getDefaultQuestionContent() {
-        return defaultQuestionContent;
+	return defaultQuestionContent;
     }
+
     /**
-     * @param defaultQuestionContent The defaultQuestionContent to set.
+     * @param defaultQuestionContent
+     *            The defaultQuestionContent to set.
      */
     public void setDefaultQuestionContent(String defaultQuestionContent) {
-        this.defaultQuestionContent = defaultQuestionContent;
+	this.defaultQuestionContent = defaultQuestionContent;
     }
+
     /**
      * @return Returns the userExceptionNoStudentActivity.
      */
     public String getUserExceptionNoStudentActivity() {
-        return userExceptionNoStudentActivity;
+	return userExceptionNoStudentActivity;
     }
+
     /**
-     * @param userExceptionNoStudentActivity The userExceptionNoStudentActivity to set.
+     * @param userExceptionNoStudentActivity
+     *            The userExceptionNoStudentActivity to set.
      */
-    public void setUserExceptionNoStudentActivity(
-            String userExceptionNoStudentActivity) {
-        this.userExceptionNoStudentActivity = userExceptionNoStudentActivity;
+    public void setUserExceptionNoStudentActivity(String userExceptionNoStudentActivity) {
+	this.userExceptionNoStudentActivity = userExceptionNoStudentActivity;
     }
+
     /**
      * @return Returns the countAllUsers.
      */
     public String getCountAllUsers() {
-        return countAllUsers;
+	return countAllUsers;
     }
+
     /**
-     * @param countAllUsers The countAllUsers to set.
+     * @param countAllUsers
+     *            The countAllUsers to set.
      */
     public void setCountAllUsers(String countAllUsers) {
-        this.countAllUsers = countAllUsers;
+	this.countAllUsers = countAllUsers;
     }
+
     /**
      * @return Returns the countSessionComplete.
      */
     public String getCountSessionComplete() {
-        return countSessionComplete;
+	return countSessionComplete;
     }
+
     /**
-     * @param countSessionComplete The countSessionComplete to set.
+     * @param countSessionComplete
+     *            The countSessionComplete to set.
      */
     public void setCountSessionComplete(String countSessionComplete) {
-        this.countSessionComplete = countSessionComplete;
+	this.countSessionComplete = countSessionComplete;
     }
+
     /**
-     * @return Returns the userExceptionNoToolSessions.
-     */
-    public String getUserExceptionNoToolSessions() {
-        return userExceptionNoToolSessions;
-    }
-    /**
-     * @param userExceptionNoToolSessions The userExceptionNoToolSessions to set.
-     */
-    public void setUserExceptionNoToolSessions(
-            String userExceptionNoToolSessions) {
-        this.userExceptionNoToolSessions = userExceptionNoToolSessions;
-    }
-    /**
      * @return Returns the activityInstructions.
      */
     public String getActivityInstructions() {
-        return activityInstructions;
+	return activityInstructions;
     }
+
     /**
-     * @param activityInstructions The activityInstructions to set.
+     * @param activityInstructions
+     *            The activityInstructions to set.
      */
     public void setActivityInstructions(String activityInstructions) {
-        this.activityInstructions = activityInstructions;
+	this.activityInstructions = activityInstructions;
     }
+
     /**
      * @return Returns the activityTitle.
      */
     public String getActivityTitle() {
-        return activityTitle;
+	return activityTitle;
     }
+
     /**
-     * @param activityTitle The activityTitle to set.
+     * @param activityTitle
+     *            The activityTitle to set.
      */
     public void setActivityTitle(String activityTitle) {
-        this.activityTitle = activityTitle;
+	this.activityTitle = activityTitle;
     }
+
     /**
      * @return Returns the contentFolderID.
      */
     public String getContentFolderID() {
-        return contentFolderID;
+	return contentFolderID;
     }
+
     /**
-     * @param contentFolderID The contentFolderID to set.
+     * @param contentFolderID
+     *            The contentFolderID to set.
      */
     public void setContentFolderID(String contentFolderID) {
-        this.contentFolderID = contentFolderID;
+	this.contentFolderID = contentFolderID;
     }
 }
Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dto/GroupDTO.java
===================================================================
diff -u
--- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dto/GroupDTO.java	(revision 0)
+++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dto/GroupDTO.java	(revision 9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90)
@@ -0,0 +1,104 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ * 
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ * 
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+/* $$Id$$ */
+package org.lamsfoundation.lams.tool.qa.dto;
+
+import java.util.List;
+
+import org.apache.commons.lang.builder.ToStringBuilder;
+
+/**
+ * 
+ * DTO that holds question and user attempts data for jsp purposes
+ * 
+ * 
+ * @author Ozgur Demirtas
+ */
+public class GroupDTO implements Comparable {
+
+    private String sessionId;
+
+    private String sessionName;
+
+    private List groupData;
+
+    public String toString() {
+	return new ToStringBuilder(this).append("sessionId:", sessionId).append("sessionName:", sessionName).append(
+		"groupData: ", groupData).toString();
+    }
+
+    public int compareTo(Object o) {
+	GroupDTO groupDTO = (GroupDTO) o;
+
+	if (groupDTO == null)
+	    return 1;
+	else
+	    return 0;
+    }
+
+    /**
+     * @return Returns the groupData.
+     */
+    public List getGroupData() {
+	return groupData;
+    }
+
+    /**
+     * @param groupData
+     *                The groupData to set.
+     */
+    public void setGroupData(List groupData) {
+	this.groupData = groupData;
+    }
+
+    /**
+     * @return Returns the sessionName.
+     */
+    public String getSessionName() {
+	return sessionName;
+    }
+
+    /**
+     * @param sessionName
+     *                The sessionName to set.
+     */
+    public void setSessionName(String sessionName) {
+	this.sessionName = sessionName;
+    }
+
+    /**
+     * @return Returns the sessionId.
+     */
+    public String getSessionId() {
+	return sessionId;
+    }
+
+    /**
+     * @param sessionId
+     *                The sessionId to set.
+     */
+    public void setSessionId(String sessionId) {
+	this.sessionId = sessionId;
+    }
+}
Fisheye: Tag 9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90 refers to a dead (removed) revision in file `lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dto/QaAllGroupsDTO.java'.
Fisheye: No comparison available.  Pass `N' to diff?
Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dto/ReflectionDTO.java
===================================================================
diff -u -r91f0740e75daa643981b757e49d1ed2ed7f0a528 -r9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90
--- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dto/ReflectionDTO.java	(.../ReflectionDTO.java)	(revision 91f0740e75daa643981b757e49d1ed2ed7f0a528)
+++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dto/ReflectionDTO.java	(.../ReflectionDTO.java)	(revision 9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90)
@@ -23,6 +23,8 @@
 /* $$Id$$ */
 package org.lamsfoundation.lams.tool.qa.dto;
 
+import java.util.Date;
+
 import org.apache.commons.lang.builder.ToStringBuilder;
 
 /**
@@ -42,6 +44,8 @@
     protected String reflectionUid;
 
     protected String entry;
+    
+    protected Date date;
 
     public int compareTo(Object o) {
 	ReflectionDTO reflectionDTO = (ReflectionDTO) o;
@@ -131,4 +135,12 @@
     public void setUserName(String userName) {
 	this.userName = userName;
     }
+    
+    public Date getDate() {
+	return date;
+    }
+
+    public void setDate(Date date) {
+	this.date = date;
+    }
 }
Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/IQaService.java
===================================================================
diff -u -rbe07c35c372d904a65581d98660e73f3b13b69db -r9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90
--- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/IQaService.java	(.../IQaService.java)	(revision be07c35c372d904a65581d98660e73f3b13b69db)
+++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/IQaService.java	(.../IQaService.java)	(revision 9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90)
@@ -163,10 +163,8 @@
 
     void createQa(QaContent qa) throws QaApplicationException;
 
-    void hideResponse(QaUsrResp qaUsrResp) throws QaApplicationException;
+    void updateResponseVisibility(Long responseUid, boolean visible);
 
-    void showResponse(QaUsrResp qaUsrResp) throws QaApplicationException;
-
     QaContent retrieveQaBySession(long qaSessionId) throws QaApplicationException;
 
     QaQueUsr getUserByIdAndSession(final Long queUsrId, final Long qaSessionId) throws QaApplicationException;
Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java
===================================================================
diff -u -r567af22fafd6a56534cc071f3650eda4495d05ef -r9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90
--- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java	(.../QaServicePOJO.java)	(revision 567af22fafd6a56534cc071f3650eda4495d05ef)
+++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java	(.../QaServicePOJO.java)	(revision 9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90)
@@ -494,23 +494,29 @@
 		    "Exception occured when lams is deleting" + " the resp: " + e.getMessage(), e);
 	}
     }
-
-    /**
-     * logs hiding of a user entered vote
-     */
-    public void hideResponse(QaUsrResp qaUsrResp) throws QaApplicationException {
-	auditService.logHideEntry(QaAppConstants.MY_SIGNATURE, qaUsrResp.getQaQueUser().getQueUsrId(), qaUsrResp.getQaQueUser()
-		.getUsername(), qaUsrResp.getAnswer());
+    
+    @Override
+    public void updateResponseVisibility(Long responseUid, boolean isHideItem) {
+	
+	QaUsrResp response = getResponseById(responseUid);
+	if (response != null) {
+	    // createBy should be null for system default value.
+	    Long userId = 0L;
+	    String loginName = "No user";
+	    if (response.getQaQueUser() != null) {
+		userId = response.getQaQueUser().getQueUsrId();
+		loginName = response.getQaQueUser().getUsername();
+	    }
+	    if (isHideItem) {
+		auditService.logHideEntry(QaAppConstants.MY_SIGNATURE, userId, loginName, response.getAnswer());
+	    } else {
+		auditService.logShowEntry(QaAppConstants.MY_SIGNATURE, userId, loginName, response.getAnswer());
+	    }
+	    response.setVisible(!isHideItem);
+	    updateUserResponse(response);
+	}
     }
 
-    /**
-     * logs showing of a user entered vote
-     */
-    public void showResponse(QaUsrResp qaUsrResp) throws QaApplicationException {
-	auditService.logShowEntry(QaAppConstants.MY_SIGNATURE, qaUsrResp.getQaQueUser().getQueUsrId(), qaUsrResp.getQaQueUser()
-		.getUsername(), qaUsrResp.getAnswer());
-    }
-
     public int getTotalNumberOfUsers(QaContent qa) {
 	try {
 	    return qaQueUsrDAO.getTotalNumberOfUsers(qa);
@@ -744,8 +750,7 @@
 	    // all users mode
 	    for (QaSession session : sessions) {
 
-		for (Iterator userIter = session.getQaQueUsers().iterator(); userIter.hasNext();) {
-		    QaQueUsr user = (QaQueUsr) userIter.next();
+		for (QaQueUsr user : (Set) session.getQaQueUsers()) {
 
 		    NotebookEntry notebookEntry = this.getEntry(session.getQaSessionId(),
 			    CoreNotebookConstants.NOTEBOOK_TOOL, QaAppConstants.MY_SIGNATURE, new Integer(user
@@ -757,6 +762,9 @@
 			reflectionDTO.setSessionId(session.getQaSessionId().toString());
 			reflectionDTO.setUserName(user.getFullname());
 			reflectionDTO.setReflectionUid(notebookEntry.getUid().toString());
+			Date postedDate = (notebookEntry.getLastModified() != null) ? notebookEntry.getLastModified()
+				: notebookEntry.getCreateDate();
+			reflectionDTO.setDate(postedDate);
 			String notebookEntryPresentable = QaUtils.replaceNewLines(notebookEntry.getEntry());
 			reflectionDTO.setEntry(notebookEntryPresentable);
 			reflectionDTOs.add(reflectionDTO);
@@ -767,8 +775,7 @@
 	    // single user mode
 	    for (QaSession session : sessions) {
 
-		for (Iterator userIter = session.getQaQueUsers().iterator(); userIter.hasNext();) {
-		    QaQueUsr user = (QaQueUsr) userIter.next();
+		for (QaQueUsr user : (Set) session.getQaQueUsers()) {
 
 		    if (user.getQueUsrId().toString().equals(userID)) {
 			NotebookEntry notebookEntry = this.getEntry(session.getQaSessionId(),
@@ -781,6 +788,9 @@
 			    reflectionDTO.setSessionId(session.getQaSessionId().toString());
 			    reflectionDTO.setUserName(user.getFullname());
 			    reflectionDTO.setReflectionUid(notebookEntry.getUid().toString());
+			    Date postedDate = (notebookEntry.getLastModified() != null) ? notebookEntry
+				    .getLastModified() : notebookEntry.getCreateDate();
+			    reflectionDTO.setDate(postedDate);
 			    String notebookEntryPresentable = QaUtils.replaceNewLines(notebookEntry.getEntry());
 			    reflectionDTO.setEntry(notebookEntryPresentable);
 			    reflectionDTOs.add(reflectionDTO);
Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/util/QaUtils.java
===================================================================
diff -u -r1caf9e1e75a249a528bd0d7a55851b4136692d65 -r9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90
--- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/util/QaUtils.java	(.../QaUtils.java)	(revision 1caf9e1e75a249a528bd0d7a55851b4136692d65)
+++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/util/QaUtils.java	(.../QaUtils.java)	(revision 9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90)
@@ -215,7 +215,6 @@
 	request.getSession().removeAttribute(LEARNING_STARTER);
 	request.getSession().removeAttribute(MONITORING_STARTER);
 	request.getSession().removeAttribute(LOAD_MONITORING);
-	request.getSession().removeAttribute(EDIT_RESPONSE);
 	request.getSession().removeAttribute(EDITABLE_RESPONSE_ID);
 	request.getSession().removeAttribute(COPY_TOOL_CONTENT);
 	request.getSession().removeAttribute(DEFAULT_CONTENT_ID_STR);
@@ -228,7 +227,6 @@
 	request.getSession().removeAttribute(IS_ADD_QUESTION);
 	request.getSession().removeAttribute(IS_REMOVE_QUESTION);
 	request.getSession().removeAttribute(IS_REMOVE_CONTENT);
-	request.getSession().removeAttribute(SELECTION_CASE);
 	request.getSession().removeAttribute(MAP_QUESTION_CONTENT);
 	request.getSession().removeAttribute(DEFAULT_QUESTION_CONTENT);
 	request.getSession().removeAttribute(END_LEARNING_MESSSAGE);
@@ -245,11 +243,9 @@
 	request.getSession().removeAttribute(MAX_TOOL_SESSION_COUNT.toString());
 	request.getSession().removeAttribute(IS_TOOL_SESSION_CHANGED);
 	request.getSession().removeAttribute(COUNT_SESSION_COMPLETE);
-	request.getSession().removeAttribute(CURRENT_MONITORED_TOOL_SESSION);
 	request.getSession().removeAttribute(COUNT_ALL_USERS);
 	request.getSession().removeAttribute(LIST_MONITORED_ANSWERS_CONTAINER_DTO);
 	request.getSession().removeAttribute(SUMMARY_TOOL_SESSIONS);
-	request.getSession().removeAttribute(SUMMARY_TOOL_SESSIONS_ID);
 	request.getSession().removeAttribute(MODE);
 	request.getSession().removeAttribute(LEARNER);
 	request.getSession().removeAttribute(TEACHER);
@@ -366,17 +362,6 @@
 	}
     }
 
-    public static void setDefineLater(HttpServletRequest request, boolean value, IQaService qaService,
-	    String toolContentID) {
-
-	QaContent qaContent = qaService.getQa(new Long(toolContentID).longValue());
-	
-	if (qaContent != null) {
-	    qaContent.setDefineLater(value);
-	    qaService.updateQa(qaContent);
-	}
-    }
-
     public static String getCurrentLearnerID() {
 	String userID = "";
 	HttpSession ss = SessionManager.getSession();
Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/ExportServlet.java
===================================================================
diff -u -rbe07c35c372d904a65581d98660e73f3b13b69db -r9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90
--- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/ExportServlet.java	(.../ExportServlet.java)	(revision be07c35c372d904a65581d98660e73f3b13b69db)
+++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/ExportServlet.java	(.../ExportServlet.java)	(revision 9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90)
@@ -60,20 +60,19 @@
 
     public String doExport(HttpServletRequest request, HttpServletResponse response, String directoryName,
 	    Cookie[] cookies) {
-	String basePath =WebUtil.getBaseServerURL()
-		+ request.getContextPath();
+	String basePath = WebUtil.getBaseServerURL() + request.getContextPath();
 
 	if (StringUtils.equals(mode, ToolAccessMode.LEARNER.toString())) {
 	    learner(request, response, directoryName, cookies);
 	} else if (StringUtils.equals(mode, ToolAccessMode.TEACHER.toString())) {
 	    teacher(request, response, directoryName, cookies);
 	}
-	
+
 	// Attempting to export required images
 	try {
 	    QaBundler qaBundler = new QaBundler();
 	    qaBundler.bundle(request, cookies, directoryName);
-	    
+
 	} catch (Exception e) {
 	    logger.error("Could not export Q&A javascript files, some files may be missing in export portfolio", e);
 	}
@@ -95,7 +94,7 @@
 	QaSession qaSession = qaService.getSessionById(toolSessionID.longValue());
 
 	// If the learner hasn't answered yet, then they won't exist in the session.
-	// Yet we might be asked for their page, as the activity has been commenced. 
+	// Yet we might be asked for their page, as the activity has been commenced.
 	// So need to do a "blank" page in that case
 	QaQueUsr learner = qaService.getUserByIdAndSession(userID, qaSession.getQaSessionId());
 	QaContent content = qaSession.getQaContent();
@@ -106,27 +105,25 @@
 	    throw new QaApplicationException(error);
 	}
 
-	QaMonitoringAction qaMonitoringAction = new QaMonitoringAction();
-
-	GeneralLearnerFlowDTO generalLearnerFlowDTO = LearningUtil.buildGeneralLearnerFlowDTO(content);
-	generalLearnerFlowDTO.setUserUid(learner != null ? learner.getQueUsrId().toString() : null);
-
 	// if learner is null, don't want to show other people's answers
 	if (learner != null) {
-	    qaMonitoringAction
-		    .refreshSummaryData(request, content, qaService, content.isUsernameVisible(), true, toolSessionID
-			    .toString(), userID.toString(), generalLearnerFlowDTO, false, toolSessionID.toString());
+	    boolean isNoToolSessions = qaService.isStudentActivityOccurredGlobal(content);
+	    request.getSession().setAttribute(QaAppConstants.IS_TOOL_SESSION_AVAILABLE, isNoToolSessions);
 
+	    GeneralLearnerFlowDTO generalLearnerFlowDTO = LearningUtil.buildGeneralLearnerFlowDTO(content);
+	    List listMonitoredAnswersContainerDTO = MonitoringUtil.buildGroupsQuestionData(request, content, qaService,
+		    content.isUsernameVisible(), true, toolSessionID.toString(), userID.toString());
+	    generalLearnerFlowDTO.setListMonitoredAnswersContainerDTO(listMonitoredAnswersContainerDTO);
+	    generalLearnerFlowDTO.setRequestLearningReportProgress(new Boolean(true).toString());
+	    generalLearnerFlowDTO.setUserUid(userID.toString());
+	    request.getSession().setAttribute(GENERAL_LEARNER_FLOW_DTO, generalLearnerFlowDTO);
+
+	    MonitoringUtil.setUpMonitoring(request, qaService, content);
+
 	    List reflectionDTOs = qaService.getReflectList(content, userID.toString());
-	    request.setAttribute(QaAppConstants.REFLECTIONS_CONTAINER_DTO, reflectionDTOs);
 	    request.getSession().setAttribute(QaAppConstants.REFLECTIONS_CONTAINER_DTO, reflectionDTOs);
 	}
 
-	generalLearnerFlowDTO = (GeneralLearnerFlowDTO) request.getAttribute(GENERAL_LEARNER_FLOW_DTO);
-
-	//for the special case of export portfolio we place generalLearnerFlowDTO into session scope
-	request.getSession().setAttribute(GENERAL_LEARNER_FLOW_DTO, generalLearnerFlowDTO);
-
 	request.getSession().setAttribute(PORTFOLIO_EXPORT_MODE, "learner");
     }
 
@@ -147,22 +144,22 @@
 	    throw new QaApplicationException(error);
 	}
 
-	QaMonitoringAction qaMonitoringAction = new QaMonitoringAction();
-	GeneralLearnerFlowDTO generalLearnerFlowDTO = LearningUtil.buildGeneralLearnerFlowDTO(content);
-	qaMonitoringAction.refreshSummaryData(request, content, qaService, true, false, null, null,
-		generalLearnerFlowDTO, false, "All");
-	generalLearnerFlowDTO = (GeneralLearnerFlowDTO) request.getAttribute(GENERAL_LEARNER_FLOW_DTO);
+	boolean isToolSessionAvailable = qaService.isStudentActivityOccurredGlobal(content);
+	request.getSession().setAttribute(QaAppConstants.IS_TOOL_SESSION_AVAILABLE, isToolSessionAvailable);
 
+	GeneralLearnerFlowDTO generalLearnerFlowDTO = LearningUtil.buildGeneralLearnerFlowDTO(content);
 	request.getSession().setAttribute(GENERAL_LEARNER_FLOW_DTO, generalLearnerFlowDTO);
+
+	MonitoringUtil.setUpMonitoring(request, qaService, content);
+
 	request.getSession().setAttribute(PORTFOLIO_EXPORT_MODE, "teacher");
 
 	List reflectionDTOs = qaService.getReflectList(content, userID.toString());
-	request.setAttribute(QaAppConstants.REFLECTIONS_CONTAINER_DTO, reflectionDTOs);
 	request.getSession().setAttribute(QaAppConstants.REFLECTIONS_CONTAINER_DTO, reflectionDTOs);
 
 	request.setAttribute("currentMonitoredToolSession", "All");
-	
-	//generateGroupsSessionData
+
+	// generateGroupsSessionData
 	List listAllGroupsDTO = MonitoringUtil.buildGroupBasedSessionData(request, content, qaService);
 	request.setAttribute(LIST_ALL_GROUPS_DTO, listAllGroupsDTO);
 	request.getSession().setAttribute(LIST_ALL_GROUPS_DTO, listAllGroupsDTO);
Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/MonitoringUtil.java
===================================================================
diff -u -r6c5d0c6b8ff17d661580df2c265f2dcabfe7d76c -r9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90
--- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/MonitoringUtil.java	(.../MonitoringUtil.java)	(revision 6c5d0c6b8ff17d661580df2c265f2dcabfe7d76c)
+++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/MonitoringUtil.java	(.../MonitoringUtil.java)	(revision 9fbb7ff85ea238ebc8699e9ec116eb0cd782ff90)
@@ -37,19 +37,18 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 
-import org.lamsfoundation.lams.notebook.model.NotebookEntry;
-import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants;
 import org.lamsfoundation.lams.tool.qa.QaAppConstants;
 import org.lamsfoundation.lams.tool.qa.QaContent;
 import org.lamsfoundation.lams.tool.qa.QaQueContent;
 import org.lamsfoundation.lams.tool.qa.QaQueUsr;
 import org.lamsfoundation.lams.tool.qa.QaSession;
 import org.lamsfoundation.lams.tool.qa.QaUsrResp;
 import org.lamsfoundation.lams.tool.qa.dto.AverageRatingDTO;
-import org.lamsfoundation.lams.tool.qa.dto.QaAllGroupsDTO;
+import org.lamsfoundation.lams.tool.qa.dto.GroupDTO;
 import org.lamsfoundation.lams.tool.qa.dto.QaMonitoredAnswersDTO;
 import org.lamsfoundation.lams.tool.qa.dto.QaMonitoredUserDTO;
 import org.lamsfoundation.lams.tool.qa.dto.QaStatsDTO;
+import org.lamsfoundation.lams.tool.qa.dto.ReflectionDTO;
 import org.lamsfoundation.lams.tool.qa.service.IQaService;
 import org.lamsfoundation.lams.tool.qa.util.QaSessionComparator;
 import org.lamsfoundation.lams.tool.qa.util.QaStringComparator;
@@ -107,136 +106,47 @@
     }
 
     /**
-     * ends up populating the attempt history for all the users of all the tool
-     * sessions for a content 
-     * 
-     * User id is needed if isUserNamesVisible is false && is learnerRequest =
-     * true, as it is required to work out if the data being analysed is the
-     * current user.
-     * 
-     * @param request
-     * @param mcContent
-     * @return List
-     */
-    public static List buildGroupsQuestionData(HttpServletRequest request, QaContent qaContent, IQaService qaService,
-	    boolean isUserNamesVisible, boolean isLearnerRequest, String currentSessionId, String userId) {
-	List listQuestions = qaService.getAllQuestionEntries(qaContent.getUid());
-
-	String sessionName = "";
-	if ((currentSessionId != null) && (!currentSessionId.equals("All"))) {
-	    QaSession qaSession = qaService.getSessionById(new Long(currentSessionId).longValue());
-	    sessionName = qaSession.getSession_name();
-	}
-	request.setAttribute(CURRENT_SESSION_NAME, sessionName);
-
-	List listMonitoredAnswersContainerDTO = new LinkedList();
-
-	Iterator itListQuestions = listQuestions.iterator();
-	while (itListQuestions.hasNext()) {
-	    QaQueContent qaQuestion = (QaQueContent) itListQuestions.next();
-
-	    if (qaQuestion != null) {
-		QaMonitoredAnswersDTO qaMonitoredAnswersDTO = new QaMonitoredAnswersDTO();
-		qaMonitoredAnswersDTO.setQuestionUid(qaQuestion.getUid().toString());
-		qaMonitoredAnswersDTO.setQuestion(qaQuestion.getQuestion());
-		qaMonitoredAnswersDTO.setFeedback(qaQuestion.getFeedback());
-		qaMonitoredAnswersDTO.setSessionName(sessionName);
-
-		Map questionAttemptData = buildGroupsAttemptData(request, qaContent, qaService,
-			qaQuestion.getUid().toString(), isUserNamesVisible, isLearnerRequest, currentSessionId,
-			userId);
-		qaMonitoredAnswersDTO.setQuestionAttempts(questionAttemptData);
-		listMonitoredAnswersContainerDTO.add(qaMonitoredAnswersDTO);
-
-	    }
-	}
-	return listMonitoredAnswersContainerDTO;
-    }
-
-    /**
      * User id is needed if learnerRequest = true, as it is required to work out
      * if the data being analysed is the current user (for not show other names)
      * or to work out which is the user's answers (for not show all answers).
      */
     public static Map buildGroupsAttemptData(HttpServletRequest request, QaContent qaContent, IQaService qaService,
-	    String questionUid, boolean isUserNamesVisible, boolean isLearnerRequest, String currentSessionId,
+	    String questionUid, boolean isUserNamesVisible, boolean isLearnerRequest, String sessionId,
 	    String userId) {
 	List