Index: lams_build/lib/lams/lams-gradebook.jar
===================================================================
diff -u -rce9f4e0c6d1e5814bf0dcb0fa16ae888a8c854a3 -r72f92afa07d5c5d0e6051081a1d0e1890ce934d5
Binary files differ
Index: lams_build/lib/lams/lams-learning.jar
===================================================================
diff -u -rd19a95db673b7cf90351de4d567299c5fa86b450 -r72f92afa07d5c5d0e6051081a1d0e1890ce934d5
Binary files differ
Index: lams_gradebook/.classpath
===================================================================
diff -u -r0fdf00ad8ffebc0cc6d79de96a216c08ce0d4cdf -r72f92afa07d5c5d0e6051081a1d0e1890ce934d5
--- lams_gradebook/.classpath (.../.classpath) (revision 0fdf00ad8ffebc0cc6d79de96a216c08ce0d4cdf)
+++ lams_gradebook/.classpath (.../.classpath) (revision 72f92afa07d5c5d0e6051081a1d0e1890ce934d5)
@@ -16,5 +16,6 @@
+
-
+
Index: lams_gradebook/.settings/org.eclipse.jdt.ui.prefs
===================================================================
diff -u
--- lams_gradebook/.settings/org.eclipse.jdt.ui.prefs (revision 0)
+++ lams_gradebook/.settings/org.eclipse.jdt.ui.prefs (revision 72f92afa07d5c5d0e6051081a1d0e1890ce934d5)
@@ -0,0 +1,59 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=true
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=true
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=false
+cleanup.organize_imports=true
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=true
+cleanup.qualify_static_method_accesses_with_declaring_class=true
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=false
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup_profile=_LAMS Clean up
+cleanup_settings_version=2
+eclipse.preferences.version=1
Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java
===================================================================
diff -u -r9d26fef875be83090f3f33b0240490aad5fab7be -r72f92afa07d5c5d0e6051081a1d0e1890ce934d5
--- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 9d26fef875be83090f3f33b0240490aad5fab7be)
+++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 72f92afa07d5c5d0e6051081a1d0e1890ce934d5)
@@ -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
===================================================================
diff -u -r14c33274b785517e5e3f6a7642dc7c6752a34411 -r72f92afa07d5c5d0e6051081a1d0e1890ce934d5
--- lams_learning/src/java/org/lamsfoundation/lams/learning/service/ICoreLearnerService.java (.../ICoreLearnerService.java) (revision 14c33274b785517e5e3f6a7642dc7c6752a34411)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/ICoreLearnerService.java (.../ICoreLearnerService.java) (revision 72f92afa07d5c5d0e6051081a1d0e1890ce934d5)
@@ -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
===================================================================
diff -u -r654c98e30631f9b0cb5bd4ebab7d82b2cfb8e384 -r72f92afa07d5c5d0e6051081a1d0e1890ce934d5
--- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 654c98e30631f9b0cb5bd4ebab7d82b2cfb8e384)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 72f92afa07d5c5d0e6051081a1d0e1890ce934d5)
@@ -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)