Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/IQbToolService.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/tool/service/IQbToolService.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/tool/service/IQbToolService.java (revision 22c4cfdabd7d9f478114c9ba5ec1c0aeff784c10) @@ -0,0 +1,19 @@ +package org.lamsfoundation.lams.tool.service; + +import java.util.List; + +import org.lamsfoundation.lams.qb.model.QbQuestion; + +/** + * 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. + */ + void replaceQuestions(long toolContentId, List newQuestions); +} \ No newline at end of file Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml =================================================================== diff -u -r2e9ee1c2451a05981f05e9edf89bb3356cf2b147 -r22c4cfdabd7d9f478114c9ba5ec1c0aeff784c10 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml (.../mcApplicationContext.xml) (revision 2e9ee1c2451a05981f05e9edf89bb3356cf2b147) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml (.../mcApplicationContext.xml) (revision 22c4cfdabd7d9f478114c9ba5ec1c0aeff784c10) @@ -100,6 +100,7 @@ PROPAGATION_REQUIRED,-McApplicationException PROPAGATION_REQUIRED, -MccpApplicationException PROPAGATION_REQUIRED,-McApplicationException + PROPAGATION_REQUIRED, -MccpApplicationException PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-McApplicationException PROPAGATION_REQUIRED,-McApplicationException Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McService.java =================================================================== diff -u -rbed43f31ad918bbd7f19f6db56fc90fcffcc37bd -r22c4cfdabd7d9f478114c9ba5ec1c0aeff784c10 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McService.java (.../McService.java) (revision bed43f31ad918bbd7f19f6db56fc90fcffcc37bd) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McService.java (.../McService.java) (revision 22c4cfdabd7d9f478114c9ba5ec1c0aeff784c10) @@ -99,6 +99,7 @@ import org.lamsfoundation.lams.tool.mc.util.McSessionComparator; import org.lamsfoundation.lams.tool.mc.util.McStringComparator; 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,8 @@ * * @author Ozgur Demirtas */ -public class McService implements IMcService, ToolContentManager, ToolSessionManager, ToolRestManager, McAppConstants { +public class McService + implements IMcService, ToolContentManager, ToolSessionManager, ToolRestManager, McAppConstants, IQbToolService { private static Logger logger = Logger.getLogger(McService.class.getName()); private IMcContentDAO mcContentDAO; @@ -2117,6 +2119,24 @@ : IQbService.QUESTION_MODIFIED_NONE; } + @Override + public void replaceQuestions(long toolContentId, List newQuestions) { + // remove all existing questions + McContent mcContent = getMcContent(toolContentId); + for (McQueContent mcQuestion : mcContent.getMcQueContents()) { + mcQueContentDAO.delete(mcQuestion); + } + // this is needed, otherwise Hibernate wants to re-save the deleted MC questions + mcContent.getMcQueContents().clear(); + + // populate MC with new questions + int displayOrder = 1; + for (QbQuestion qbQuestion : newQuestions) { + McQueContent mcQuestion = new McQueContent(qbQuestion, displayOrder++, mcContent); + mcQueContentDAO.insert(mcQuestion); + } + } + private void releaseQbQuestionFromCache(QbQuestion qbQuestion) { mcQueContentDAO.releaseFromCache(qbQuestion); for (QbOption option : qbQuestion.getQbOptions()) {