Index: lams_tool_scratchie/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -r2adb14cdb105f3e0e72bd3c052e9dc254949049b -r447eb31b1898bb52f8c723f3e91f3a94fdae497d --- lams_tool_scratchie/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 2adb14cdb105f3e0e72bd3c052e9dc254949049b) +++ lams_tool_scratchie/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 447eb31b1898bb52f8c723f3e91f3a94fdae497d) @@ -193,5 +193,6 @@ label.continue.burning.questions =Continue with burning questions label.burning.questions =Burning questions label.burning.question =Burning question +label.general.burning.question =General burning question #======= End labels: Exported 182 labels for en AU ===== Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java =================================================================== diff -u -r2adb14cdb105f3e0e72bd3c052e9dc254949049b -r447eb31b1898bb52f8c723f3e91f3a94fdae497d --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java (.../ScratchieConstants.java) (revision 2adb14cdb105f3e0e72bd3c052e9dc254949049b) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java (.../ScratchieConstants.java) (revision 447eb31b1898bb52f8c723f3e91f3a94fdae497d) @@ -73,6 +73,8 @@ public static final String ATTR_BURNING_QUESTIONS = "burningQuestions"; + public static final String ATTR_GENERAL_BURNING_QUESTION = "generalBurningQuestion"; + public static final String ATTR_ITEM_ORDER_ID_PREFIX = "itemOrderId"; public static final String ATTR_ITEM_TITLE_PREFIX = "itemTitle"; Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dao/ScratchieBurningQuestionDAO.java =================================================================== diff -u -r2adb14cdb105f3e0e72bd3c052e9dc254949049b -r447eb31b1898bb52f8c723f3e91f3a94fdae497d --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dao/ScratchieBurningQuestionDAO.java (.../ScratchieBurningQuestionDAO.java) (revision 2adb14cdb105f3e0e72bd3c052e9dc254949049b) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dao/ScratchieBurningQuestionDAO.java (.../ScratchieBurningQuestionDAO.java) (revision 447eb31b1898bb52f8c723f3e91f3a94fdae497d) @@ -33,6 +33,8 @@ ScratchieBurningQuestion getBurningQuestionBySessionAndItem(Long sessionId, Long itemUid); + ScratchieBurningQuestion getGeneralBurningQuestionBySession(Long sessionId); + List getBurningQuestionsBySession(Long sessionId); } Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dao/hibernate/ScratchieBurningQuestionDAOHibernate.java =================================================================== diff -u -r2adb14cdb105f3e0e72bd3c052e9dc254949049b -r447eb31b1898bb52f8c723f3e91f3a94fdae497d --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dao/hibernate/ScratchieBurningQuestionDAOHibernate.java (.../ScratchieBurningQuestionDAOHibernate.java) (revision 2adb14cdb105f3e0e72bd3c052e9dc254949049b) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dao/hibernate/ScratchieBurningQuestionDAOHibernate.java (.../ScratchieBurningQuestionDAOHibernate.java) (revision 447eb31b1898bb52f8c723f3e91f3a94fdae497d) @@ -33,26 +33,42 @@ private static final String FIND_BY_SESSION_AND_ITEM = "from " + ScratchieBurningQuestion.class.getName() + " as r where r.sessionId=? and r.scratchieItem.uid = ?"; + private static final String FIND_GENERAL_QUESTION_BY_SESSION = "from " + ScratchieBurningQuestion.class.getName() + + " as r where r.sessionId=? and r.generalQuestion = 1"; + private static final String FIND_BY_SESSION = "from " + ScratchieBurningQuestion.class.getName() - + " as r where r.sessionId=? order by r.scratchieItem.orderId asc"; + + " as r where r.sessionId=?"; private static final String FIND_BY_ITEM_UID = "from " + ScratchieBurningQuestion.class.getName() + " as r where r.scratchieItem.uid=? order by r.sessionId asc"; +// @Override +// public List getBurningQuestionsByContentId(Long contentId) { +// return getHibernateTemplate().find(FIND_BY_CONTENT_ID, new Object[] { contentId}); +// } + @Override public List getBurningQuestionsByItemUid(Long itemUid) { return getHibernateTemplate().find(FIND_BY_ITEM_UID, new Object[] { itemUid}); } @Override public ScratchieBurningQuestion getBurningQuestionBySessionAndItem(Long sessionId, Long itemUid) { - List list = getHibernateTemplate().find(FIND_BY_SESSION_AND_ITEM, new Object[] { sessionId, itemUid }); + List list = getHibernateTemplate().find(FIND_BY_SESSION_AND_ITEM, new Object[] { sessionId, itemUid }); if (list == null || list.size() == 0) return null; return (ScratchieBurningQuestion) list.get(0); } @Override + public ScratchieBurningQuestion getGeneralBurningQuestionBySession(Long sessionId) { + List list = getHibernateTemplate().find(FIND_GENERAL_QUESTION_BY_SESSION, new Object[] { sessionId }); + if (list == null || list.size() == 0) + return null; + return (ScratchieBurningQuestion) list.get(0); + } + + @Override public List getBurningQuestionsBySession(Long sessionId) { return getHibernateTemplate().find(FIND_BY_SESSION, new Object[] { sessionId }); } Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dbupdates/patch20150206.sql =================================================================== diff -u -r4f28fc22200faa617609984b6478f093b18d6d72 -r447eb31b1898bb52f8c723f3e91f3a94fdae497d --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dbupdates/patch20150206.sql (.../patch20150206.sql) (revision 4f28fc22200faa617609984b6478f093b18d6d72) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dbupdates/patch20150206.sql (.../patch20150206.sql) (revision 447eb31b1898bb52f8c723f3e91f3a94fdae497d) @@ -11,6 +11,7 @@ scratchie_item_uid BIGINT, session_id BIGINT, question TEXT, + general_question tinyint, PRIMARY KEY (uid) )ENGINE=InnoDB; ALTER TABLE tl_lascrt11_burning_question ADD INDEX FK_NEW_610529188_693580A438BF8DF2 (scratchie_item_uid), ADD CONSTRAINT FK_NEW_610529188_693580A438BF8DF2 FOREIGN KEY (scratchie_item_uid) REFERENCES tl_lascrt11_scratchie_item (uid); Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/model/ScratchieBurningQuestion.java =================================================================== diff -u -r4f28fc22200faa617609984b6478f093b18d6d72 -r447eb31b1898bb52f8c723f3e91f3a94fdae497d --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/model/ScratchieBurningQuestion.java (.../ScratchieBurningQuestion.java) (revision 4f28fc22200faa617609984b6478f093b18d6d72) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/model/ScratchieBurningQuestion.java (.../ScratchieBurningQuestion.java) (revision 447eb31b1898bb52f8c723f3e91f3a94fdae497d) @@ -40,6 +40,7 @@ private Date accessDate; private Long sessionId; private String question; + private boolean generalQuestion; /** * @hibernate.id generator-class="native" type="java.lang.Long" column="uid" @@ -100,5 +101,17 @@ public void setQuestion(String question) { this.question = question; } + + /** + * @hibernate.property column="general_question" + * @return + */ + public boolean isGeneralQuestion() { + return generalQuestion; + } + public void setGeneralQuestion(boolean isGeneralQuestion) { + this.generalQuestion = isGeneralQuestion; + } + } Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java =================================================================== diff -u -r2adb14cdb105f3e0e72bd3c052e9dc254949049b -r447eb31b1898bb52f8c723f3e91f3a94fdae497d --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java (.../IScratchieService.java) (revision 2adb14cdb105f3e0e72bd3c052e9dc254949049b) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java (.../IScratchieService.java) (revision 447eb31b1898bb52f8c723f3e91f3a94fdae497d) @@ -71,7 +71,7 @@ * Save or update burningQuestion into database. * * @param sessionId - * @param itemUid + * @param itemUid item uid, if it's null - it signifies general burning question * @param question */ void saveBurningQuestion(Long sessionId, Long itemUid, String question); Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java =================================================================== diff -u -r2adb14cdb105f3e0e72bd3c052e9dc254949049b -r447eb31b1898bb52f8c723f3e91f3a94fdae497d --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision 2adb14cdb105f3e0e72bd3c052e9dc254949049b) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision 447eb31b1898bb52f8c723f3e91f3a94fdae497d) @@ -430,22 +430,27 @@ @Override public void saveBurningQuestion(Long sessionId, Long itemUid, String question) { - ScratchieBurningQuestion burningQuestion = scratchieBurningQuestionDao.getBurningQuestionBySessionAndItem(sessionId, itemUid); + boolean isGeneralBurningQuestion = itemUid == null; + ScratchieBurningQuestion burningQuestion = (isGeneralBurningQuestion) ? scratchieBurningQuestionDao + .getGeneralBurningQuestionBySession(sessionId) : scratchieBurningQuestionDao + .getBurningQuestionBySessionAndItem(sessionId, itemUid); + if (burningQuestion == null) { burningQuestion = new ScratchieBurningQuestion(); - ScratchieItem item = scratchieItemDao.getByUid(itemUid); - burningQuestion.setScratchieItem(item); + if (!isGeneralBurningQuestion) { + ScratchieItem item = scratchieItemDao.getByUid(itemUid); + burningQuestion.setScratchieItem(item); + } + burningQuestion.setGeneralQuestion(isGeneralBurningQuestion); burningQuestion.setSessionId(sessionId); burningQuestion.setAccessDate(new Date()); } burningQuestion.setQuestion(question); scratchieBurningQuestionDao.saveObject(burningQuestion); } - - @Override public ScratchieAnswer getScratchieAnswerByUid(Long answerUid) { ScratchieAnswer res = (ScratchieAnswer) userManagementService.findById(ScratchieAnswer.class, answerUid); @@ -796,7 +801,27 @@ burningQuestionDtos.add(burningQuestionDTO); } + + //general burning question + BurningQuestionDTO generalBurningQuestionDTO = new BurningQuestionDTO(); + ScratchieItem generalDummyItem = new ScratchieItem(); + generalDummyItem.setUid(0L); + final String generalQuestionMessage = messageService.getMessage("label.general.burning.question"); + generalDummyItem.setTitle(generalQuestionMessage); + generalBurningQuestionDTO.setItem(generalDummyItem); + Map groupNameToBurningQuestion = new LinkedHashMap(); + generalBurningQuestionDTO.setGroupNameToBurningQuestion(groupNameToBurningQuestion); + for (ScratchieSession session : sessionList) { + ScratchieBurningQuestion burningQuestion = scratchieBurningQuestionDao + .getGeneralBurningQuestionBySession(session.getSessionId()); + + String groupName = StringEscapeUtils.escapeJavaScript(session.getSessionName()); + String burningQuestionText = StringEscapeUtils.escapeJavaScript(burningQuestion.getQuestion()); + groupNameToBurningQuestion.put(groupName, burningQuestionText); + } + burningQuestionDtos.add(generalBurningQuestionDTO); + return burningQuestionDtos; } Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningAction.java =================================================================== diff -u -r2adb14cdb105f3e0e72bd3c052e9dc254949049b -r447eb31b1898bb52f8c723f3e91f3a94fdae497d --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningAction.java (.../LearningAction.java) (revision 2adb14cdb105f3e0e72bd3c052e9dc254949049b) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningAction.java (.../LearningAction.java) (revision 447eb31b1898bb52f8c723f3e91f3a94fdae497d) @@ -279,6 +279,16 @@ } item.setBurningQuestion(question); } + + //find general burning question + String generalBurningQuestion = ""; + for (ScratchieBurningQuestion burningQuestion : burningQuestions) { + if (burningQuestion.isGeneralQuestion()) { + generalBurningQuestion = burningQuestion.getQuestion(); + break; + } + } + sessionMap.put(ScratchieConstants.ATTR_GENERAL_BURNING_QUESTION, generalBurningQuestion); } // calculate max score @@ -634,33 +644,23 @@ break; } } - + + String oldQuestion = item.getBurningQuestion(); final String question = request.getParameter(ScratchieConstants.ATTR_BURNING_QUESTION_PREFIX + i); - //question = question.replaceAll("[\n\r\f]", ""); - - //if burning question is not blank save it - if (StringUtils.isNotBlank(question)) { - - //skip updating if the value wasn't changed - if (item.getBurningQuestion() != null && item.getBurningQuestion().equals(question)) { - continue; - } - - // update new entry - tryExecute(new Callable() { - @Override - public Object call() throws ScratchieApplicationException { - LearningAction.service.saveBurningQuestion(sessionId, itemUid, question); - return null; - } - }); - - //update question in sessionMap - item.setBurningQuestion(question); - } - - } + // update question in sessionMap + item.setBurningQuestion(question); + // update new entry + saveBurningQuestions(sessionId, itemUid, question, oldQuestion); + } + + //handle general burning question + final String generalQuestion = request.getParameter(ScratchieConstants.ATTR_GENERAL_BURNING_QUESTION); + String oldGeneralQuestion = (String) sessionMap.get(ScratchieConstants.ATTR_GENERAL_BURNING_QUESTION); + saveBurningQuestions(sessionId, null, generalQuestion, oldGeneralQuestion); + // update general question in sessionMap + sessionMap.put(ScratchieConstants.ATTR_GENERAL_BURNING_QUESTION, generalQuestion); + boolean isNotebookSubmitted = sessionMap.get(ScratchieConstants.ATTR_REFLECTION_ENTRY) != null; if (scratchie.isReflectOnActivity() && !isNotebookSubmitted) { return newReflection(mapping, form, request, response); @@ -669,7 +669,24 @@ } } + + private void saveBurningQuestions(final Long sessionId, final Long itemUid, final String question, + String oldQuestion) throws ScratchieApplicationException { + // if burning question is blank or is the same as before - skip saving it + if (StringUtils.isBlank(question) || question.equals(oldQuestion)) { + return; + } + // update new entry + tryExecute(new Callable() { + @Override + public Object call() throws ScratchieApplicationException { + LearningAction.service.saveBurningQuestion(sessionId, itemUid, question); + return null; + } + }); + } + /** * Display empty reflection form. * Index: lams_tool_scratchie/web/pages/learning/burningQuestions.jsp =================================================================== diff -u -r2adb14cdb105f3e0e72bd3c052e9dc254949049b -r447eb31b1898bb52f8c723f3e91f3a94fdae497d --- lams_tool_scratchie/web/pages/learning/burningQuestions.jsp (.../burningQuestions.jsp) (revision 2adb14cdb105f3e0e72bd3c052e9dc254949049b) +++ lams_tool_scratchie/web/pages/learning/burningQuestions.jsp (.../burningQuestions.jsp) (revision 447eb31b1898bb52f8c723f3e91f3a94fdae497d) @@ -75,9 +75,14 @@

-


+


+ +

+ +


+
Index: lams_tool_scratchie/web/pages/learning/results.jsp =================================================================== diff -u -r4f28fc22200faa617609984b6478f093b18d6d72 -r447eb31b1898bb52f8c723f3e91f3a94fdae497d --- lams_tool_scratchie/web/pages/learning/results.jsp (.../results.jsp) (revision 4f28fc22200faa617609984b6478f093b18d6d72) +++ lams_tool_scratchie/web/pages/learning/results.jsp (.../results.jsp) (revision 447eb31b1898bb52f8c723f3e91f3a94fdae497d) @@ -139,6 +139,24 @@ + + + + + + +
+ + + + + - + + + + + +
Index: lams_tool_scratchie/web/pages/monitoring/summary.jsp =================================================================== diff -u -r2adb14cdb105f3e0e72bd3c052e9dc254949049b -r447eb31b1898bb52f8c723f3e91f3a94fdae497d --- lams_tool_scratchie/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 2adb14cdb105f3e0e72bd3c052e9dc254949049b) +++ lams_tool_scratchie/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 447eb31b1898bb52f8c723f3e91f3a94fdae497d) @@ -314,6 +314,11 @@
+ + +
+
+