Index: lams_tool_lamc/.classpath
===================================================================
RCS file: /usr/local/cvsroot/lams_tool_lamc/.classpath,v
diff -u -r1.10 -r1.11
--- lams_tool_lamc/.classpath 12 Dec 2012 13:50:04 -0000 1.10
+++ lams_tool_lamc/.classpath 4 Sep 2013 17:29:57 -0000 1.11
@@ -19,5 +19,6 @@
+
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml
===================================================================
RCS file: /usr/local/cvsroot/lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml,v
diff -u -r1.19 -r1.20
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml 26 Mar 2009 10:00:38 -0000 1.19
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml 4 Sep 2013 17:29:57 -0000 1.20
@@ -81,7 +81,8 @@
-
+
+
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/IMcUsrAttemptDAO.java
===================================================================
RCS file: /usr/local/cvsroot/lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/IMcUsrAttemptDAO.java,v
diff -u -r1.23 -r1.24
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/IMcUsrAttemptDAO.java 3 Sep 2013 16:56:41 -0000 1.23
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/IMcUsrAttemptDAO.java 4 Sep 2013 17:29:57 -0000 1.24
@@ -90,6 +90,14 @@
*/
int getAttemptsCountPerOption(Long optionUid);
+ /**
+ * Calculate what is the total mark scored by user in this activity. Only responseFinalised is taken into account.
+ *
+ * @param userUid
+ * @return
+ */
+ int getUserTotalMark(final Long userUid);
+
McUsrAttempt getUserAttemptByUid(Long uid);
}
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McUsrAttemptDAO.java
===================================================================
RCS file: /usr/local/cvsroot/lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McUsrAttemptDAO.java,v
diff -u -r1.27 -r1.28
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McUsrAttemptDAO.java 3 Sep 2013 16:56:42 -0000 1.27
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McUsrAttemptDAO.java 4 Sep 2013 17:29:57 -0000 1.28
@@ -26,7 +26,6 @@
import org.hibernate.FlushMode;
import org.lamsfoundation.lams.tool.mc.dao.IMcUsrAttemptDAO;
-import org.lamsfoundation.lams.tool.mc.pojos.McQueUsr;
import org.lamsfoundation.lams.tool.mc.pojos.McUsrAttempt;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
@@ -56,6 +55,10 @@
+ McUsrAttempt.class.getName()
+ " as attempt where attempt.mcOptionsContent.uid=? AND attempt.mcQueUsr.responseFinalised = true";
+ private static final String FIND_USER_TOTAL_MARK = "select SUM(attempt.mark) from "
+ + McUsrAttempt.class.getName()
+ + " as attempt where attempt.mcQueUsr.uid=:userUid AND attempt.mcQueUsr.responseFinalised = true";
+
@Override
public McUsrAttempt getUserAttemptByUid(Long uid) {
return (McUsrAttempt) this.getHibernateTemplate().get(McUsrAttempt.class, uid);
@@ -67,10 +70,21 @@
}
@Override
- public List getUserAttempts(final Long queUserUid) {
+ public List getUserAttempts(final Long userUid) {
return (List) getSession().createQuery(LOAD_ALL_QUESTION_ATTEMPTS)
- .setLong("queUsrUid", queUserUid.longValue()).list();
+ .setLong("queUsrUid", userUid.longValue()).list();
}
+
+ @Override
+ public int getUserTotalMark(final Long userUid) {
+ List list = getSession().createQuery(FIND_USER_TOTAL_MARK).setLong("userUid", userUid.longValue()).list();
+
+ if (list == null || list.size() == 0) {
+ return 0;
+ }
+
+ return ((Number) list.get(0)).intValue();
+ }
@SuppressWarnings("unchecked")
public McUsrAttempt getUserAttemptByQuestion(final Long queUsrUid, final Long mcQueContentId) {
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java
===================================================================
RCS file: /usr/local/cvsroot/lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java,v
diff -u -r1.114 -r1.115
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java 4 Sep 2013 08:06:38 -0000 1.114
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java 4 Sep 2013 17:29:57 -0000 1.115
@@ -64,6 +64,7 @@
import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler;
import org.lamsfoundation.lams.contentrepository.service.IRepositoryService;
import org.lamsfoundation.lams.contentrepository.service.SimpleCredentials;
+import org.lamsfoundation.lams.gradebook.service.IGradebookService;
import org.lamsfoundation.lams.learning.service.ILearnerService;
import org.lamsfoundation.lams.learningdesign.service.ExportToolContentException;
import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService;
@@ -148,6 +149,7 @@
private ILamsToolService toolService;
private IToolContentHandler mcToolContentHandler = null;
private IExportToolContentService exportContentService;
+ private IGradebookService gradebookService;
private ICoreNotebookService coreNotebookService;
@@ -759,10 +761,24 @@
@Override
public void changeUserAttemptMark(Long userAttemptUid, Integer newMark) {
+ if (newMark == null) {
+ return;
+ }
+
McUsrAttempt userAttempt = mcUsrAttemptDAO.getUserAttemptByUid(userAttemptUid);
- float oldMark = userAttempt.getMark();
+ Integer userId = userAttempt.getMcQueUsr().getQueUsrId().intValue();
+ Long userUid = userAttempt.getMcQueUsr().getUid();
+ Long toolSessionId = userAttempt.getMcQueUsr().getMcSession().getMcSessionId();
+ Integer oldMark = userAttempt.getMark();
+ int oldTotalMark = mcUsrAttemptDAO.getUserTotalMark(userUid);
+
userAttempt.setMark(newMark);
mcUsrAttemptDAO.saveMcUsrAttempt(userAttempt);
+
+ // propagade changes to Gradebook
+ int totalMark = (oldMark == null) ? oldTotalMark + newMark : oldTotalMark - oldMark + newMark;
+ gradebookService.updateActivityMark(new Double(totalMark), null, userId, toolSessionId, false);
+
}
@Override
@@ -1901,6 +1917,10 @@
public void setExportContentService(IExportToolContentService exportContentService) {
this.exportContentService = exportContentService;
}
+
+ public void setGradebookService(IGradebookService gradebookService) {
+ this.gradebookService = gradebookService;
+ }
public MCOutputFactory getMcOutputFactory() {
return mcOutputFactory;