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;
+ }
}