Index: lams_central/web/qb/stats.jsp =================================================================== diff -u -r0580a000d442501fbababd51663f7c03cedfbf20 -r28523d629738623026587908460f0ec8268c5f6f --- lams_central/web/qb/stats.jsp (.../stats.jsp) (revision 0580a000d442501fbababd51663f7c03cedfbf20) +++ lams_central/web/qb/stats.jsp (.../stats.jsp) (revision 28523d629738623026587908460f0ec8268c5f6f) @@ -140,6 +140,34 @@
+ Burning questions +
+
+ + + + + + + + + + + +
+ Question + + Likes +
+ + + +
+
+
+ +
+
Usage
Index: lams_common/src/java/org/lamsfoundation/lams/qb/dao/IQbDAO.java =================================================================== diff -u -red9a00f4f59d352ae53b11ba461f12affd12dab0 -r28523d629738623026587908460f0ec8268c5f6f --- lams_common/src/java/org/lamsfoundation/lams/qb/dao/IQbDAO.java (.../IQbDAO.java) (revision ed9a00f4f59d352ae53b11ba461f12affd12dab0) +++ lams_common/src/java/org/lamsfoundation/lams/qb/dao/IQbDAO.java (.../IQbDAO.java) (revision 28523d629738623026587908460f0ec8268c5f6f) @@ -22,5 +22,7 @@ Map geAnswerStatsForQbToolQuestion(long qbToolQuestionUid); - Map geAnswerStatsForActivity(long activityId); + Map getAnswerStatsForActivity(long activityId); + + Map getBurningQuestions(long qbQuestionUid); } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/qb/dao/hibernate/QbDAO.java =================================================================== diff -u -red9a00f4f59d352ae53b11ba461f12affd12dab0 -r28523d629738623026587908460f0ec8268c5f6f --- lams_common/src/java/org/lamsfoundation/lams/qb/dao/hibernate/QbDAO.java (.../QbDAO.java) (revision ed9a00f4f59d352ae53b11ba461f12affd12dab0) +++ lams_common/src/java/org/lamsfoundation/lams/qb/dao/hibernate/QbDAO.java (.../QbDAO.java) (revision 28523d629738623026587908460f0ec8268c5f6f) @@ -1,6 +1,7 @@ package org.lamsfoundation.lams.qb.dao.hibernate; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -23,6 +24,8 @@ + "WHERE a.qbToolQuestion.uid = :qbToolQuestionUid GROUP BY a.qbOption.uid"; private static final String FIND_ANSWER_STATS_BY_ACTIVITY = "SELECT a.qbOption.uid, COUNT(a.uid) FROM QbToolAnswer AS a, " + " ToolActivity AS act WHERE a.qbToolQuestion.toolContentId = act.toolContentId AND act.activityId = :activityId GROUP BY a.qbOption.uid"; + private static final String FIND_BURNING_QUESTIONS = "SELECT bl.burningQuestion.question, COUNT(bl.uid) FROM BurningQuestionLike AS bl " + + "WHERE bl.burningQuestion.scratchieItem.qbQuestion.uid = :qbQuestionUid GROUP BY bl.burningQuestion.question ORDER BY COUNT(bl.uid) DESC"; @Override public int getMaxQuestionId() { @@ -79,7 +82,7 @@ @Override @SuppressWarnings("unchecked") - public Map geAnswerStatsForActivity(long activityId) { + public Map getAnswerStatsForActivity(long activityId) { List result = this.getSession().createQuery(FIND_ANSWER_STATS_BY_ACTIVITY) .setParameter("activityId", activityId).list(); Map map = new HashMap<>(result.size()); @@ -88,4 +91,16 @@ } return map; } + + @Override + @SuppressWarnings("unchecked") + public Map getBurningQuestions(long qbQuestionUid) { + List result = this.getSession().createQuery(FIND_BURNING_QUESTIONS) + .setParameter("qbQuestionUid", qbQuestionUid).list(); + Map map = new LinkedHashMap<>(result.size()); + for (Object[] burningQuestion : result) { + map.put((String) burningQuestion[0], (Long) burningQuestion[1]); + } + return map; + } } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/qb/dto/QbStatsDTO.java =================================================================== diff -u -red9a00f4f59d352ae53b11ba461f12affd12dab0 -r28523d629738623026587908460f0ec8268c5f6f --- lams_common/src/java/org/lamsfoundation/lams/qb/dto/QbStatsDTO.java (.../QbStatsDTO.java) (revision ed9a00f4f59d352ae53b11ba461f12affd12dab0) +++ lams_common/src/java/org/lamsfoundation/lams/qb/dto/QbStatsDTO.java (.../QbStatsDTO.java) (revision 28523d629738623026587908460f0ec8268c5f6f) @@ -34,6 +34,7 @@ private String answersJSON; private List activities; private List versions; + private Map burningQuestions; public QbQuestion getQuestion() { return question; @@ -82,4 +83,12 @@ public void setVersions(List versions) { this.versions = versions; } + + public Map getBurningQuestions() { + return burningQuestions; + } + + public void setBurningQuestions(Map burningQuestions) { + this.burningQuestions = burningQuestions; + } } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/qb/service/QbService.java =================================================================== diff -u -r0580a000d442501fbababd51663f7c03cedfbf20 -r28523d629738623026587908460f0ec8268c5f6f --- lams_common/src/java/org/lamsfoundation/lams/qb/service/QbService.java (.../QbService.java) (revision 0580a000d442501fbababd51663f7c03cedfbf20) +++ lams_common/src/java/org/lamsfoundation/lams/qb/service/QbService.java (.../QbService.java) (revision 28523d629738623026587908460f0ec8268c5f6f) @@ -37,14 +37,16 @@ QbQuestion qbQuestion = (QbQuestion) qbDAO.find(QbQuestion.class, qbQuestionUid); List qbOptions = qbQuestion.getQbOptions(); stats.setQuestion(qbQuestion); + Map burningQuestions = qbDAO.getBurningQuestions(qbQuestionUid); + stats.setBurningQuestions(burningQuestions); List activities = qbDAO.getQuestionActivities(qbQuestionUid); List activityDTOs = new LinkedList<>(); // calculate correct answer average for each activity for (ToolActivity activity : activities) { QbStatsActivityDTO activityDTO = new QbStatsActivityDTO(); activityDTO.setActivity(activity); - Map activityAnswersRaw = qbDAO.geAnswerStatsForActivity(activity.getActivityId()); + Map activityAnswersRaw = qbDAO.getAnswerStatsForActivity(activity.getActivityId()); double total = 0; long correctCount = 0; for (QbOption option : qbOptions) {