Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/chatApplicationContext.xml =================================================================== diff -u -r7312ae351ea504413d8b1976d9ed866c91eceb95 -rb1386844a7b440e82e8f1f02e5ce840ffbf19ed3 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/chatApplicationContext.xml (.../chatApplicationContext.xml) (revision 7312ae351ea504413d8b1976d9ed866c91eceb95) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/chatApplicationContext.xml (.../chatApplicationContext.xml) (revision b1386844a7b440e82e8f1f02e5ce840ffbf19ed3) @@ -38,6 +38,7 @@ + Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/model/Chat.java =================================================================== diff -u -r3c0a84b7023214fcdfc7e023f810aea87166957c -rb1386844a7b440e82e8f1f02e5ce840ffbf19ed3 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/model/Chat.java (.../Chat.java) (revision 3c0a84b7023214fcdfc7e023f810aea87166957c) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/model/Chat.java (.../Chat.java) (revision b1386844a7b440e82e8f1f02e5ce840ffbf19ed3) @@ -85,6 +85,7 @@ private Set chatSessions; + //*********** NON Persisit fields private IToolContentHandler toolContentHandler; // Constructors @@ -402,4 +403,12 @@ } return chat; } + + public IToolContentHandler getToolContentHandler() { + return toolContentHandler; + } + + public void setToolContentHandler(IToolContentHandler toolContentHandler) { + this.toolContentHandler = toolContentHandler; + } } Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java =================================================================== diff -u -rcc504e79fcfddaab61fdb673e9866a1b57c2d12c -rb1386844a7b440e82e8f1f02e5ce840ffbf19ed3 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java (.../ChatService.java) (revision cc504e79fcfddaab61fdb673e9866a1b57c2d12c) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java (.../ChatService.java) (revision b1386844a7b440e82e8f1f02e5ce840ffbf19ed3) @@ -28,6 +28,7 @@ import java.io.IOException; import java.util.Iterator; import java.util.List; +import java.util.Set; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; @@ -51,6 +52,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.ToolContentManager; import org.lamsfoundation.lams.tool.ToolSessionExportOutputData; import org.lamsfoundation.lams.tool.ToolSessionManager; @@ -106,6 +110,8 @@ private IRepositoryService repositoryService = null; + private IExportToolContentService exportContentService; + public ChatService() { super(); // TODO Auto-generated constructor stub @@ -240,7 +246,25 @@ * @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 { + Chat toolContentObj = chatDAO.getByContentId(toolContentId); + if(toolContentObj == null) + throw new DataMissingException("Unable to find tool content by given id :" + toolContentId); + + //set ResourceToolContentHandler as null to avoid copy file node in repository again. + toolContentObj = Chat.newInstance(toolContentObj,toolContentId,null); + toolContentObj.setToolContentHandler(null); + toolContentObj.setChatSessions(null); + Set atts = toolContentObj.getChatAttachments(); + for(ChatAttachment att: atts){ + att.setChat(null); + } + try { + exportContentService.registerFileClassForExport(ChatAttachment.class.getName(),"fileUuid","fileVersionId"); + exportContentService.exportToolContent( toolContentId, toolContentObj,chatToolContentHandler, rootPath); + } catch (ExportToolContentException e) { + throw new ToolException(e); + } } /** @@ -249,7 +273,23 @@ * @throws ToolException if any other error occurs */ public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath) throws ToolException { - + try { + exportContentService.registerFileClassForImport(ChatAttachment.class.getName() + ,"fileUuid","fileVersionId","fileName","fileType",null,null); + + Object toolPOJO = exportContentService.importToolContent(toolContentPath,chatToolContentHandler); + if(!(toolPOJO instanceof Chat)) + throw new ImportToolContentException("Import Chat tool content failed. Deserialized object is " + toolPOJO); + Chat toolContentObj = (Chat) toolPOJO; + +// reset it to new toolContentId + toolContentObj.setToolContentId(toolContentId); + toolContentObj.setCreateBy(new Long(newUserUid.longValue())); + + chatDAO.saveOrUpdate(toolContentObj); + } catch (ImportToolContentException e) { + throw new ToolException(e); + } } /* ********** IChatService Methods ************************************** */ @@ -684,4 +724,12 @@ this.learnerService = learnerService; } + public IExportToolContentService getExportContentService() { + return exportContentService; + } + + public void setExportContentService(IExportToolContentService exportContentService) { + this.exportContentService = exportContentService; + } + }