Index: lams_tool_scratchie/.classpath =================================================================== diff -u -r5a5f3640c4d5fdf0c302347e7d6b502a972fd9cc -raab18261022d7746e10b3651bd3c864356c58a8b --- lams_tool_scratchie/.classpath (.../.classpath) (revision 5a5f3640c4d5fdf0c302347e7d6b502a972fd9cc) +++ lams_tool_scratchie/.classpath (.../.classpath) (revision aab18261022d7746e10b3651bd3c864356c58a8b) @@ -20,5 +20,6 @@ + Index: lams_tool_scratchie/conf/xdoclet/struts-actions.xml =================================================================== diff -u -rc7569597546126af159f169353e68e91241b7f10 -raab18261022d7746e10b3651bd3c864356c58a8b --- lams_tool_scratchie/conf/xdoclet/struts-actions.xml (.../struts-actions.xml) (revision c7569597546126af159f169353e68e91241b7f10) +++ lams_tool_scratchie/conf/xdoclet/struts-actions.xml (.../struts-actions.xml) (revision aab18261022d7746e10b3651bd3c864356c58a8b) @@ -246,7 +246,11 @@ type="org.lamsfoundation.lams.tool.scratchie.web.action.MonitoringAction" parameter="itemSummary" > - + + + Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java =================================================================== diff -u -rfc1a34815de226b286ef1adfaf83eef4f96d049b -raab18261022d7746e10b3651bd3c864356c58a8b --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java (.../ScratchieConstants.java) (revision fc1a34815de226b286ef1adfaf83eef4f96d049b) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java (.../ScratchieConstants.java) (revision aab18261022d7746e10b3651bd3c864356c58a8b) @@ -152,6 +152,10 @@ public static final String ATTR_GROUP_LEADER = "groupLeader"; public static final String ATTR_IS_USER_LEADER = "isUserLeader"; + + public static final String PARAM_NOT_A_NUMBER = "nan"; + + public static final String PARAM_MARK = "mark"; public static final String LEARNER_MARK = "learner.mark"; Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dbupdates/patch20130912.sql =================================================================== diff -u --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dbupdates/patch20130912.sql (revision 0) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dbupdates/patch20130912.sql (revision aab18261022d7746e10b3651bd3c864356c58a8b) @@ -0,0 +1,13 @@ +-- Turn off autocommit, so nothing is committed if there is an error +SET AUTOCOMMIT = 0; + +----------------------Put all sql statements below here------------------------- + +-- LDEV-xxx(LDEV-3110) Ability to modify marks in monitor +ALTER TABLE tl_lascrt11_user ADD COLUMN mark INTEGER DEFAULT 0; + +----------------------Put all sql statements above here------------------------- + +-- If there were no errors, commit and restore autocommit to on +COMMIT; +SET AUTOCOMMIT = 1; \ No newline at end of file Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/model/ScratchieUser.java =================================================================== diff -u -rc7569597546126af159f169353e68e91241b7f10 -raab18261022d7746e10b3651bd3c864356c58a8b --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/model/ScratchieUser.java (.../ScratchieUser.java) (revision c7569597546126af159f169353e68e91241b7f10) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/model/ScratchieUser.java (.../ScratchieUser.java) (revision aab18261022d7746e10b3651bd3c864356c58a8b) @@ -47,12 +47,12 @@ private String loginName; private boolean sessionFinished; private boolean scratchingFinished; + private int mark; private ScratchieSession session; private Scratchie scratchie; // =============== NON Persisit value: for display use =========== - private int mark; private int totalAttempts; public ScratchieUser() { @@ -221,7 +221,19 @@ public void setScratchingFinished(boolean scratchingFinished) { this.scratchingFinished = scratchingFinished; } + + /** + * @hibernate.property column="mark" + * @return + */ + public int getMark() { + return mark; + } + public void setMark(int mark) { + this.mark = mark; + } + public boolean equals(Object obj) { if (this == obj) return true; @@ -239,14 +251,6 @@ return new HashCodeBuilder().append(uid).append(firstName).append(lastName).append(loginName).toHashCode(); } - public int getMark() { - return mark; - } - - public void setMark(int mark) { - this.mark = mark; - } - public int getTotalAttempts() { return totalAttempts; } Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/scratchieApplicationContext.xml =================================================================== diff -u -rc7569597546126af159f169353e68e91241b7f10 -raab18261022d7746e10b3651bd3c864356c58a8b --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/scratchieApplicationContext.xml (.../scratchieApplicationContext.xml) (revision c7569597546126af159f169353e68e91241b7f10) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/scratchieApplicationContext.xml (.../scratchieApplicationContext.xml) (revision aab18261022d7746e10b3651bd3c864356c58a8b) @@ -93,6 +93,8 @@ + + @@ -117,19 +119,21 @@ + PROPAGATION_REQUIRED,readOnly + PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception - PROPAGATION_REQUIRED,-java.lang.Exception + PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception - PROPAGATION_REQUIRED,-java.lang.Exception + PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java =================================================================== diff -u -rfc1a34815de226b286ef1adfaf83eef4f96d049b -raab18261022d7746e10b3651bd3c864356c58a8b --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java (.../IScratchieService.java) (revision fc1a34815de226b286ef1adfaf83eef4f96d049b) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java (.../IScratchieService.java) (revision aab18261022d7746e10b3651bd3c864356c58a8b) @@ -218,11 +218,12 @@ Set getItemsWithIndicatedScratches(Long toolSessionId, ScratchieUser user); /** - * Leader has scratched the specified answer. Will store this scratch for all users in his group. + * Leader has scratched the specified answer. Will store this scratch for all users in his group. It will also + * update all the marks. */ - void setAnswerAccess(Long scratchieItemUid, Long sessionId); + void logAnswerAccess(ScratchieUser leader, Long scratchieItemUid); - int getUserMark(ScratchieSession session, Long userUid); + void recalculateMarkForSession(ScratchieUser leader, boolean isPropagateToGradebook); /** * Mark all users in agroup as ScratchingFinished so that users can't continue scratching after this. @@ -346,4 +347,6 @@ * @return */ Set getAllLearners(Long contentId); + + void changeUserMark(Long userId, Long userUid, Integer newMark); } Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieOutputFactory.java =================================================================== diff -u -rfc1a34815de226b286ef1adfaf83eef4f96d049b -raab18261022d7746e10b3651bd3c864356c58a8b --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieOutputFactory.java (.../ScratchieOutputFactory.java) (revision fc1a34815de226b286ef1adfaf83eef4f96d049b) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieOutputFactory.java (.../ScratchieOutputFactory.java) (revision aab18261022d7746e10b3651bd3c864356c58a8b) @@ -84,12 +84,11 @@ */ private ToolOutput getUserMark(IScratchieService scratchieService, Long toolSessionId, Long learnerId) { - ScratchieSession session = scratchieService.getScratchieSessionBySessionId(toolSessionId); ScratchieUser user = scratchieService.getUserByIDAndSession(learnerId, toolSessionId); - int userMark = scratchieService.getUserMark(session, user.getUid()); + int userMark = user.getMark(); - return new ToolOutput(ScratchieConstants.LEARNER_MARK, getI18NText( - ScratchieConstants.LEARNER_MARK, true), userMark); + return new ToolOutput(ScratchieConstants.LEARNER_MARK, getI18NText(ScratchieConstants.LEARNER_MARK, true), + userMark); } } Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java =================================================================== diff -u -rfc1a34815de226b286ef1adfaf83eef4f96d049b -raab18261022d7746e10b3651bd3c864356c58a8b --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision fc1a34815de226b286ef1adfaf83eef4f96d049b) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision aab18261022d7746e10b3651bd3c864356c58a8b) @@ -57,6 +57,7 @@ import org.lamsfoundation.lams.contentrepository.service.IRepositoryService; import org.lamsfoundation.lams.contentrepository.service.SimpleCredentials; import org.lamsfoundation.lams.events.IEventNotificationService; +import org.lamsfoundation.lams.gradebook.service.IGradebookService; import org.lamsfoundation.lams.learning.service.ILearnerService; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.LearningDesign; @@ -105,6 +106,7 @@ import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.util.ExcelCell; import org.lamsfoundation.lams.util.MessageService; +import org.lamsfoundation.lams.util.audit.IAuditService; /** * @@ -143,6 +145,10 @@ private IUserManagementService userManagementService; private IExportToolContentService exportContentService; + + private IGradebookService gradebookService; + + private IAuditService auditService; private ICoreNotebookService coreNotebookService; @@ -273,7 +279,6 @@ @Override public void deleteScratchieAttachment(Long attachmentUid) { scratchieAttachmentDao.removeObject(ScratchieAttachment.class, attachmentUid); - } @Override @@ -383,8 +388,34 @@ scratchieAnswerVisitDao.saveObject(userLog); } } + + //update user mark + user.setMark(leader.getMark()); + this.saveUser(user); } + + @Override + public void changeUserMark(Long userId, Long sessionId, Integer newMark) { + if (newMark == null) { + return; + } + + ScratchieUser user = this.getUserByIDAndSession(userId, sessionId); + int oldMark = user.getMark(); + + user.setMark(newMark); + this.saveUser(user); + // propagade changes to Gradebook + gradebookService.updateActivityMark(new Double(newMark), null, user.getUserId().intValue(), user.getSession() + .getSessionId(), true); + + //record mark change with audit service + auditService.logMarkChange(ScratchieConstants.TOOL_SIGNATURE, user.getUserId(), user.getLoginName(), "" + + oldMark, "" + newMark); + + } + @Override public List exportBySessionId(Long sessionId) { ScratchieSession session = scratchieSessionDao.getSessionBySessionId(sessionId); @@ -475,24 +506,63 @@ } @Override - public void setAnswerAccess(Long answerUid, Long sessionId) { + public void logAnswerAccess(ScratchieUser leader, Long answerUid) { + ScratchieAnswer answer = getScratchieAnswerById(answerUid); + Long sessionId = leader.getSession().getSessionId(); + List users = getUsersBySession(sessionId); for (ScratchieUser user : users) { ScratchieAnswerVisitLog log = scratchieAnswerVisitDao.getLog(answerUid, user.getUserId()); if (log == null) { log = new ScratchieAnswerVisitLog(); - ScratchieAnswer answer = getScratchieAnswerById(answerUid); log.setScratchieAnswer(answer); log.setUser(user); log.setSessionId(sessionId); log.setAccessDate(new Timestamp(new Date().getTime())); scratchieAnswerVisitDao.saveObject(log); } } + + recalculateMarkForSession(leader, false); } + + /** + * Recalculate mark for leader and sets it to all members of a group + * + * @param leader + * @param answerUid + */ + public void recalculateMarkForSession(ScratchieUser leader, boolean isPropagateToGradebook) { + + List userLogs = scratchieAnswerVisitDao.getLogsByScratchieUser(leader.getUid()); + Scratchie scratchie = leader.getSession().getScratchie(); + Set items = scratchie.getScratchieItems(); + //clculate mark + int mark = 0; + if (!items.isEmpty()) { + for (ScratchieItem item : items) { + mark += getUserMarkPerItem(scratchie, item, userLogs); + } + } + + //change mark for all learners in a group + Long sessionId = leader.getSession().getSessionId(); + List users = getUsersBySession(sessionId); + for (ScratchieUser user : users) { + user.setMark(mark); + this.saveUser(user); + + if (isPropagateToGradebook) { + // propagade changes to Gradebook + gradebookService.updateActivityMark(new Double(mark), null, user.getUserId().intValue(), user.getSession() + .getSessionId(), true); + } + } + } + @Override public ScratchieAnswer getScratchieAnswerById(Long answerUid) { return (ScratchieAnswer) userManagementService.findById(ScratchieAnswer.class, answerUid); @@ -557,8 +627,8 @@ @Override public List getMonitoringSummary(Long contentId) { List groupSummaryList = new ArrayList(); - List sessionList = scratchieSessionDao.getByContentId(contentId); + for (ScratchieSession session : sessionList) { Long sessionId = session.getSessionId(); // one new summary for one session. @@ -569,10 +639,6 @@ int totalAttempts = scratchieAnswerVisitDao.getLogCountTotal(sessionId, user.getUserId()); user.setTotalAttempts(totalAttempts); - - // for displaying purposes if there is no attemps we assign -1 which will be shown as "-" - int mark = (totalAttempts == 0) ? -1 : getUserMark(session, user.getUid()); - user.setMark(mark); } groupSummary.setUsers(users); @@ -673,31 +739,13 @@ return isItemUnraveled; } - @Override - public int getUserMark(ScratchieSession session, Long userUid) { - - //created to reduce number of queries to DB - List userLogs = scratchieAnswerVisitDao.getLogsByScratchieUser(userUid); - - Scratchie scratchie = session.getScratchie(); - Set items = scratchie.getScratchieItems(); - - int mark = 0; - for (ScratchieItem item : items) { - mark += getUserMarkPerItem(scratchie, item, userLogs); - } - - return mark; - } - /** * * * @param scratchie * @param item * @param userLogs - * if this parameter is provided - uses logs from it, otherwise queries DB. (The main reason to have this - * parameter is to reduce number of queries to DB) + * uses list of logs to reduce number of queries to DB * @return */ private int getUserMarkPerItem(Scratchie scratchie, ScratchieItem item, List userLogs) { @@ -1154,7 +1202,7 @@ row = new ExcelCell[4]; row[0] = new ExcelCell(user.getFirstName() + " " + user.getLastName(), false); row[1] = new ExcelCell(new Long(user.getTotalAttempts()), false); - Long mark = (user.getMark() == -1) ? null : new Long(user.getMark()); + Long mark = (user.getTotalAttempts() == 0) ? null : new Long(user.getMark()); row[2] = new ExcelCell(mark, false); row[3] = new ExcelCell(summary.getSessionName(), false); rowList.add(row); @@ -1281,7 +1329,7 @@ Long attempts = (long) scratchieAnswerVisitDao.getLogCountTotal(sessionId, userId); row[2] = new ExcelCell(attempts, false); row[3] = new ExcelCell(getMessage("label.mark") + ":", false); - row[4] = new ExcelCell(new Long(getUserMark(session, groupLeader.getUid())), false); + row[4] = new ExcelCell(new Long(groupLeader.getMark()), false); rowList.add(row); row = new ExcelCell[1]; @@ -1893,6 +1941,14 @@ public void setExportContentService(IExportToolContentService exportContentService) { this.exportContentService = exportContentService; } + + public void setGradebookService(IGradebookService gradebookService) { + this.gradebookService = gradebookService; + } + + public void setAuditService(IAuditService auditService) { + this.auditService = auditService; + } public IUserManagementService getUserManagementService() { return userManagementService; Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningAction.java =================================================================== diff -u -rfc1a34815de226b286ef1adfaf83eef4f96d049b -raab18261022d7746e10b3651bd3c864356c58a8b --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningAction.java (.../LearningAction.java) (revision fc1a34815de226b286ef1adfaf83eef4f96d049b) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningAction.java (.../LearningAction.java) (revision aab18261022d7746e10b3651bd3c864356c58a8b) @@ -296,9 +296,9 @@ Long toolSessionId = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID); ScratchieSession toolSession = service.getScratchieSessionBySessionId(toolSessionId); - ScratchieUser user = getCurrentUser(toolSessionId); + ScratchieUser leader = getCurrentUser(toolSessionId); // only leaders are allowed to scratch answers - if (!service.isUserGroupLeader(user, toolSession)) { + if (!service.isUserGroupLeader(leader, toolSession)) { return null; } @@ -308,7 +308,7 @@ return mapping.findForward(ScratchieConstants.ERROR); } - service.setAnswerAccess(answer.getUid(), toolSessionId); + service.logAnswerAccess(leader, answer.getUid()); JSONObject JSONObject = new JSONObject(); JSONObject.put(ScratchieConstants.ATTR_ANSWER_CORRECT, answer.isCorrect()); Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/MonitoringAction.java =================================================================== diff -u -rfc1a34815de226b286ef1adfaf83eef4f96d049b -raab18261022d7746e10b3651bd3c864356c58a8b --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision fc1a34815de226b286ef1adfaf83eef4f96d049b) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision aab18261022d7746e10b3651bd3c864356c58a8b) @@ -35,20 +35,18 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringEscapeUtils; +import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; -import org.lamsfoundation.lams.notebook.model.NotebookEntry; -import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.tool.scratchie.ScratchieConstants; import org.lamsfoundation.lams.tool.scratchie.dto.GroupSummary; import org.lamsfoundation.lams.tool.scratchie.dto.ReflectDTO; import org.lamsfoundation.lams.tool.scratchie.model.Scratchie; import org.lamsfoundation.lams.tool.scratchie.model.ScratchieAnswer; import org.lamsfoundation.lams.tool.scratchie.model.ScratchieItem; -import org.lamsfoundation.lams.tool.scratchie.model.ScratchieSession; import org.lamsfoundation.lams.tool.scratchie.model.ScratchieUser; import org.lamsfoundation.lams.tool.scratchie.service.IScratchieService; import org.lamsfoundation.lams.util.ExcelCell; @@ -78,6 +76,9 @@ if (param.equals("itemSummary")) { return itemSummary(mapping, form, request, response); } + if (param.equals("saveUserMark")) { + return saveUserMark(mapping, form, request, response); + } if (param.equals("exportExcel")) { return exportExcel(mapping, form, request, response); } @@ -151,12 +152,29 @@ request.setAttribute(ScratchieConstants.ATTR_SUMMARY_LIST, summaryList); return mapping.findForward(ScratchieConstants.SUCCESS); } + + private ActionForward saveUserMark(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + if ((request.getParameter(ScratchieConstants.PARAM_NOT_A_NUMBER) == null) + && !StringUtils.isEmpty(request.getParameter(ScratchieConstants.ATTR_USER_ID)) + && !StringUtils.isEmpty(request.getParameter(ScratchieConstants.PARAM_SESSION_ID))) { + initializeScratchieService(); + + Long userId = WebUtil.readLongParam(request, ScratchieConstants.ATTR_USER_ID); + Long sessionId = WebUtil.readLongParam(request, ScratchieConstants.PARAM_SESSION_ID); + Integer newMark = Integer.valueOf(request.getParameter(ScratchieConstants.PARAM_MARK)); + service.changeUserMark(userId, sessionId, newMark); + } + + return null; + } + /** * Exports tool results into excel. * @throws IOException */ - public ActionForward exportExcel(ActionMapping mapping, ActionForm form, HttpServletRequest request, + private ActionForward exportExcel(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException { initializeScratchieService(); Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/servlet/PopulateMarksServlet.java =================================================================== diff -u --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/servlet/PopulateMarksServlet.java (revision 0) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/servlet/PopulateMarksServlet.java (revision aab18261022d7746e10b3651bd3c864356c58a8b) @@ -0,0 +1,90 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.tool.scratchie.web.servlet; + +import java.io.IOException; +import java.io.PrintWriter; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.tool.scratchie.model.ScratchieSession; +import org.lamsfoundation.lams.tool.scratchie.model.ScratchieUser; +import org.lamsfoundation.lams.tool.scratchie.service.IScratchieService; +import org.lamsfoundation.lams.tool.scratchie.service.ScratchieServiceProxy; + +public class PopulateMarksServlet extends HttpServlet { + + private static Logger log = Logger.getLogger(PopulateMarksServlet.class); + + private IScratchieService service; + + @Override + public void init() throws ServletException { + service = ScratchieServiceProxy.getScratchieService(getServletContext()); + super.init(); + } + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + PrintWriter out = response.getWriter(); + int sessionCount = 0; + try { + + + for (int i = 1; i < 20000; i++) { + ScratchieSession session = service.getScratchieSessionBySessionId(new Long(i)); + + if (session != null) { + sessionCount++; + + ScratchieUser leader = session.getGroupLeader(); + if ((leader != null)) { + service.recalculateMarkForSession(leader, true); + log.debug("recalculateMarkForSession uid:" + session.getUid()); + out.println("recalculateMarkForSession uid:" + session.getUid()); + } + } + + } + + } catch (Exception e) { + log.error("LAMS ERROR: " + e.getMessage() + e.getCause()); + out.println("LAMS ERROR: " + e.getMessage() + e.getCause()); + throw new ServletException("LAMS ERROR: " + e.getMessage() + e.getCause()); + } + + out.println("OK. Total number of sessions processed " + sessionCount); + + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, + IOException { + doGet(request, response); + } + +} Index: lams_tool_scratchie/web/WEB-INF/web.xml =================================================================== diff -u -r6aaee4b2fe2caa08b0c63a0de11f05042d5a3e18 -raab18261022d7746e10b3651bd3c864356c58a8b --- lams_tool_scratchie/web/WEB-INF/web.xml (.../web.xml) (revision 6aaee4b2fe2caa08b0c63a0de11f05042d5a3e18) +++ lams_tool_scratchie/web/WEB-INF/web.xml (.../web.xml) (revision aab18261022d7746e10b3651bd3c864356c58a8b) @@ -92,6 +92,11 @@ + populateMarks + org.lamsfoundation.lams.tool.scratchie.web.servlet.PopulateMarksServlet + + + completeItem org.lamsfoundation.lams.tool.scratchie.web.servlet.CompleteItemServlet @@ -164,6 +169,11 @@ exportPortfolio /exportPortfolio + + + populateMarks + /populateMarks + completeItem Index: lams_tool_scratchie/web/pages/export/parts/exportTeacher.jsp =================================================================== diff -u -r99545d1824fcf0b2ea23a6bdce46aab3b288bff5 -raab18261022d7746e10b3651bd3c864356c58a8b --- lams_tool_scratchie/web/pages/export/parts/exportTeacher.jsp (.../exportTeacher.jsp) (revision 99545d1824fcf0b2ea23a6bdce46aab3b288bff5) +++ lams_tool_scratchie/web/pages/export/parts/exportTeacher.jsp (.../exportTeacher.jsp) (revision aab18261022d7746e10b3651bd3c864356c58a8b) @@ -51,7 +51,7 @@ sessionId:"${user.session.sessionId}", userName:"${user.lastName}, ${user.firstName}", totalAttempts:"${user.totalAttempts}", - mark:" - ${user.mark} " + mark:" - ${user.mark} " }); Index: lams_tool_scratchie/web/pages/monitoring/statistic.jsp =================================================================== diff -u -rded32af47a9de99cb3319fdd7461906323f7e293 -raab18261022d7746e10b3651bd3c864356c58a8b --- lams_tool_scratchie/web/pages/monitoring/statistic.jsp (.../statistic.jsp) (revision ded32af47a9de99cb3319fdd7461906323f7e293) +++ lams_tool_scratchie/web/pages/monitoring/statistic.jsp (.../statistic.jsp) (revision aab18261022d7746e10b3651bd3c864356c58a8b) @@ -38,7 +38,7 @@ - - + - ${user.mark} Index: lams_tool_scratchie/web/pages/monitoring/summary.jsp =================================================================== diff -u -rc7569597546126af159f169353e68e91241b7f10 -raab18261022d7746e10b3651bd3c864356c58a8b --- lams_tool_scratchie/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision c7569597546126af159f169353e68e91241b7f10) +++ lams_tool_scratchie/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision aab18261022d7746e10b3651bd3c864356c58a8b) @@ -8,17 +8,25 @@ #user-dropdown-div {padding-left: 30px; margin-top: -5px; margin-bottom: 50px;} .bottom-buttons {margin: 20px 20px 0px; padding-bottom: 20px;} .section-header {padding-left: 20px; margin-bottom: 15px; margin-top: 60px;} + .ui-jqgrid tr.jqgrow td { + white-space: normal !important; + height:auto; + vertical-align:text-top; + padding-top:2px; + }