Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dbupdates/patch20200710.sql =================================================================== diff -u --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dbupdates/patch20200710.sql (revision 0) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dbupdates/patch20200710.sql (revision 31553a7b5db8e0ebd4f38780f360b0d23d7fb156) @@ -0,0 +1,15 @@ +-- Turn off autocommit, so nothing is committed if there is an error +SET AUTOCOMMIT = 0; +SET FOREIGN_KEY_CHECKS=0; +-- Put all sql statements below here + +--LDEV-5050 Essential code is in patch20200710.sql in lams_common, but we can bump tool version here for clarity + +UPDATE lams_tool SET tool_version='20200710' WHERE tool_signature='laasse10'; + +-- Put all sql statements above here + +-- If there were no errors, commit and restore autocommit to on +COMMIT; +SET AUTOCOMMIT = 1; +SET FOREIGN_KEY_CHECKS=1; Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentImportContentVersionFilter.java =================================================================== diff -u -r1c795d3158e0f3d597f1255eec2af8d3bec632ed -r31553a7b5db8e0ebd4f38780f360b0d23d7fb156 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentImportContentVersionFilter.java (.../AssessmentImportContentVersionFilter.java) (revision 1c795d3158e0f3d597f1255eec2af8d3bec632ed) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentImportContentVersionFilter.java (.../AssessmentImportContentVersionFilter.java) (revision 31553a7b5db8e0ebd4f38780f360b0d23d7fb156) @@ -117,9 +117,9 @@ * Migration to Question Bank */ public void up20190704To20190809(String toolFilePath) throws IOException { - //perform all transformations from the previous methods. Do it now as long as the following commands expect Assesment model to be in its latest state + //perform all transformations from the previous methods. Do it now as long as the following commands expect Assesment model to be in its latest state transformXML(toolFilePath); - + // find LD's content folder ID to use it in new QB questions String contentFolderId = null; try { @@ -189,8 +189,8 @@ "prefixAnswersWithLetters", "false", false, true); XMLUtil.rewriteTextElement(assessmentQuestion, qbQuestion, "caseSensitive", "caseSensitive", "false", false, true); - XMLUtil.rewriteTextElement(assessmentQuestion, qbQuestion, "autocompleteEnabled", - "autocompleteEnabled", "false", false, true); + XMLUtil.rewriteTextElement(assessmentQuestion, qbQuestion, "autocompleteEnabled", "autocompleteEnabled", + "false", false, true); XMLUtil.rewriteTextElement(assessmentQuestion, qbQuestion, "correctAnswer", "correctAnswer", "false", false, true); XMLUtil.rewriteTextElement(assessmentQuestion, qbQuestion, "allowRichEditor", "allowRichEditor", @@ -286,8 +286,29 @@ } }); } - + public void up20191016To20191120() { this.addField(Assessment.class, "confidenceLevelsType", "1"); } + + /** + * Move "is required" from QB question to tool + */ + public void up20191120To20200710(String toolFilePath) throws IOException { + + // tell which file to process and what to do with its root element + transformXML(toolFilePath, toolRoot -> { + NodeList assessmentQuestions = toolRoot + .getElementsByTagName("org.lamsfoundation.lams.tool.assessment.model.AssessmentQuestion"); + + for (int assessmentQuestionIndex = 0; assessmentQuestionIndex < assessmentQuestions + .getLength(); assessmentQuestionIndex++) { + Element assessmentQuestion = (Element) assessmentQuestions.item(assessmentQuestionIndex); + Element qbQuestion = (Element) assessmentQuestion.getElementsByTagName("qbQuestion").item(0); + + XMLUtil.rewriteTextElement(qbQuestion, assessmentQuestion, "answerRequired", "answerRequired", "true", + false, true); + } + }); + } } Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dbupdates/patch20200710.sql =================================================================== diff -u --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dbupdates/patch20200710.sql (revision 0) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dbupdates/patch20200710.sql (revision 31553a7b5db8e0ebd4f38780f360b0d23d7fb156) @@ -0,0 +1,15 @@ +-- Turn off autocommit, so nothing is committed if there is an error +SET AUTOCOMMIT = 0; +SET FOREIGN_KEY_CHECKS=0; +-- Put all sql statements below here + +--LDEV-5050 Essential code is in patch20200710.sql in lams_common, but we can bump tool version here for clarity + +UPDATE lams_tool SET tool_version='20200710' WHERE tool_signature='laqa11'; + +-- Put all sql statements above here + +-- If there were no errors, commit and restore autocommit to on +COMMIT; +SET AUTOCOMMIT = 1; +SET FOREIGN_KEY_CHECKS=1; Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaImportContentVersionFilter.java =================================================================== diff -u -re784910cb85086f0951f780d5dd64ed7a039ba5a -r31553a7b5db8e0ebd4f38780f360b0d23d7fb156 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaImportContentVersionFilter.java (.../QaImportContentVersionFilter.java) (revision e784910cb85086f0951f780d5dd64ed7a039ba5a) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaImportContentVersionFilter.java (.../QaImportContentVersionFilter.java) (revision 31553a7b5db8e0ebd4f38780f360b0d23d7fb156) @@ -159,4 +159,23 @@ } }); } + + /** + * Move "is required" from QB question to tool + */ + public void up20190809To20200710(String toolFilePath) throws IOException { + + // tell which file to process and what to do with its root element + transformXML(toolFilePath, toolRoot -> { + NodeList qaQuestions = toolRoot.getElementsByTagName("org.lamsfoundation.lams.tool.qa.model.QaQueContent"); + + // go through each question + for (int qaQuestionIndex = 0; qaQuestionIndex < qaQuestions.getLength(); qaQuestionIndex++) { + Element qaQuestion = (Element) qaQuestions.item(qaQuestionIndex); + Element qbQuestion = (Element) qaQuestion.getElementsByTagName("qbQuestion").item(0); + XMLUtil.rewriteTextElement(qbQuestion, qaQuestion, "answerRequired", "answerRequired", "true", false, + true); + } + }); + } } \ No newline at end of file