Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -r0e9f030eec7267be9ed89fa9241228f6a453c6b4 -radcff5b7745666d4da97e5fbb3ded3c75ad4db6e --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 0e9f030eec7267be9ed89fa9241228f6a453c6b4) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision adcff5b7745666d4da97e5fbb3ded3c75ad4db6e) @@ -108,6 +108,10 @@ private static Logger logger = Logger.getLogger(GradebookService.class); private static final ExcelCell[] EMPTY_ROW = new ExcelCell[4]; + + private static final String TOOL_SIGNATURE_ASSESSMENT = "laasse10"; + public static final String TOOL_SIGNATURE_SCRATCHIE = "lascrt11"; + public static final String TOOL_SIGNATURE_MCQ = "lamc11"; // Services private ILamsCoreToolService toolService; @@ -954,13 +958,73 @@ userDataRow[5] = new ExcelCell(userRow.getMark(), false); rowList.add(userDataRow); } + rowList.add(GradebookService.EMPTY_ROW); + // -- Summary for activity marks (simplified) --- + + Map> activityToUserDTOMap = getDataForLessonGradebookExport(lesson); + //filter out all activities that doesn't have numeric outputs + Map> filteredActivityToUserDTOMap = new LinkedHashMap>(); + for (ToolActivity activity : activityToUserDTOMap.keySet()) { + String toolSignature = activity.getTool().getToolSignature(); + //check whether toolActivity has a NumericToolOutput + if (!activity.getActivityEvaluations().isEmpty() && (TOOL_SIGNATURE_ASSESSMENT.equals(toolSignature) + || TOOL_SIGNATURE_MCQ.equals(toolSignature) || TOOL_SIGNATURE_SCRATCHIE.equals(toolSignature))) { + filteredActivityToUserDTOMap.put(activity, activityToUserDTOMap.get(activity)); + } + } + + //add header + ExcelCell[] headerRow = new ExcelCell[1]; + headerRow[0] = new ExcelCell(getMessage("gradebook.summary.activity.marks"), true); + rowList.add(headerRow); + headerRow = new ExcelCell[3 + filteredActivityToUserDTOMap.keySet().size()]; + int count = 3; + for (Activity activity : filteredActivityToUserDTOMap.keySet()) { + headerRow[count++] = new ExcelCell(activity.getTitle(), true); + } + rowList.add(headerRow); + headerRow = new ExcelCell[4 + filteredActivityToUserDTOMap.keySet().size()]; + count = 0; + headerRow[count++] = new ExcelCell(getMessage("gradebook.export.last.name"), true); + headerRow[count++] = new ExcelCell(getMessage("gradebook.export.first.name"), true); + headerRow[count++] = new ExcelCell(getMessage("gradebook.export.login"), true); + for (Activity activity : filteredActivityToUserDTOMap.keySet()) { + headerRow[count++] = new ExcelCell(getMessage("gradebook.columntitle.mark"), true); + } + headerRow[count] = new ExcelCell(getMessage("gradebook.export.total.mark"), true); + rowList.add(headerRow); + + //iterating through all users in a lesson + for (GBUserGridRowDTO userRow : userRows) { + ExcelCell[] userDataRow = new ExcelCell[4 + filteredActivityToUserDTOMap.keySet().size()]; + count = 0; + userDataRow[count++] = new ExcelCell(userRow.getLastName(), false); + userDataRow[count++] = new ExcelCell(userRow.getFirstName(), false); + userDataRow[count++] = new ExcelCell(userRow.getLogin(), false); + + for (Activity activity : filteredActivityToUserDTOMap.keySet()) { + + //find according userActivityMark + Double userActivityMark = null; + List userDtos = filteredActivityToUserDTOMap.get(activity); + for (GBUserGridRowDTO userDto : userDtos) { + if (userDto.getLogin().equals(userRow.getLogin())) { + userActivityMark = userDto.getMark(); + break; + } + } + userDataRow[count++] = new ExcelCell(userActivityMark, false); + } + + userDataRow[count] = new ExcelCell(userRow.getMark(), false); + rowList.add(userDataRow); + } + ExcelCell[][] summaryData = rowList.toArray(new ExcelCell[][] {}); dataToExport.put(getMessage("gradebook.export.lesson.summary"), summaryData); // -------------------- process activity excel page -------------------------------- - - Map> activityToUserDTOMap = getDataForLessonGradebookExport(lesson); List rowList1 = new LinkedList(); for (Activity activity : activityToUserDTOMap.keySet()) { @@ -969,7 +1033,7 @@ activityTitleRow[0] = new ExcelCell(activity.getTitle(), true); rowList1.add(activityTitleRow); - int count = 0; + count = 0; ExcelCell[] titleRow = new ExcelCell[7]; titleRow[count++] = new ExcelCell(getMessage("gradebook.export.last.name"), true); titleRow[count++] = new ExcelCell(getMessage("gradebook.export.first.name"), true); @@ -1006,59 +1070,7 @@ ExcelCell[][] activityData = rowList1.toArray(new ExcelCell[][] {}); dataToExport.put(getMessage("gradebook.gridtitle.activitygrid"), activityData); - - // -------------------- process activity excel page (simplified) -------------------------------- - - rowList = new LinkedList(); - - //add header - ExcelCell[] simplifiedTitleRow = new ExcelCell[3 + activityToUserDTOMap.keySet().size()]; - int count = 3; - for (Activity activity : activityToUserDTOMap.keySet()) { - simplifiedTitleRow[count++] = new ExcelCell(activity.getTitle(), true); - } - rowList.add(simplifiedTitleRow); - simplifiedTitleRow = new ExcelCell[4 + activityToUserDTOMap.keySet().size()]; - count = 0; - simplifiedTitleRow[count++] = new ExcelCell(getMessage("gradebook.export.last.name"), true); - simplifiedTitleRow[count++] = new ExcelCell(getMessage("gradebook.export.first.name"), true); - simplifiedTitleRow[count++] = new ExcelCell(getMessage("gradebook.export.login"), true); - for (Activity activity : activityToUserDTOMap.keySet()) { - simplifiedTitleRow[count++] = new ExcelCell(getMessage("gradebook.columntitle.mark"), true); - } - simplifiedTitleRow[count] = new ExcelCell(getMessage("gradebook.export.total.mark"), true); - rowList.add(simplifiedTitleRow); - - //iterating through all users in a lesson - for (GBUserGridRowDTO userRow : userRows) { - ExcelCell[] userDataRow = new ExcelCell[4 + activityToUserDTOMap.keySet().size()]; - count = 0; - userDataRow[count++] = new ExcelCell(userRow.getLastName(), false); - userDataRow[count++] = new ExcelCell(userRow.getFirstName(), false); - userDataRow[count++] = new ExcelCell(userRow.getLogin(), false); - - for (Activity activity : activityToUserDTOMap.keySet()) { - - //find according userActivityMark - Double userActivityMark = null; - List userDtos = activityToUserDTOMap.get(activity); - for (GBUserGridRowDTO userDto : userDtos) { - if (userDto.getLogin().equals(userRow.getLogin())) { - userActivityMark = userDto.getMark(); - break; - } - } - userDataRow[count++] = new ExcelCell(userActivityMark, false); - } - - userDataRow[count] = new ExcelCell(userRow.getMark(), false); - rowList.add(userDataRow); - } - - ExcelCell[][] activitySimplifiedData = rowList.toArray(new ExcelCell[][] {}); - dataToExport.put(getMessage("gradebook.gridtitle.activitygrid") + " (simplified)", activitySimplifiedData); - // -------------------- process Learner View page -------------------------------- Set learners = new TreeSet(new UserComparator());