Index: lams_central/src/java/org/lamsfoundation/lams/web/qb/EditQbQuestionController.java =================================================================== diff -u -r9ebb0762842cde9a358626a248132bc7ca650f3c -rf0b909d0e482fe674e3c3d2f40ec7cc8d19b6803 --- lams_central/src/java/org/lamsfoundation/lams/web/qb/EditQbQuestionController.java (.../EditQbQuestionController.java) (revision 9ebb0762842cde9a358626a248132bc7ca650f3c) +++ lams_central/src/java/org/lamsfoundation/lams/web/qb/EditQbQuestionController.java (.../EditQbQuestionController.java) (revision f0b909d0e482fe674e3c3d2f40ec7cc8d19b6803) @@ -116,8 +116,7 @@ //populate question information to its form for editing form.setUid(qbQuestion.getUid()); form.setQuestionId(qbQuestion.getQuestionId()); - //TODO remove hardcoded value, once we transfer contentFolderId from old DB entries - form.setContentFolderID(qbQuestion.getContentFolderId() == null ? "temp" : qbQuestion.getContentFolderId()); + form.setContentFolderID(qbQuestion.getContentFolderId()); form.setTitle(qbQuestion.getName()); form.setDescription(qbQuestion.getDescription()); form.setMaxMark(qbQuestion.getMaxMark() == null ? 1 : qbQuestion.getMaxMark()); @@ -149,7 +148,7 @@ List unitList = qbQuestion.getUnits(); request.setAttribute(QbConstants.ATTR_UNIT_LIST, unitList); } - + QbUtils.fillFormWithUserCollections(qbService, form, qbQuestionUid); return findForwardByQuestionType(qbQuestion.getType()); Index: lams_common/src/java/org/lamsfoundation/lams/commonContext.xml =================================================================== diff -u -r67db3e1b2ada0d59ff98c807a54282783797c5e6 -rf0b909d0e482fe674e3c3d2f40ec7cc8d19b6803 --- lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision 67db3e1b2ada0d59ff98c807a54282783797c5e6) +++ lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision f0b909d0e482fe674e3c3d2f40ec7cc8d19b6803) @@ -273,6 +273,7 @@ + Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java =================================================================== diff -u -r951f0a5804a860ca0b359488d0b7a508d6398ecf -rf0b909d0e482fe674e3c3d2f40ec7cc8d19b6803 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java (.../ExportToolContentService.java) (revision 951f0a5804a860ca0b359488d0b7a508d6398ecf) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java (.../ExportToolContentService.java) (revision f0b909d0e482fe674e3c3d2f40ec7cc8d19b6803) @@ -115,6 +115,8 @@ import org.lamsfoundation.lams.learningdesign.dto.TransitionDTO; import org.lamsfoundation.lams.lesson.LessonClass; import org.lamsfoundation.lams.planner.PedagogicalPlannerActivityMetadata; +import org.lamsfoundation.lams.qb.dao.IQbDAO; +import org.lamsfoundation.lams.qb.model.QbQuestion; import org.lamsfoundation.lams.tool.SystemTool; import org.lamsfoundation.lams.tool.Tool; import org.lamsfoundation.lams.tool.ToolAdapterContentManager; @@ -238,6 +240,8 @@ private ILearningLibraryDAO learningLibraryDAO; + private IQbDAO qbDAO; + /** * Class of tool attachment file handler class and relative fields information container. */ @@ -770,6 +774,16 @@ contentManager.importToolContent(newContent.getToolContentId(), importer.getUserId(), toolPath, fromVersion, toVersion); } + + List activityQbQuestions = qbDAO + .getQuestionsByToolContentId(newContent.getToolContentId()); + for (QbQuestion qbQuestion : activityQbQuestions) { + if (qbQuestion.getContentFolderId() == null) { + qbQuestion.setContentFolderId(ldDto.getContentFolderID()); + qbDAO.update(qbQuestion); + } + } + log.debug("Tool content import success."); } catch (Exception e) { String error = messageService.getMessage(ExportToolContentService.ERROR_SERVICE_ERROR, @@ -2025,6 +2039,10 @@ this.learningDesignDAO = learningDesignDAO; } + public void setQbDAO(IQbDAO qbDAO) { + this.qbDAO = qbDAO; + } + public ILicenseDAO getLicenseDAO() { return licenseDAO; } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentImportContentVersionFilter.java =================================================================== diff -u -r158cf4e025192a81f58bb03b880f2182d548790a -rf0b909d0e482fe674e3c3d2f40ec7cc8d19b6803 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentImportContentVersionFilter.java (.../AssessmentImportContentVersionFilter.java) (revision 158cf4e025192a81f58bb03b880f2182d548790a) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentImportContentVersionFilter.java (.../AssessmentImportContentVersionFilter.java) (revision f0b909d0e482fe674e3c3d2f40ec7cc8d19b6803) @@ -22,16 +22,11 @@ package org.lamsfoundation.lams.tool.assessment.service; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; - import org.lamsfoundation.lams.learningdesign.service.ToolContentVersionFilter; import org.lamsfoundation.lams.qb.QbUtils; import org.lamsfoundation.lams.tool.assessment.model.Assessment; @@ -117,19 +112,6 @@ * Migration to Question Bank */ public void up20190704To20190809(String toolFilePath) throws IOException { - // find LD's content folder ID to use it in new QB questions - String contentFolderId = null; - try { - File ldFile = new File(new File(toolFilePath).getParentFile().getParentFile(), "learning_design.xml"); - DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - Document doc = docBuilder.parse(new FileInputStream(ldFile)); - Element ldRoot = doc.getDocumentElement(); - contentFolderId = XMLUtil.getChildElementValue(ldRoot, "contentFolderID", null); - } catch (Exception e) { - throw new IOException("Error while extracting LD content folder ID for Question Bank migration", e); - } - final String contentFolderIdFinal = contentFolderId; - // tell which file to process and what to do with its root element transformXML(toolFilePath, toolRoot -> { Document document = toolRoot.getOwnerDocument(); @@ -155,7 +137,6 @@ XMLUtil.rewriteTextElement(assessmentQuestion, qbQuestion, "type", "type", null, false, true); // Question ID will be filled later as it requires QbService XMLUtil.addTextElement(qbQuestion, "version", "1"); - XMLUtil.addTextElement(qbQuestion, "contentFolderId", contentFolderIdFinal); XMLUtil.rewriteTextElement(toolRoot, qbQuestion, "created", "createDate", defaultCreateDate, true, false); XMLUtil.rewriteTextElement(assessmentQuestion, qbQuestion, "title", "name", null, false, true, Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McImportContentVersionFilter.java =================================================================== diff -u -r3803dff30971c11bf3adc1d3c41e3a1783b9faa4 -rf0b909d0e482fe674e3c3d2f40ec7cc8d19b6803 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McImportContentVersionFilter.java (.../McImportContentVersionFilter.java) (revision 3803dff30971c11bf3adc1d3c41e3a1783b9faa4) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McImportContentVersionFilter.java (.../McImportContentVersionFilter.java) (revision f0b909d0e482fe674e3c3d2f40ec7cc8d19b6803) @@ -1,14 +1,9 @@ package org.lamsfoundation.lams.tool.mc.service; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; - import org.lamsfoundation.lams.learningdesign.service.ToolContentVersionFilter; import org.lamsfoundation.lams.qb.QbUtils; import org.lamsfoundation.lams.tool.mc.model.McContent; @@ -84,19 +79,6 @@ * Migration to Question Bank */ public void up20190517To20190809(String toolFilePath) throws IOException { - // find LD's content folder ID to use it in new QB questions - String contentFolderId = null; - try { - File ldFile = new File(new File(toolFilePath).getParentFile().getParentFile(), "learning_design.xml"); - DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - Document doc = docBuilder.parse(new FileInputStream(ldFile)); - Element ldRoot = doc.getDocumentElement(); - contentFolderId = XMLUtil.getChildElementValue(ldRoot, "contentFolderID", null); - } catch (Exception e) { - throw new IOException("Error while extracting LD content folder ID for Question Bank migration", e); - } - final String contentFolderIdFinal = contentFolderId; - // tell which file to process and what to do with its root element transformXML(toolFilePath, toolRoot -> { Document document = toolRoot.getOwnerDocument(); @@ -124,7 +106,6 @@ XMLUtil.addTextElement(qbQuestion, "type", "1"); // Question ID will be filled later as it requires QbService XMLUtil.addTextElement(qbQuestion, "version", "1"); - XMLUtil.addTextElement(qbQuestion, "contentFolderId", contentFolderIdFinal); XMLUtil.addTextElement(qbQuestion, "createDate", createDate); XMLUtil.rewriteTextElement(mcQuestion, qbQuestion, "mark", "maxMark", "1", false, true); XMLUtil.rewriteTextElement(mcQuestion, qbQuestion, "feedback", "feedback", null, false, true, Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieImportContentVersionFilter.java =================================================================== diff -u -r136519c454662b99974e8956475b84ac0a49bc20 -rf0b909d0e482fe674e3c3d2f40ec7cc8d19b6803 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieImportContentVersionFilter.java (.../ScratchieImportContentVersionFilter.java) (revision 136519c454662b99974e8956475b84ac0a49bc20) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieImportContentVersionFilter.java (.../ScratchieImportContentVersionFilter.java) (revision f0b909d0e482fe674e3c3d2f40ec7cc8d19b6803) @@ -22,15 +22,10 @@ package org.lamsfoundation.lams.tool.scratchie.service; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; - import org.lamsfoundation.lams.learningdesign.service.ToolContentVersionFilter; import org.lamsfoundation.lams.qb.QbUtils; import org.lamsfoundation.lams.tool.scratchie.dto.QbOptionDTO; @@ -99,24 +94,11 @@ this.removeField(ScratchieItem.class, "userMark"); this.removeField(ScratchieItem.class, "userAttempts"); } - + /** * Migration to Question Bank */ public void up20190103To20190809(String toolFilePath) throws IOException { - // find LD's content folder ID to use it in new QB questions - String contentFolderId = null; - try { - File ldFile = new File(new File(toolFilePath).getParentFile().getParentFile(), "learning_design.xml"); - DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - Document doc = docBuilder.parse(new FileInputStream(ldFile)); - Element ldRoot = doc.getDocumentElement(); - contentFolderId = XMLUtil.getChildElementValue(ldRoot, "contentFolderID", null); - } catch (Exception e) { - throw new IOException("Error while extracting LD content folder ID for Question Bank migration", e); - } - final String contentFolderIdFinal = contentFolderId; - // tell which file to process and what to do with its root element transformXML(toolFilePath, toolRoot -> { Document document = toolRoot.getOwnerDocument(); @@ -140,7 +122,6 @@ XMLUtil.addTextElement(qbQuestion, "type", "1"); // Question ID will be filled later as it requires QbService XMLUtil.addTextElement(qbQuestion, "version", "1"); - XMLUtil.addTextElement(qbQuestion, "contentFolderId", contentFolderIdFinal); XMLUtil.rewriteTextElement(scratchieQuestion, qbQuestion, "createDate", "createDate", new SimpleDateFormat(DateUtil.EXPORT_LD_FORMAT).format(new Date()), true, true); XMLUtil.rewriteTextElement(scratchieQuestion, qbQuestion, "title", "name", null, false, true,