Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUploadedFile.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/Attic/QaUploadedFile.java,v diff -u -r1.7 -r1.8 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUploadedFile.java 7 Apr 2006 00:44:22 -0000 1.7 +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUploadedFile.java 6 Jun 2006 07:12:18 -0000 1.8 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/qaApplicationContext.xml,v diff -u -r1.16 -r1.17 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/qaApplicationContext.xml 18 May 2006 01:56:59 -0000 1.16 +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/qaApplicationContext.xml 6 Jun 2006 07:12:18 -0000 1.17 @@ -81,6 +81,7 @@ + Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java,v diff -u -r1.54 -r1.55 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java 6 Jun 2006 04:04:58 -0000 1.54 +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java 6 Jun 2006 07:12:18 -0000 1.55 @@ -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; + } }