Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/IQbToolService.java =================================================================== diff -u -r22c4cfdabd7d9f478114c9ba5ec1c0aeff784c10 -r3649999936753b6c474d93ba9fa603bfd0d18a2c --- lams_common/src/java/org/lamsfoundation/lams/tool/service/IQbToolService.java (.../IQbToolService.java) (revision 22c4cfdabd7d9f478114c9ba5ec1c0aeff784c10) +++ lams_common/src/java/org/lamsfoundation/lams/tool/service/IQbToolService.java (.../IQbToolService.java) (revision 3649999936753b6c474d93ba9fa603bfd0d18a2c) @@ -7,13 +7,13 @@ /** * It is an optional interface implemented by tools' services. * It facilitates work with Question Bank. - * + * * @author Marcin Cieslak * */ public interface IQbToolService { /** - * Replaces existing questions in an activity with ones provided as a parameter. + * Replaces existing questions in an activity with ones provided as a parameter. */ - void replaceQuestions(long toolContentId, List newQuestions); + void replaceQuestions(long toolContentId, String newActivityName, List newQuestions); } \ No newline at end of file Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/assessmentApplicationContext.xml =================================================================== diff -u -rf9c66e78afa51f175afcaf22ee81f9b3460afea8 -r3649999936753b6c474d93ba9fa603bfd0d18a2c --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/assessmentApplicationContext.xml (.../assessmentApplicationContext.xml) (revision f9c66e78afa51f175afcaf22ee81f9b3460afea8) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/assessmentApplicationContext.xml (.../assessmentApplicationContext.xml) (revision 3649999936753b6c474d93ba9fa603bfd0d18a2c) @@ -153,6 +153,7 @@ PROPAGATION_REQUIRED,+java.lang.Exception PROPAGATION_REQUIRED,+java.lang.Exception readOnly, PROPAGATION_REQUIRED,+java.lang.Exception + PROPAGATION_REQUIRED Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -r3004d09a72bb86597e40ef2277e1e158b6b62b0a -r3649999936753b6c474d93ba9fa603bfd0d18a2c --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 3004d09a72bb86597e40ef2277e1e158b6b62b0a) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 3649999936753b6c474d93ba9fa603bfd0d18a2c) @@ -104,6 +104,7 @@ import org.lamsfoundation.lams.tool.exception.DataMissingException; import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.service.ILamsToolService; +import org.lamsfoundation.lams.tool.service.IQbToolService; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; @@ -121,7 +122,7 @@ * @author Andrey Balan */ public class AssessmentServiceImpl - implements IAssessmentService, ToolContentManager, ToolSessionManager, ToolRestManager { + implements IAssessmentService, ToolContentManager, ToolSessionManager, ToolRestManager, IQbToolService { private static Logger log = Logger.getLogger(AssessmentServiceImpl.class.getName()); private AssessmentDAO assessmentDao; @@ -801,8 +802,7 @@ Pattern pattern = Pattern.compile(regex, java.util.regex.Pattern.CASE_INSENSITIVE | java.util.regex.Pattern.UNICODE_CASE); if (pattern.matcher(answer).matches()) { - String answerFloatStr = answer.substring(0, - answer.length() - unit.getName().length()); + String answerFloatStr = answer.substring(0, answer.length() - unit.getName().length()); try { float answerFloat = Float.valueOf(answerFloatStr); answerFloat = answerFloat / unit.getMultiplier(); @@ -2525,6 +2525,47 @@ return summary; } + @Override + public void replaceQuestions(long toolContentId, String newActivityName, List newQuestions) { + Assessment assessment = getAssessmentByContentId(toolContentId); + if (newActivityName != null) { + assessment.setTitle(newActivityName); + assessmentDao.update(assessment); + } + + // remove all existing question references + for (QuestionReference oldReference : assessment.getQuestionReferences()) { + assessmentQuestionDao.delete(oldReference); + } + assessment.getQuestionReferences().clear(); + + // remove all existing questions + for (AssessmentQuestion oldQuestion : assessment.getQuestions()) { + assessmentQuestionDao.delete(oldQuestion); + } + // this is needed, otherwise Hibernate wants to re-save the deleted Assessment questions + assessment.getQuestions().clear(); + + // populate Assessment with new questions and references + int displayOrder = 1; + for (QbQuestion qbQuestion : newQuestions) { + AssessmentQuestion assessmentQuestion = new AssessmentQuestion(); + assessmentQuestion.setDisplayOrder(displayOrder++); + assessmentQuestion.setQbQuestion(qbQuestion); + assessmentQuestion.setToolContentId(toolContentId); + assessmentQuestionDao.insert(assessmentQuestion); + assessment.getQuestions().add(assessmentQuestion); + + QuestionReference questionReference = new QuestionReference(); + questionReference.setQuestion(assessmentQuestion); + questionReference.setSequenceId(displayOrder); + assessmentQuestionDao.insert(questionReference); + assessment.getQuestionReferences().add(questionReference); + + displayOrder++; + } + assessmentDao.update(assessment); + } // ***************************************************************************** // private methods // ***************************************************************************** Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McService.java =================================================================== diff -u -r22c4cfdabd7d9f478114c9ba5ec1c0aeff784c10 -r3649999936753b6c474d93ba9fa603bfd0d18a2c --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McService.java (.../McService.java) (revision 22c4cfdabd7d9f478114c9ba5ec1c0aeff784c10) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McService.java (.../McService.java) (revision 3649999936753b6c474d93ba9fa603bfd0d18a2c) @@ -2120,9 +2120,14 @@ } @Override - public void replaceQuestions(long toolContentId, List newQuestions) { - // remove all existing questions + public void replaceQuestions(long toolContentId, String newActivityName, List newQuestions) { McContent mcContent = getMcContent(toolContentId); + if (newActivityName != null) { + mcContent.setTitle(newActivityName); + mcContentDAO.updateMcContent(mcContent); + } + + // remove all existing questions for (McQueContent mcQuestion : mcContent.getMcQueContents()) { mcQueContentDAO.delete(mcQuestion); } Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/scratchieApplicationContext.xml =================================================================== diff -u -rb765f567ba3ca9ca048b434d243d94d865ef363c -r3649999936753b6c474d93ba9fa603bfd0d18a2c --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/scratchieApplicationContext.xml (.../scratchieApplicationContext.xml) (revision b765f567ba3ca9ca048b434d243d94d865ef363c) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/scratchieApplicationContext.xml (.../scratchieApplicationContext.xml) (revision 3649999936753b6c474d93ba9fa603bfd0d18a2c) @@ -158,6 +158,7 @@ PROPAGATION_REQUIRED,+java.lang.Exception PROPAGATION_REQUIRED,+java.lang.Exception PROPAGATION_REQUIRED + PROPAGATION_REQUIRED Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java =================================================================== diff -u -rbed43f31ad918bbd7f19f6db56fc90fcffcc37bd -r3649999936753b6c474d93ba9fa603bfd0d18a2c --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision bed43f31ad918bbd7f19f6db56fc90fcffcc37bd) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision 3649999936753b6c474d93ba9fa603bfd0d18a2c) @@ -96,6 +96,7 @@ import org.lamsfoundation.lams.tool.scratchie.model.ScratchieUser; import org.lamsfoundation.lams.tool.scratchie.util.ScratchieItemComparator; import org.lamsfoundation.lams.tool.service.ILamsToolService; +import org.lamsfoundation.lams.tool.service.IQbToolService; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; @@ -111,7 +112,7 @@ * @author Andrey Balan */ public class ScratchieServiceImpl - implements IScratchieService, ToolContentManager, ToolSessionManager, ToolRestManager { + implements IScratchieService, ToolContentManager, ToolSessionManager, ToolRestManager, IQbToolService { private static Logger log = Logger.getLogger(ScratchieServiceImpl.class.getName()); private static final ExcelCell[] EMPTY_ROW = new ExcelCell[4]; @@ -1809,6 +1810,34 @@ return toolService.isLastActivity(toolSessionId); } + @Override + public void replaceQuestions(long toolContentId, String newActivityName, List newQuestions) { + Scratchie scratchie = getScratchieByContentId(toolContentId); + if (newActivityName != null) { + scratchie.setTitle(newActivityName); + scratchieDao.update(scratchie); + } + + // remove all existing questions + for (ScratchieItem scratchieItem : scratchie.getScratchieItems()) { + scratchieItemDao.delete(scratchieItem); + } + // this is needed, otherwise Hibernate wants to re-save the deleted Scratchie questions + scratchie.getScratchieItems().clear(); + + // populate Scratchie with new questions + int displayOrder = 1; + for (QbQuestion qbQuestion : newQuestions) { + ScratchieItem scratchieItem = new ScratchieItem(); + scratchieItem.setDisplayOrder(displayOrder++); + scratchieItem.setQbQuestion(qbQuestion); + scratchieItem.setToolContentId(toolContentId); + scratchieItemDao.insert(scratchieItem); + scratchie.getScratchieItems().add(scratchieItem); + } + scratchieDao.update(scratchie); + } + // ***************************************************************************** // set methods for Spring Bean // *****************************************************************************