Index: lams_build/lib/lams/lams-gradebook.jar
===================================================================
RCS file: /usr/local/cvsroot/lams_build/lib/lams/lams-gradebook.jar,v
diff -u -r1.6.2.9 -r1.6.2.10
Binary files differ
Index: lams_build/lib/lams/lams-learning.jar
===================================================================
RCS file: /usr/local/cvsroot/lams_build/lib/lams/lams-learning.jar,v
diff -u -r1.51.2.6 -r1.51.2.7
Binary files differ
Index: lams_gradebook/.classpath
===================================================================
RCS file: /usr/local/cvsroot/lams_gradebook/.classpath,v
diff -u -r1.4.2.5 -r1.4.2.6
--- lams_gradebook/.classpath 25 Nov 2014 10:47:25 -0000 1.4.2.5
+++ lams_gradebook/.classpath 18 Nov 2016 07:49:46 -0000 1.4.2.6
@@ -16,5 +16,6 @@
+
-
+
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_gradebook/.settings/org.eclipse.jdt.ui.prefs'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java
===================================================================
RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java,v
diff -u -r1.36.2.18 -r1.36.2.19
--- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java 5 Jul 2016 11:07:16 -0000 1.36.2.18
+++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java 18 Nov 2016 07:49:46 -0000 1.36.2.19
@@ -88,7 +88,12 @@
import org.lamsfoundation.lams.util.audit.IAuditService;
import org.lamsfoundation.lams.web.session.SessionManager;
import org.lamsfoundation.lams.web.util.AttributeNames;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.context.support.WebApplicationContextUtils;
+import org.lamsfoundation.lams.learning.service.ICoreLearnerService;
+import org.lamsfoundation.lams.learning.web.bean.ActivityURL;
+
/**
*
* This service handles all gradebook-related service calls
@@ -113,6 +118,9 @@
private IActivityDAO activityDAO;
private MessageService messageService;
private IAuditService auditService;
+ private static ICoreLearnerService learnerService;
+
+
@Override
public List getGBActivityRowsForLearner(Long lessonId, Integer userId) {
@@ -123,7 +131,7 @@
List gradebookActivityDTOs = new ArrayList();
- Set activities = getLessonActivities(lesson);
+ List activities = getLessonActivities(lesson);
for (ToolActivity activity : activities) {
String groupName = null;
@@ -185,7 +193,7 @@
Lesson lesson = lessonService.getLesson(lessonId);
List gradebookActivityDTOs = new ArrayList();
- Set activities = getLessonActivities(lesson);
+ List activities = getLessonActivities(lesson);
for (ToolActivity activity : activities) {
@@ -721,17 +729,17 @@
return lessonRows;
}
- private HashMap> getDataForLessonGradebookExport(Lesson lesson) {
+ private Map> getDataForLessonGradebookExport(Lesson lesson) {
- HashMap> activityToUserDTOMap = new HashMap>();
+ Map> activityToUserDTOMap = new LinkedHashMap>();
Set learners = new TreeSet(new UserComparator());
if (lesson.getAllLearners() != null) {
learners.addAll(lesson.getAllLearners());
}
Map userToLearnerProgressMap = getUserToLearnerProgressMap(lesson, null);
- Set activities = getLessonActivities(lesson);
+ List activities = getLessonActivities(lesson);
for (ToolActivity activity : activities) {
@@ -849,7 +857,7 @@
// -------------------- process activity excel page --------------------------------
- HashMap> activityToUserDTOMap = getDataForLessonGradebookExport(lesson);
+ Map> activityToUserDTOMap = getDataForLessonGradebookExport(lesson);
List rowList1 = new LinkedList();
for (Activity activity : activityToUserDTOMap.keySet()) {
@@ -1144,7 +1152,7 @@
// collect users from all lessons
Set allLearners = new LinkedHashSet();
- Map> lessonActivitiesMap = new HashMap>();
+ Map> lessonActivitiesMap = new HashMap>();
List allActivities = new ArrayList();
for (String lessonIdStr : lessonIds) {
@@ -1159,7 +1167,7 @@
allLearners.addAll(lesson.getAllLearners());
- Set lessonActivities = getLessonActivities(lesson);
+ List lessonActivities = getLessonActivities(lesson);
lessonActivitiesMap.put(lesson.getLessonId(), lessonActivities);
allActivities.addAll(lessonActivities);
}
@@ -1191,7 +1199,7 @@
ExcelCell[] lessonsNames = new ExcelCell[numberCellsPerRow];
int i = 4;
for (Lesson lesson : selectedLessons) {
- Set lessonActivities = lessonActivitiesMap.get(lesson.getLessonId());
+ List lessonActivities = lessonActivitiesMap.get(lesson.getLessonId());
int numberActivities = lessonActivities.size();
lessonsNames[i + numberActivities] = new ExcelCell(lesson.getLessonName(), true);
i += 9 + (numberActivities * 2);
@@ -1215,7 +1223,7 @@
headerRow[i++] = new ExcelCell(getMessage("gradebook.columntitle.startDate"), false);
headerRow[i++] = new ExcelCell(getMessage("gradebook.columntitle.completeDate"), false);
- Set activities = lessonActivitiesMap.get(lesson.getLessonId());
+ List activities = lessonActivitiesMap.get(lesson.getLessonId());
for (Activity activity : activities) {
headerRow[i++] = new ExcelCell(activity.getTitle(), true);
headerRow[i++] = new ExcelCell(getMessage("label.max.possible"), false);
@@ -1244,7 +1252,7 @@
Double lessonTotal = 0d;
Double lessonMaxMark = 0d;
- Set activities = lessonActivitiesMap.get(lesson.getLessonId());
+ List activities = lessonActivitiesMap.get(lesson.getLessonId());
//first, last names and login
String lastName = (learner.getLastName() == null) ? "" : learner.getLastName().toUpperCase();
@@ -1355,28 +1363,17 @@
public Activity getActivityById(Long activityID) {
return activityDAO.getActivityByActivityId(activityID);
}
-
+
+
/**
* Returns lesson activities. It works almost the same as lesson.getLearningDesign().getActivities() except it
* solves problem with first activity unable to cast to ToolActivity.
*/
- private Set getLessonActivities(Lesson lesson) {
- Set activities = new TreeSet();
- Set toolActivities = new TreeSet();
-
- /*
- * Hibernate CGLIB is failing to load the first activity in the sequence as a ToolActivity for some mysterious
- * reason Causes a ClassCastException when you try to cast it, even if it is a ToolActivity.
- *
- * THIS IS A HACK to retrieve the first tool activity manually so it can be cast as a ToolActivity - if it is
- * one
- */
- Activity firstActivity = activityDAO
- .getActivityByActivityId(lesson.getLearningDesign().getFirstActivity().getActivityId());
- activities.add(firstActivity);
- activities.addAll(lesson.getLearningDesign().getActivities());
-
- for (Activity activity : activities) {
+ private List getLessonActivities(Lesson lesson) {
+ List toolActivities = new ArrayList();
+ List activityUrls = getLearnerService().getStructuredActivityURLs(lesson.getLessonId());
+ for (ActivityURL activityUrl : activityUrls) {
+ Activity activity = activityDAO.getActivityByActivityId(activityUrl.getActivityId());
if (activity instanceof ToolActivity) {
ToolActivity toolActivity = (ToolActivity) activity;
toolActivities.add(toolActivity);
@@ -1731,6 +1728,16 @@
return map;
}
+
+
+ private ICoreLearnerService getLearnerService() {
+ if (GradebookService.learnerService== null) {
+ WebApplicationContext ctx = WebApplicationContextUtils
+ .getWebApplicationContext(SessionManager.getServletContext());
+ GradebookService.learnerService = (ICoreLearnerService) ctx.getBean("learnerService");
+ }
+ return GradebookService.learnerService;
+ }
@Override
public String getMessage(String key) {
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/ICoreLearnerService.java
===================================================================
RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/service/ICoreLearnerService.java,v
diff -u -r1.18.10.7 -r1.18.10.8
--- lams_learning/src/java/org/lamsfoundation/lams/learning/service/ICoreLearnerService.java 21 Jun 2016 10:25:33 -0000 1.18.10.7
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/ICoreLearnerService.java 18 Nov 2016 07:49:57 -0000 1.18.10.8
@@ -24,8 +24,10 @@
package org.lamsfoundation.lams.learning.service;
+import java.util.List;
import java.util.Set;
+import org.lamsfoundation.lams.learning.web.bean.ActivityURL;
import org.lamsfoundation.lams.learning.web.bean.GateActivityDTO;
import org.lamsfoundation.lams.learningdesign.Activity;
import org.lamsfoundation.lams.learningdesign.BranchingActivity;
@@ -109,6 +111,9 @@
* in case of problems.
*/
Object[] getStructuredActivityURLs(Integer learnerId, Long lessonId);
+
+
+ List getStructuredActivityURLs(Long lessonId);
/**
* Return the current progress data against progress id.
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java
===================================================================
RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java,v
diff -u -r1.112.2.14 -r1.112.2.15
--- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java 9 Sep 2016 07:24:18 -0000 1.112.2.14
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java 18 Nov 2016 07:49:57 -0000 1.112.2.15
@@ -43,6 +43,7 @@
import org.lamsfoundation.lams.learning.progress.ProgressEngine;
import org.lamsfoundation.lams.learning.progress.ProgressException;
import org.lamsfoundation.lams.learning.web.bean.ActivityPositionDTO;
+import org.lamsfoundation.lams.learning.web.bean.ActivityURL;
import org.lamsfoundation.lams.learning.web.bean.GateActivityDTO;
import org.lamsfoundation.lams.learning.web.util.ActivityMapping;
import org.lamsfoundation.lams.learning.web.util.LearningWebUtil;
@@ -415,7 +416,19 @@
return retValue;
}
+
+
+ @Override
+ public List getStructuredActivityURLs(Long lessonId) {
+ Lesson lesson = getLesson(lessonId);
+ User learner = (User) lesson.getAllLearners().iterator().next();
+ LearnerProgress learnerProgress = new LearnerProgress(learner, lesson);
+ ProgressBuilder builder = new ProgressBuilder(learnerProgress, activityDAO, activityMapping);
+ builder.parseLearningDesign();
+ return builder.getActivityList();
+ }
+
/**
* @see org.lamsfoundation.lams.learning.service.ICoreLearnerService#chooseActivity(org.lamsfoundation.lams.usermanagement.User,
* java.lang.Long, org.lamsfoundation.lams.learningdesign.Activity)