Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUploadedFile.java =================================================================== diff -u -r5a47424b3331816b71e4c95daf7f56657a576e2f -r594176a36e97d089efd667a8ecf76114d11aa48c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUploadedFile.java (.../QaUploadedFile.java) (revision 5a47424b3331816b71e4c95daf7f56657a576e2f) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUploadedFile.java (.../QaUploadedFile.java) (revision 594176a36e97d089efd667a8ecf76114d11aa48c) @@ -92,10 +92,14 @@ try { - NodeKey copiedNodeKey = toolContentHandler.copyFile(new Long(qaUploadedFile.getUuid())); - logger.debug("copied NodeKey: " + copiedNodeKey); - logger.debug("copied NodeKey uuid: " + copiedNodeKey.getUuid().toString()); - newMcUploadedFile = new QaUploadedFile(copiedNodeKey.getUuid().toString(), + String fileUuid = qaUploadedFile.getUuid(); + if(toolContentHandler != null){ + NodeKey copiedNodeKey = toolContentHandler.copyFile(new Long(qaUploadedFile.getUuid())); + logger.debug("copied NodeKey: " + copiedNodeKey); + logger.debug("copied NodeKey uuid: " + copiedNodeKey.getUuid().toString()); + fileUuid = copiedNodeKey.getUuid().toString(); + } + newMcUploadedFile = new QaUploadedFile(fileUuid, qaUploadedFile.isFileOnline(), qaUploadedFile.getFileName(), newMcContent); Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java =================================================================== diff -u -r5a47424b3331816b71e4c95daf7f56657a576e2f -r594176a36e97d089efd667a8ecf76114d11aa48c --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java (.../QaServicePOJO.java) (revision 5a47424b3331816b71e4c95daf7f56657a576e2f) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java (.../QaServicePOJO.java) (revision 594176a36e97d089efd667a8ecf76114d11aa48c) @@ -26,6 +26,7 @@ import java.util.Date; import java.util.Iterator; import java.util.List; +import java.util.Set; import java.util.TreeSet; import org.apache.log4j.Logger; @@ -44,6 +45,9 @@ import org.lamsfoundation.lams.contentrepository.service.RepositoryProxy; import org.lamsfoundation.lams.contentrepository.service.SimpleCredentials; import org.lamsfoundation.lams.learning.service.ILearnerService; +import org.lamsfoundation.lams.learningdesign.service.ExportToolContentException; +import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; +import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; import org.lamsfoundation.lams.tool.IToolVO; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolSessionExportOutputData; @@ -117,7 +121,8 @@ private ILamsToolService toolService; private ILearnerService learnerService; private IAuditService auditService; - + private IExportToolContentService exportContentService; + public void configureContentRepository() throws QaApplicationException { logger.debug("retrieved repService: " + repositoryService); cred = new SimpleCredentials(repositoryUser, repositoryId); @@ -1309,21 +1314,73 @@ * @throws ToolException if any other error occurs */ - public void exportToolContent(Long toolContentId, String toPath) throws DataMissingException, ToolException { + public void exportToolContent(Long toolContentId, String rootPath) throws DataMissingException, ToolException { + QaContent toolContentObj = qaDAO.getQaById(toolContentId); + if(toolContentObj == null) + throw new DataMissingException("Unable to find tool content by given id :" + toolContentId); + + try { + //set ToolContentHandler as null to avoid copy file node in repository again. + toolContentObj = QaContent.newInstance(null,toolContentObj,toolContentId); + + //don't export following fields value + toolContentObj.setQaSessions(null); + Set questions = toolContentObj.getQaQueContents(); + for(QaQueContent question : questions){ + question.setQaQueUsers(null); + question.setQaContent(null); + question.setQaUsrResps(null); + question.setUserResponses(null); + } + Set files = toolContentObj.getQaUploadedFiles(); + for(QaUploadedFile file : files){ + file.setQaContent(null); + } + + exportContentService.registerFileClassForExport(QaUploadedFile.class.getName(),"uuid",null); + exportContentService.exportToolContent( toolContentId, toolContentObj,qaToolContentHandler, rootPath); + } catch (ExportToolContentException e) { + throw new ToolException(e); + } catch (ItemNotFoundException e) { + throw new ToolException(e); + } catch (RepositoryCheckedException e) { + throw new ToolException(e); + } } /** * Import the XML fragment for the tool's content, along with any files needed * for the content. * @throws ToolException if any other error occurs */ - public void importToolContent(Long toolContentId, String toolContentPath) throws ToolException { - + public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath) throws ToolException { + try { + exportContentService.registerFileClassForImport(QaUploadedFile.class.getName(),"uuid",null,"fileName","fileProperty",null,null); + + Object toolPOJO = exportContentService.importToolContent(toolContentPath,qaToolContentHandler); + if(!(toolPOJO instanceof QaContent)) + throw new ImportToolContentException("Import QA tool content failed. Deserialized object is " + toolPOJO); + QaContent toolContentObj = (QaContent) toolPOJO; + +// reset it to new toolContentId + toolContentObj.setQaContentId(toolContentId); + toolContentObj.setCreatedBy(newUserUid); + + //set back the tool content + Set questions = toolContentObj.getQaQueContents(); + for(QaQueContent question : questions){ + question.setQaContent(toolContentObj); + } + Set files = toolContentObj.getQaUploadedFiles(); + for(QaUploadedFile file : files){ + file.setQaContent(toolContentObj); + } + qaDAO.saveOrUpdateQa(toolContentObj); + } catch (ImportToolContentException e) { + throw new ToolException(e); + } } - public void importToolContent(String toolContentPath) throws ToolException { - } - /** * it is possible that the tool session id already exists in the tool sessions table * as the users from the same session are involved. @@ -1876,6 +1933,16 @@ public void setAuditService(IAuditService auditService) { this.auditService = auditService; } + + + public IExportToolContentService getExportContentService() { + return exportContentService; + } + + + public void setExportContentService(IExportToolContentService exportContentService) { + this.exportContentService = exportContentService; + } }