Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -r4d4a196e9072d82925295b1a57210303fc3e1c9f -r98c136ba3fd78d8f3e0a1016804f1420a5709fad --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 4d4a196e9072d82925295b1a57210303fc3e1c9f) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 98c136ba3fd78d8f3e0a1016804f1420a5709fad) @@ -246,22 +246,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--; }