Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUploadedFile.java =================================================================== diff -u -r65166da92a6f0f4ff73acb92b95672e237b25742 -rc949a92559348f5942932b29311660875e373b78 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUploadedFile.java (.../QaUploadedFile.java) (revision 65166da92a6f0f4ff73acb92b95672e237b25742) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUploadedFile.java (.../QaUploadedFile.java) (revision c949a92559348f5942932b29311660875e373b78) @@ -24,6 +24,7 @@ import java.io.Serializable; +import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; @@ -67,6 +68,7 @@ /** persistent field */ private QaContent qaContent; + public QaUploadedFile(){}; /** full constructor */ @@ -218,4 +220,20 @@ else return (int) (submissionId.longValue() - file.submissionId.longValue()); } + + public String getFileProperty() { + if (isFileOnline()) + { + return IToolContentHandler.TYPE_ONLINE; + } + else + return IToolContentHandler.TYPE_OFFLINE; + } + + public void setFileProperty(String fileProperty) { + if(StringUtils.equals(IToolContentHandler.TYPE_ONLINE,fileProperty)) + this.fileOnline = true; + else + this.fileOnline = false; + } } Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/qaApplicationContext.xml =================================================================== diff -u -rab1fbeffaf558570ec5d2b3e379e26cecbd9a618 -rc949a92559348f5942932b29311660875e373b78 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/qaApplicationContext.xml (.../qaApplicationContext.xml) (revision ab1fbeffaf558570ec5d2b3e379e26cecbd9a618) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/qaApplicationContext.xml (.../qaApplicationContext.xml) (revision c949a92559348f5942932b29311660875e373b78) @@ -81,6 +81,7 @@ + Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java =================================================================== diff -u -rcc504e79fcfddaab61fdb673e9866a1b57c2d12c -rc949a92559348f5942932b29311660875e373b78 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java (.../QaServicePOJO.java) (revision cc504e79fcfddaab61fdb673e9866a1b57c2d12c) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java (.../QaServicePOJO.java) (revision c949a92559348f5942932b29311660875e373b78) @@ -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,7 +1314,38 @@ * @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 ResourceToolContentHandler as null to avoid copy file node in repository again. + toolContentObj = QaContent.newInstance(qaToolContentHandler,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); + } } /** @@ -1318,7 +1354,31 @@ * @throws ToolException if any other error occurs */ 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); + } } /** @@ -1873,6 +1933,16 @@ public void setAuditService(IAuditService auditService) { this.auditService = auditService; } + + + public IExportToolContentService getExportContentService() { + return exportContentService; + } + + + public void setExportContentService(IExportToolContentService exportContentService) { + this.exportContentService = exportContentService; + } }