Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -r0f2a9541ca3ef58a59337f32a5c375ae457c399c -r5f4e5e536b23752765fb77b84b81f5a4eb527c0d --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 0f2a9541ca3ef58a59337f32a5c375ae457c399c) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 5f4e5e536b23752765fb77b84b81f5a4eb527c0d) @@ -250,22 +250,26 @@ Date archiveDate = lessonArchive.getArchiveDate(); GBActivityArchiveGridRowDTO activityDTO = new GBActivityArchiveGridRowDTO(attemptOrder, lessonArchive.getMark()); - for (GradebookUserActivityArchive activityArchive : activityArchives) { - if (archiveDate.equals(activityArchive.getArchiveDate())) { - activityDTO.setMark(activityArchive.getMark()); - activityDTO.setFeedback(activityArchive.getFeedback()); + LearnerProgressArchive learnerProgress = learnerProgressDAO.getLearnerProgressArchive(lesson.getLessonId(), + userId, lessonArchive.getArchiveDate()); - LearnerProgressArchive learnerProgress = learnerProgressDAO - .getLearnerProgressArchive(lesson.getLessonId(), userId, lessonArchive.getArchiveDate()); - // Setting status - activityDTO.setStartDate(getActivityStartDate(learnerProgress, activity, userTimezone)); - activityDTO.setFinishDate(getActivityFinishDate(learnerProgress, activity, userTimezone)); - activityDTO.setTimeTaken(getActivityDuration(learnerProgress, activity)); - activityDTO.setStatus(getActivityStatusStr(learnerProgress, activity)); + if (learnerProgress != null) { + // Setting status + activityDTO.setStartDate(getActivityStartDate(learnerProgress, activity, userTimezone)); + activityDTO.setFinishDate(getActivityFinishDate(learnerProgress, activity, userTimezone)); + activityDTO.setTimeTaken(getActivityDuration(learnerProgress, activity)); + activityDTO.setStatus(getActivityStatusStr(learnerProgress, activity)); - break; + for (GradebookUserActivityArchive activityArchive : activityArchives) { + // if it matches, we found an archived mark for this activity and this attempt + if (archiveDate.equals(activityArchive.getArchiveDate())) { + activityDTO.setMark(activityArchive.getMark()); + activityDTO.setFeedback(activityArchive.getFeedback()); + break; + } } } + gradebookActivityDTOs.add(activityDTO); attemptOrder--; }