Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml,v diff -u -r1.3 -r1.4 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml 1 Jul 2009 02:46:53 -0000 1.3 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml 6 Sep 2012 16:03:19 -0000 1.4 @@ -28,6 +28,7 @@ PROPAGATION_REQUIRED PROPAGATION_REQUIRED,readOnly + PROPAGATION_REQUIRED,readOnly 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.25 -r1.26 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java 6 Sep 2012 10:19:19 -0000 1.25 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java 6 Sep 2012 16:03:19 -0000 1.26 @@ -30,6 +30,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; @@ -494,7 +495,7 @@ return lessonRows; } - public HashMap> getDataForExcelLessonGradebook(Lesson lesson) { + private HashMap> getDataForLessonGradebookExport(Lesson lesson) { HashMap> activityToUserDTOMap = new HashMap>(); @@ -551,7 +552,6 @@ if (gradebookUserActivity != null) { userDTO.setFeedback(gradebookUserActivity.getFeedback()); userDTO.setMark(gradebookUserActivity.getMark()); - } userDTOs.add(userDTO); } @@ -560,62 +560,139 @@ return activityToUserDTOMap; } + - @SuppressWarnings("unchecked") - public ExcelCell[][] getActivityViewDataForExcel(HashMap> activityToUserDTOMap) { - ExcelCell[][] data = null; - + @SuppressWarnings("unchecked") + public LinkedHashMap exportLessonGradebook(Lesson lesson) { + + LinkedHashMap dataToExport = new LinkedHashMap(); + + //-------------------- process summary excel page -------------------------------- + + // The entire data list List rowList = new LinkedList(); + // Adding the lesson average data to the summary + ExcelCell[] lessonAverageMark = new ExcelCell[2]; + lessonAverageMark[0] = new ExcelCell(getMessage("gradebook.export.average.lesson.mark"), true); + lessonAverageMark[1] = new ExcelCell(getAverageMarkForLesson(lesson.getLessonId()), false); + rowList.add(lessonAverageMark); + + ExcelCell[] lessonAverageTimeTaken = new ExcelCell[2]; + lessonAverageTimeTaken[0] = new ExcelCell(getMessage("gradebook.export.average.lesson.time.taken"), true); + lessonAverageTimeTaken[1] = new ExcelCell(gradebookDAO.getAverageDurationLesson(lesson.getLessonId()) / 1000, + false); + rowList.add(lessonAverageTimeTaken); + rowList.add(EMPTY_ROW); + + // Adding the activity average data to the summary + List activityRows = getGBActivityRowsForLesson(lesson); + ExcelCell[] activityAverageTitle = new ExcelCell[1]; + activityAverageTitle[0] = new ExcelCell(getMessage("gradebook.export.activities"), true); + rowList.add(activityAverageTitle); + + // Setting up the activity summary table + ExcelCell[] activityAverageRow = new ExcelCell[4]; + activityAverageRow[0] = new ExcelCell(getMessage("gradebook.export.activity"), true); + activityAverageRow[1] = new ExcelCell(getMessage("gradebook.columntitle.competences"), true); + activityAverageRow[2] = new ExcelCell(getMessage("gradebook.export.average.time.taken.seconds"), true); + activityAverageRow[3] = new ExcelCell(getMessage("gradebook.columntitle.averageMark"), true); + rowList.add(activityAverageRow); + + Iterator it = activityRows.iterator(); + while (it.hasNext()) { + GBActivityGridRowDTO activityRow = (GBActivityGridRowDTO) it.next(); + // Add the activity average data + ExcelCell[] activityDataRow = new ExcelCell[4]; + activityDataRow[0] = new ExcelCell(activityRow.getRowName(), false); + activityDataRow[1] = new ExcelCell(activityRow.getCompetences(), false); + activityDataRow[2] = new ExcelCell(activityRow.getAverageTimeTakenSeconds(), false); + activityDataRow[3] = new ExcelCell(activityRow.getAverageMark(), false); + rowList.add(activityDataRow); + } + rowList.add(EMPTY_ROW); + + // Adding the user lesson marks to the summary + ExcelCell[] userMarksTitle = new ExcelCell[1]; + userMarksTitle[0] = new ExcelCell(getMessage("gradebook.export.total.marks.for.lesson"), true); + rowList.add(userMarksTitle); + + // Fetching the user data + ArrayList userRows = getGBUserRowsForLesson(lesson); + + // Setting up the user marks table + ExcelCell[] userTitleRow = new ExcelCell[5]; + userTitleRow[0] = new ExcelCell(getMessage("gradebook.export.last.name"), true); + userTitleRow[1] = new ExcelCell(getMessage("gradebook.export.first.name"), true); + userTitleRow[2] = new ExcelCell(getMessage("gradebook.exportcourse.progress"), true); + userTitleRow[3] = new ExcelCell(getMessage("gradebook.export.time.taken.seconds"), true); + userTitleRow[4] = new ExcelCell(getMessage("gradebook.export.total.mark"), true); + rowList.add(userTitleRow); + + for (GBUserGridRowDTO userRow : userRows) { + // Adding the user data for the lesson + ExcelCell[] userDataRow = new ExcelCell[5]; + userDataRow[0] = new ExcelCell(userRow.getLastName(), false); + userDataRow[1] = new ExcelCell(userRow.getFirstName(), false); + userDataRow[2] = new ExcelCell(getProgressMessage(userRow), false); + userDataRow[3] = new ExcelCell(userRow.getTimeTakenSeconds(), false); + userDataRow[4] = 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 -------------------------------- + + HashMap> activityToUserDTOMap = getDataForLessonGradebookExport(lesson); + List rowList1 = new LinkedList(); + for (Activity activity : activityToUserDTOMap.keySet()) { ExcelCell[] activityTitleRow = new ExcelCell[5]; activityTitleRow[0] = new ExcelCell(activity.getTitle(), true); - rowList.add(activityTitleRow); + rowList1.add(activityTitleRow); ExcelCell[] titleRow = new ExcelCell[5]; titleRow[0] = new ExcelCell(getMessage("gradebook.export.last.name"), true); titleRow[1] = new ExcelCell(getMessage("gradebook.export.first.name"), true); titleRow[2] = new ExcelCell(getMessage("gradebook.export.time.taken.seconds"), true); titleRow[3] = new ExcelCell(getMessage("gradebook.export.outputs"), true); titleRow[4] = new ExcelCell(getMessage("gradebook.columntitle.mark"), true); - rowList.add(titleRow); + rowList1.add(titleRow); // Get the rest of the data - List userRows = activityToUserDTOMap.get(activity); - for (GBUserGridRowDTO userRow : userRows) { + List userRows2 = activityToUserDTOMap.get(activity); + for (GBUserGridRowDTO userRow : userRows2) { ExcelCell[] userDataRow = new ExcelCell[5]; userDataRow[0] = new ExcelCell(userRow.getLastName(), false); userDataRow[1] = new ExcelCell(userRow.getFirstName(), false); userDataRow[2] = new ExcelCell(userRow.getTimeTakenSeconds(), false); userDataRow[3] = new ExcelCell(userRow.getOutput(), false); userDataRow[4] = new ExcelCell(userRow.getMark(), false); - rowList.add(userDataRow); + rowList1.add(userDataRow); } - rowList.add(EMPTY_ROW); + rowList1.add(EMPTY_ROW); } - data = rowList.toArray(new ExcelCell[][] {}); + ExcelCell[][] activityData = rowList1.toArray(new ExcelCell[][] {}); + dataToExport.put(getMessage("gradebook.gridtitle.activitygrid"), activityData); - return data; - } - - @SuppressWarnings("unchecked") - public ExcelCell[][] getUserViewDataForExcel(HashMap> activityToUserDTOMap, Lesson lesson) { + //-------------------- process user excel page -------------------------------- + Set learners = lesson.getAllLearners(); if (learners == null) { learners = new TreeSet(); } - ExcelCell[][] data = null; - List rowList = new LinkedList(); + LinkedList rowList2 = new LinkedList(); for (User learner : learners) { List activityDTOs = new ArrayList(); for (ToolActivity activity : activityToUserDTOMap.keySet()) { - List userDTOs = activityToUserDTOMap.get(activity); GBUserGridRowDTO userDTO = null; for (GBUserGridRowDTO dbUserDTO:userDTOs) { @@ -648,121 +725,42 @@ ExcelCell[] activityTitleRow = new ExcelCell[4]; activityTitleRow[0] = new ExcelCell(learner.getFullName(), true); - rowList.add(activityTitleRow); + rowList2.add(activityTitleRow); ExcelCell[] titleRow = new ExcelCell[4]; titleRow[0] = new ExcelCell(getMessage("gradebook.export.activity"), true); titleRow[1] = new ExcelCell(getMessage("gradebook.export.time.taken.seconds"), true); titleRow[2] = new ExcelCell(getMessage("gradebook.export.outputs"), true); titleRow[3] = new ExcelCell(getMessage("gradebook.columntitle.mark"), true); - rowList.add(titleRow); + rowList2.add(titleRow); for (GBActivityGridRowDTO activityRow : activityDTOs) { ExcelCell[] activityDataRow = new ExcelCell[4]; activityDataRow[0] = new ExcelCell(activityRow.getRowName(), false); activityDataRow[1] = new ExcelCell(activityRow.getTimeTakenSeconds(), false); activityDataRow[2] = new ExcelCell(activityRow.getOutput(), false); activityDataRow[3] = new ExcelCell(activityRow.getMark(), false); - rowList.add(activityDataRow); + rowList2.add(activityDataRow); } - rowList.add(EMPTY_ROW); + rowList2.add(EMPTY_ROW); } - data = rowList.toArray(new ExcelCell[][] {}); - return data; + ExcelCell[][] userData = rowList2.toArray(new ExcelCell[][] {}); + dataToExport.put(getMessage("gradebook.export.learner.view"), userData); + + return dataToExport; } - - @SuppressWarnings("unchecked") - public ExcelCell[][] getSummaryDataForExcel(Lesson lesson) { - ExcelCell[][] data = null; - if (lesson != null) { - - // The entire data list - List rowList = new LinkedList(); - - // Adding the lesson average data to the summary ------------------- - ExcelCell[] lessonAverageMark = new ExcelCell[2]; - lessonAverageMark[0] = new ExcelCell(getMessage("gradebook.export.average.lesson.mark"), true); - lessonAverageMark[1] = new ExcelCell(getAverageMarkForLesson(lesson.getLessonId()), false); - rowList.add(lessonAverageMark); - - ExcelCell[] lessonAverageTimeTaken = new ExcelCell[2]; - lessonAverageTimeTaken[0] = new ExcelCell(getMessage("gradebook.export.average.lesson.time.taken"), true); - lessonAverageTimeTaken[1] = new ExcelCell(gradebookDAO.getAverageDurationLesson(lesson.getLessonId())/1000, false); - rowList.add(lessonAverageTimeTaken); - rowList.add(EMPTY_ROW); - // ------------------------------------------------------------------ - - // Adding the activity average data to the summary ----------------- - List activityRows = getGBActivityRowsForLesson(lesson); - ExcelCell[] activityAverageTitle = new ExcelCell[1]; - activityAverageTitle[0] = new ExcelCell(getMessage("gradebook.export.activities"), true); - rowList.add(activityAverageTitle); - - // Setting up the activity summary table - ExcelCell[] activityAverageRow = new ExcelCell[4]; - activityAverageRow[0] = new ExcelCell(getMessage("gradebook.export.activity"), true); - activityAverageRow[1] = new ExcelCell(getMessage("gradebook.columntitle.competences"), true); - activityAverageRow[2] = new ExcelCell(getMessage("gradebook.export.average.time.taken.seconds"), true); - activityAverageRow[3] = new ExcelCell(getMessage("gradebook.columntitle.averageMark"), true); - rowList.add(activityAverageRow); - - Iterator it = activityRows.iterator(); - while (it.hasNext()) { - GBActivityGridRowDTO activityRow = (GBActivityGridRowDTO) it.next(); - // Add the activity average data - ExcelCell[] activityDataRow = new ExcelCell[4]; - activityDataRow[0] = new ExcelCell(activityRow.getRowName(), false); - activityDataRow[1] = new ExcelCell(activityRow.getCompetences(), false); - activityDataRow[2] = new ExcelCell(activityRow.getAverageTimeTakenSeconds(), false); - activityDataRow[3] = new ExcelCell(activityRow.getAverageMark(), false); - rowList.add(activityDataRow); - } - rowList.add(EMPTY_ROW); - // ------------------------------------------------------------------ - - // Adding the user lesson marks to the summary---------------------- - ExcelCell[] userMarksTitle = new ExcelCell[1]; - userMarksTitle[0] = new ExcelCell(getMessage("gradebook.export.total.marks.for.lesson"), true); - rowList.add(userMarksTitle); - - // Fetching the user data - ArrayList userRows = getGBUserRowsForLesson(lesson); - - // Setting up the user marks table - ExcelCell[] userTitleRow = new ExcelCell[5]; - userTitleRow[0] = new ExcelCell(getMessage("gradebook.export.last.name"), true); - userTitleRow[1] = new ExcelCell(getMessage("gradebook.export.first.name"), true); - userTitleRow[2] = new ExcelCell(getMessage("gradebook.exportcourse.progress"), true); - userTitleRow[3] = new ExcelCell(getMessage("gradebook.export.time.taken.seconds"), true); - userTitleRow[4] = new ExcelCell(getMessage("gradebook.export.total.mark"), true); - rowList.add(userTitleRow); - - for (GBUserGridRowDTO userRow : userRows) { - // Adding the user data for the lesson - ExcelCell[] userDataRow = new ExcelCell[5]; - userDataRow[0] = new ExcelCell(userRow.getLastName(), false); - userDataRow[1] = new ExcelCell(userRow.getFirstName(), false); - userDataRow[2] = new ExcelCell(getProgressMessage(userRow), false); - userDataRow[3] = new ExcelCell(userRow.getTimeTakenSeconds(), false); - userDataRow[4] = new ExcelCell(userRow.getMark(), false); - rowList.add(userDataRow); - } - // ------------------------------------------------------------------ - - data = rowList.toArray(new ExcelCell[][] {}); - - } - return data; - } @SuppressWarnings("unchecked") - public ExcelCell[][] getCourseDataForExcel(Integer userId, Integer organisationId) { + public LinkedHashMap exportCourseGradebook(Integer userId, Integer organisationId) { + LinkedHashMap dataToExport = new LinkedHashMap(); + Organisation organisation = (Organisation) baseDAO.find(Organisation.class, organisationId); // The entire data list List rowList = new LinkedList(); + User user = (User) getUserService().findById(User.class, userId); Set lessonsFromDB = new TreeSet(new LessonComparator()); @@ -781,65 +779,66 @@ lessons.add(lesson); } - if (lessons == null || (lessons.size() == 0)) { - return rowList.toArray(new ExcelCell[][] {}); - } - - //collect users from all lessons - Set allLearners = new LinkedHashSet(); - for (Lesson lesson : lessons) { - Set dbLessonUsers = lesson.getAllLearners(); - allLearners.addAll(dbLessonUsers); - } - - int numberOfCellsInARow = 2 + lessons.size()*4; - - // Adding the user lesson marks to the summary---------------------- - ExcelCell[] lessonsNames = new ExcelCell[numberOfCellsInARow]; - int i = 0; - lessonsNames[i++] = new ExcelCell("", false); - lessonsNames[i++] = new ExcelCell("", false); - for (Lesson lesson : lessons) { - lessonsNames[i++] = new ExcelCell(messageService.getMessage("gradebook.exportcourse.lesson", - new Object[] { lesson.getLessonName() }), true); + if (lessons != null && (lessons.size() > 0)) { + + // collect users from all lessons + Set allLearners = new LinkedHashSet(); + for (Lesson lesson : lessons) { + Set dbLessonUsers = lesson.getAllLearners(); + allLearners.addAll(dbLessonUsers); + } + + int numberOfCellsInARow = 2 + lessons.size() * 4; + + // Adding the user lesson marks to the summary---------------------- + ExcelCell[] lessonsNames = new ExcelCell[numberOfCellsInARow]; + int i = 0; lessonsNames[i++] = new ExcelCell("", false); lessonsNames[i++] = new ExcelCell("", false); - lessonsNames[i++] = new ExcelCell("", false); - } - rowList.add(lessonsNames); - - // Setting up the user marks table - ExcelCell[] headerRow = new ExcelCell[numberOfCellsInARow]; - i = 0; - headerRow[i++] = new ExcelCell(getMessage("gradebook.export.last.name"), true); - headerRow[i++] = new ExcelCell(getMessage("gradebook.export.first.name"), true); - for (Lesson lesson : lessons) { - headerRow[i++] = new ExcelCell(getMessage("gradebook.exportcourse.progress"), true); - headerRow[i++] = new ExcelCell(getMessage("gradebook.export.time.taken.seconds"), true); - headerRow[i++] = new ExcelCell(getMessage("gradebook.exportcourse.lessonFeedback"), true); - headerRow[i++] = new ExcelCell(getMessage("gradebook.export.total.mark"), true); - } - rowList.add(headerRow); - - for (User learner : allLearners) { - // Fetching the user data - List userRows = getGBUserRowsForUser(learner, lessons, organisationId); + for (Lesson lesson : lessons) { + lessonsNames[i++] = new ExcelCell(messageService.getMessage("gradebook.exportcourse.lesson", + new Object[] { lesson.getLessonName() }), true); + lessonsNames[i++] = new ExcelCell("", false); + lessonsNames[i++] = new ExcelCell("", false); + lessonsNames[i++] = new ExcelCell("", false); + } + rowList.add(lessonsNames); + + // Setting up the user marks table + ExcelCell[] headerRow = new ExcelCell[numberOfCellsInARow]; i = 0; - ExcelCell[] userDataRow = new ExcelCell[numberOfCellsInARow]; - userDataRow[i++] = new ExcelCell(learner.getLastName(), false); - userDataRow[i++] = new ExcelCell(learner.getFirstName(), false); - - for (GBUserGridRowDTO userRow : userRows) { - userDataRow[i++] = new ExcelCell(getProgressMessage(userRow), false); - userDataRow[i++] = new ExcelCell(userRow.getTimeTakenSeconds(), false); - userDataRow[i++] = new ExcelCell(userRow.getFeedback(), false); - userDataRow[i++] = new ExcelCell(userRow.getMark(), false); + headerRow[i++] = new ExcelCell(getMessage("gradebook.export.last.name"), true); + headerRow[i++] = new ExcelCell(getMessage("gradebook.export.first.name"), true); + for (Lesson lesson : lessons) { + headerRow[i++] = new ExcelCell(getMessage("gradebook.exportcourse.progress"), true); + headerRow[i++] = new ExcelCell(getMessage("gradebook.export.time.taken.seconds"), true); + headerRow[i++] = new ExcelCell(getMessage("gradebook.exportcourse.lessonFeedback"), true); + headerRow[i++] = new ExcelCell(getMessage("gradebook.export.total.mark"), true); } + rowList.add(headerRow); - rowList.add(userDataRow); + for (User learner : allLearners) { + // Fetching the user data + List userRows = getGBUserRowsForUser(learner, lessons, organisationId); + i = 0; + ExcelCell[] userDataRow = new ExcelCell[numberOfCellsInARow]; + userDataRow[i++] = new ExcelCell(learner.getLastName(), false); + userDataRow[i++] = new ExcelCell(learner.getFirstName(), false); + + for (GBUserGridRowDTO userRow : userRows) { + userDataRow[i++] = new ExcelCell(getProgressMessage(userRow), false); + userDataRow[i++] = new ExcelCell(userRow.getTimeTakenSeconds(), false); + userDataRow[i++] = new ExcelCell(userRow.getFeedback(), false); + userDataRow[i++] = new ExcelCell(userRow.getMark(), false); + } + + rowList.add(userDataRow); + } } - return rowList.toArray(new ExcelCell[][] {}); + ExcelCell[][] summaryData = rowList.toArray(new ExcelCell[][] {}); + dataToExport.put(getMessage("gradebook.exportcourse.course.summary"), summaryData); + return dataToExport; } public void updateActivityMark(Double mark, String feedback, Integer userID, Long toolSessionID, @@ -1263,12 +1262,9 @@ List gradebookUserActivityList = baseDAO.find(query, new Object[] { activity.getActivityId() }); if (gradebookUserActivityList != null && gradebookUserActivityList.size() > 0) { - MultiKeyMap aa = new MultiKeyMap(); - Map map = new HashMap(); for (GradebookUserActivity gradebookUserActivity : gradebookUserActivityList) { map.put(gradebookUserActivity.getLearner().getUserId(), gradebookUserActivity); - aa.put(gradebookUserActivity.getLearner().getUserId(), gradebookUserActivity.getLearner().getUserId(), gradebookUserActivity); } return map; } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java,v diff -u -r1.6 -r1.7 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java 6 Sep 2012 10:19:19 -0000 1.6 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java 6 Sep 2012 16:03:19 -0000 1.7 @@ -25,6 +25,7 @@ import java.util.ArrayList; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import org.lamsfoundation.lams.gradebook.GradebookUserActivity; @@ -41,17 +42,15 @@ import org.lamsfoundation.lams.usermanagement.User; public interface IGradebookService { - - /** * Gets all the activity rows for a lesson, with the mark for each activity * being the average for all users in the lesson * * @param lesson * @return */ - public List getGBActivityRowsForLesson(Lesson lesson); + List getGBActivityRowsForLesson(Lesson lesson); /** * Gets all the activity rows for a user, with the mark for the activity @@ -61,7 +60,7 @@ * @param learner * @return */ - public List getGBActivityRowsForLearner(Lesson lesson, User learner); + List getGBActivityRowsForLearner(Lesson lesson, User learner); /** * Gets the GBActivityDTO list for an activity, which provides the marks @@ -72,15 +71,15 @@ * @param groupId * @return */ - public List getGBUserRowsForActivity(Lesson lesson, ToolActivity activity, Long groupId); + List getGBUserRowsForActivity(Lesson lesson, ToolActivity activity, Long groupId); /** * Gets the user rows and the user's entire lesson mark for all users * in a lesson * @param lesson * @return */ - public List getGBUserRowsForLesson(Lesson lesson); + List getGBUserRowsForLesson(Lesson lesson); /** * Gets the user rows for specified organisation @@ -98,7 +97,7 @@ * @param learner * @param mark */ - public void updateUserLessonGradebookMark(Lesson lesson, User learner, Double mark); + void updateUserLessonGradebookMark(Lesson lesson, User learner, Double mark); /** * Updates a user's activity mark, this will automatically add up all the @@ -109,7 +108,7 @@ * @param activity * @param mark */ - public void updateUserActivityGradebookMark(Lesson lesson, User learner, Activity activity, Double mark, Boolean markedInGradebook); + void updateUserActivityGradebookMark(Lesson lesson, User learner, Activity activity, Double mark, Boolean markedInGradebook); /** * Updates the user's feedback for an activity @@ -118,7 +117,7 @@ * @param learner * @param feedback */ - public void updateUserActivityGradebookFeedback(Activity activity, User learner, String feedback); + void updateUserActivityGradebookFeedback(Activity activity, User learner, String feedback); /** * Updates the user's feedback for a lesson @@ -127,7 +126,7 @@ * @param learner * @param feedback */ - public void updateUserLessonGradebookFeedback(Lesson lesson, User learner, String feedback); + void updateUserLessonGradebookFeedback(Lesson lesson, User learner, String feedback); /** * Gets the lesson row dtos for a given organisation @@ -138,7 +137,7 @@ * @param view * @return */ - public List getGBLessonRows(Organisation organisation, User user, User viewer, GBGridView view); + List getGBLessonRows(Organisation organisation, User user, User viewer, GBGridView view); /** * Gets a gradebook lesson mark/feedback for a given user and lesson @@ -147,7 +146,7 @@ * @param userID * @return */ - public GradebookUserLesson getGradebookUserLesson(Long lessonID, Integer userID); + GradebookUserLesson getGradebookUserLesson(Long lessonID, Integer userID); /** * Gets a gradebook activity mark/feedback for a given activity and user @@ -156,23 +155,23 @@ * @param userID * @return */ - public GradebookUserActivity getGradebookUserActivity(Long activityID, Integer userID); + GradebookUserActivity getGradebookUserActivity(Long activityID, Integer userID); /** * Returns the average mark for a given activity * * @param activityID * @return */ - public Double getAverageMarkForActivity(Long activityID); + Double getAverageMarkForActivity(Long activityID); /** * Returns the average mark for a lesson * * @param lessonID * @return */ - public Double getAverageMarkForLesson(Long lessonID); + Double getAverageMarkForLesson(Long lessonID); /** * Method for updating an activity mark that tools can call @@ -182,43 +181,29 @@ * @param userID * @param toolSessionID */ - public void updateActivityMark(Double mark, String feedback, Integer userID, Long toolSessionID, Boolean markedInGradebook); + void updateActivityMark(Double mark, String feedback, Integer userID, Long toolSessionID, Boolean markedInGradebook); /** * Get an activity from the db by id * * @param activityID * @return */ - public Activity getActivityById(Long activityID); + Activity getActivityById(Long activityID); /** * Get a language label * @param key * @return */ - public String getMessage(String key); + String getMessage(String key); /** - * Get the activity view data in 2d array format for an excel export - * @param lesson - * @return - */ - public ExcelCell[][] getActivityViewDataForExcel(HashMap> activityToUserDTOMap); - - /** - * Get the user view data in a 2d array format for an excel export - * @param lesson - * @return - */ - public ExcelCell[][] getUserViewDataForExcel(HashMap> activityToUserDTOMap, Lesson lesson); - - /** * Get the summary data in a 2s array for an excel export * @param lesson * @return */ - public ExcelCell[][] getSummaryDataForExcel(Lesson lesson); + LinkedHashMap exportLessonGradebook(Lesson lesson); /** * Get the summary data for course for an excel export @@ -227,8 +212,6 @@ * @param organisationId * @return */ - ExcelCell[][] getCourseDataForExcel(Integer userId, Integer organisationId); - - HashMap> getDataForExcelLessonGradebook(Lesson lesson); + LinkedHashMap exportCourseGradebook(Integer userId, Integer organisationId); } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java,v diff -u -r1.11 -r1.12 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java 6 Sep 2012 10:19:19 -0000 1.11 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookMonitoringAction.java 6 Sep 2012 16:03:19 -0000 1.12 @@ -294,46 +294,44 @@ return null; } - /** - * Exports Lesson Gradebook into excel. - */ - public ActionForward exportExcelLessonGradebook(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) throws Exception { + /** + * Exports Lesson Gradebook into excel. + */ + public ActionForward exportExcelLessonGradebook(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { - initServices(); + initServices(); - Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); - Lesson lesson = lessonService.getLesson(lessonID); + Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); + Lesson lesson = lessonService.getLesson(lessonID); - if (lesson != null) { - String fileName = lesson.getLessonName().replaceAll(" ", "_") + ".xlsx"; - fileName = FileUtil.encodeFilenameForDownload(request, fileName); - - response.setContentType("application/x-download"); - response.setHeader("Content-Disposition", "attachment;filename=" + fileName); - logger.debug("Exporting to a spreadsheet gradebook lesson: " + lessonID); - ServletOutputStream out = response.getOutputStream(); + if (lesson == null) { + String errorMsg = "Attempt to retrieve gradebook data for null lesson"; + logger.error(errorMsg); + throw new Exception(errorMsg); + } + + String fileName = lesson.getLessonName().replaceAll(" ", "_") + ".xlsx"; + fileName = FileUtil.encodeFilenameForDownload(request, fileName); - LinkedHashMap dataToExport = new LinkedHashMap(); + response.setContentType("application/x-download"); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName); + logger.debug("Exporting to a spreadsheet gradebook lesson: " + lessonID); + ServletOutputStream out = response.getOutputStream(); - ExcelCell[][] summaryData = gradebookService.getSummaryDataForExcel(lesson); - dataToExport.put(gradebookService.getMessage("gradebook.export.lesson.summary"), summaryData); + LinkedHashMap dataToExport = gradebookService.exportLessonGradebook(lesson); - HashMap> data = gradebookService.getDataForExcelLessonGradebook(lesson); - ExcelCell[][] activityData = gradebookService.getActivityViewDataForExcel(data); - dataToExport.put(gradebookService.getMessage("gradebook.gridtitle.activitygrid"), activityData); + // set cookie that will tell JS script that export has been finished + String downloadTokenValue = WebUtil.readStrParam(request, "downloadTokenValue"); + Cookie fileDownloadTokenCookie = new Cookie("fileDownloadToken", downloadTokenValue); + fileDownloadTokenCookie.setPath("/"); + response.addCookie(fileDownloadTokenCookie); - ExcelCell[][] userData = gradebookService.getUserViewDataForExcel(data, lesson); - dataToExport.put(gradebookService.getMessage("gradebook.export.learner.view"), userData); + GradebookUtil.exportGradebookLessonToExcel(out, gradebookService.getMessage("gradebook.export.dateheader"), + dataToExport); - GradebookUtil.exportGradebookLessonToExcel(out, gradebookService.getMessage("gradebook.export.dateheader"), - dataToExport); - - } else { - throw new Exception("Attempt to retrieve gradebook data for null lesson"); - } - return null; - } + return null; + } /** * Exports Course Gradebook into excel. @@ -347,24 +345,23 @@ Organisation organisation = (Organisation) userService.findById(Organisation.class, oranisationID); if (organisation == null || user == null) { - logger.error("Organisation " + oranisationID + " does not exist or user is null. Unable to load gradebook"); - return mapping.findForward("error"); + String errorMsg = "Organisation " + oranisationID + " does not exist or user is null. Unable to load gradebook"; + logger.error(errorMsg); + throw new Exception(errorMsg); } Integer organisationId = organisation.getOrganisationId(); logger.debug("Exporting to a spreadsheet course: " + organisationId); - LinkedHashMap dataToExport = new LinkedHashMap(); - ExcelCell[][] summaryData = gradebookService.getCourseDataForExcel(user.getUserId(), organisationId); - dataToExport.put(gradebookService.getMessage("gradebook.exportcourse.course.summary"), summaryData); + LinkedHashMap dataToExport = gradebookService.exportCourseGradebook(user.getUserId(), organisationId); String fileName = organisation.getName().replaceAll(" ", "_") + ".xlsx"; fileName = FileUtil.encodeFilenameForDownload(request, fileName); response.setContentType("application/x-download"); response.setHeader("Content-Disposition", "attachment;filename=" + fileName); - //downloadTokenValue will have been provided when requesting excel export + //set cookie that will tell JS script that export has been finished String downloadTokenValue = WebUtil.readStrParam(request, "downloadTokenValue"); Cookie fileDownloadTokenCookie = new Cookie("fileDownloadToken", downloadTokenValue); fileDownloadTokenCookie.setPath("/"); Index: lams_gradebook/web/gradebookCourseLearner.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/web/gradebookCourseLearner.jsp,v diff -u -r1.6 -r1.7 --- lams_gradebook/web/gradebookCourseLearner.jsp 13 Nov 2009 03:13:51 -0000 1.6 +++ lams_gradebook/web/gradebookCourseLearner.jsp 6 Sep 2012 16:03:19 -0000 1.7 @@ -10,20 +10,12 @@ Course Gradebook Learner + + Index: lams_gradebook/web/gradebookCourseMonitor.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/web/gradebookCourseMonitor.jsp,v diff -u -r1.9 -r1.10 --- lams_gradebook/web/gradebookCourseMonitor.jsp 16 Jul 2012 17:59:33 -0000 1.9 +++ lams_gradebook/web/gradebookCourseMonitor.jsp 6 Sep 2012 16:03:19 -0000 1.10 @@ -10,67 +10,21 @@ <fmt:message key="gradebook.title.window.courseMonitor"/> + + - - + + - + + + +