Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/servlet/PopulateMarksServlet.java =================================================================== diff -u -r9908e067a5350bea350dea231dbe734558e67be8 -r231b438805625a1d72345c2ce78247e5167a51ce --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/servlet/PopulateMarksServlet.java (.../PopulateMarksServlet.java) (revision 9908e067a5350bea350dea231dbe734558e67be8) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/servlet/PopulateMarksServlet.java (.../PopulateMarksServlet.java) (revision 231b438805625a1d72345c2ce78247e5167a51ce) @@ -25,27 +25,38 @@ import java.io.IOException; import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.List; 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.dao.ScratchieSessionDAO; 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; +import org.lamsfoundation.lams.util.WebUtil; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; public class PopulateMarksServlet extends HttpServlet { private static Logger log = Logger.getLogger(PopulateMarksServlet.class); - private IScratchieService service; + private static IScratchieService service; + private static ScratchieSessionDAO scratchieSessionDAO; @Override public void init() throws ServletException { - service = ScratchieServiceProxy.getScratchieService(getServletContext()); + PopulateMarksServlet.service = ScratchieServiceProxy.getScratchieService(getServletContext()); + + WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()); + PopulateMarksServlet.scratchieSessionDAO = (ScratchieSessionDAO) ctx.getBean("scratchieSessionDao"); + super.init(); } @@ -54,27 +65,44 @@ PrintWriter out = response.getWriter(); int sessionCount = 0; try { - + List sessions = new ArrayList(); - for (int i = 1; i < 20000; i++) { - ScratchieSession session = service.getScratchieSessionBySessionId(new Long(i)); + Long toolContentId = WebUtil.readLongParam(request, "toolContentId", true); + //in case toolContentId is not specified traverse the first 20 000 session ids + if (toolContentId == null) { - if (session != null) { - sessionCount++; + for (int i = 1; i < 20000; i++) { + ScratchieSession session = service.getScratchieSessionBySessionId(new Long(i)); - ScratchieUser leader = session.getGroupLeader(); - if ((leader != null)) { - service.recalculateMarkForSession(session.getSessionId(), true); - log.debug("recalculateMarkForSession uid:" + session.getUid()); - out.println("recalculateMarkForSession uid:" + session.getUid()); + if (session != null) { + sessions.add(session); } + } + + //otherwise - only the ones that belong to specified toolContentId + } else { + List dbSessions = scratchieSessionDAO.getByContentId(toolContentId); + sessions.addAll(dbSessions); + } + + //recalculate marks for all selected sessions + for (ScratchieSession session : sessions) { + ScratchieUser leader = session.getGroupLeader(); + if ((leader != null)) { + service.recalculateMarkForSession(session.getSessionId(), true); + log.debug("recalculateMarkForSession uid:" + session.getUid()); + out.println("recalculateMarkForSession uid:" + session.getUid()); + } } + + sessionCount = sessions.size(); } catch (Exception e) { log.error("LAMS ERROR: " + e.getMessage() + e.getCause()); out.println("LAMS ERROR: " + e.getMessage() + e.getCause()); + out.close(); throw new ServletException("LAMS ERROR: " + e.getMessage() + e.getCause()); }