Index: lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Forum.hbm.xml =================================================================== diff -u -r4a636f089ddb22f51c9277aa191e90ab61880515 -re280cd832df020c33df6730fbee453add9e6caee --- lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Forum.hbm.xml (.../Forum.hbm.xml) (revision 4a636f089ddb22f51c9277aa191e90ab61880515) +++ lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Forum.hbm.xml (.../Forum.hbm.xml) (revision e280cd832df020c33df6730fbee453add9e6caee) @@ -130,8 +130,8 @@ Index: lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml =================================================================== diff -u -rbb86b2d50b113e03e7ead098db991c1ae922d99c -re280cd832df020c33df6730fbee453add9e6caee --- lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml (.../Message.hbm.xml) (revision bb86b2d50b113e03e7ead098db991c1ae922d99c) +++ lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml (.../Message.hbm.xml) (revision e280cd832df020c33df6730fbee453add9e6caee) @@ -126,7 +126,7 @@ table="ATTACHMENT" lazy="false" inverse="false" - cascade="all" + cascade="all-delete-orphan" sort="unsorted" > Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml =================================================================== diff -u -r12f7e39b451ed00ce91cffcf66efd129252d2cfc -re280cd832df020c33df6730fbee453add9e6caee --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml (.../forumApplicationContext.xml) (revision 12f7e39b451ed00ce91cffcf66efd129252d2cfc) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml (.../forumApplicationContext.xml) (revision e280cd832df020c33df6730fbee453add9e6caee) @@ -97,6 +97,12 @@ + + + + + + Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Forum.hbm.xml =================================================================== diff -u -r4a636f089ddb22f51c9277aa191e90ab61880515 -re280cd832df020c33df6730fbee453add9e6caee --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Forum.hbm.xml (.../Forum.hbm.xml) (revision 4a636f089ddb22f51c9277aa191e90ab61880515) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Forum.hbm.xml (.../Forum.hbm.xml) (revision e280cd832df020c33df6730fbee453add9e6caee) @@ -130,8 +130,8 @@ Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Forum.java =================================================================== diff -u -rd9c7ddef141d19423b6ab2914d153c2cb748f187 -re280cd832df020c33df6730fbee453add9e6caee --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Forum.java (.../Forum.java) (revision d9c7ddef141d19423b6ab2914d153c2cb748f187) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Forum.java (.../Forum.java) (revision e280cd832df020c33df6730fbee453add9e6caee) @@ -71,6 +71,8 @@ private Set attachments; private int limitedChar; private boolean limitedInput; + + //********* Non Persist fields private ForumToolContentHandler toolContentHandler; /** @@ -373,8 +375,8 @@ * * * @hibernate.set lazy="true" - * inverse="true" - * cascade="none" + * inverse="false" + * cascade="save-update" * order-by="create_date desc" * @hibernate.collection-key column="forum_uid" * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.forum.persistence.Message" @@ -482,4 +484,10 @@ public void setLimitedInput(boolean limitedInput) { this.limitedInput = limitedInput; } + public ForumToolContentHandler getToolContentHandler() { + return toolContentHandler; + } + public void setToolContentHandler(ForumToolContentHandler toolContentHandler) { + this.toolContentHandler = toolContentHandler; + } } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml =================================================================== diff -u -rbb86b2d50b113e03e7ead098db991c1ae922d99c -re280cd832df020c33df6730fbee453add9e6caee --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml (.../Message.hbm.xml) (revision bb86b2d50b113e03e7ead098db991c1ae922d99c) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml (.../Message.hbm.xml) (revision e280cd832df020c33df6730fbee453add9e6caee) @@ -126,7 +126,7 @@ table="ATTACHMENT" lazy="false" inverse="false" - cascade="all" + cascade="all-delete-orphan" sort="unsorted" > Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java =================================================================== diff -u -r12f7e39b451ed00ce91cffcf66efd129252d2cfc -re280cd832df020c33df6730fbee453add9e6caee --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java (.../Message.java) (revision 12f7e39b451ed00ce91cffcf66efd129252d2cfc) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java (.../Message.java) (revision e280cd832df020c33df6730fbee453add9e6caee) @@ -390,7 +390,7 @@ * @hibernate.set table="ATTACHMENT" * inverse="false" * lazy="false" - * cascade="all" + * cascade="all-delete-orphan" * @hibernate.collection-key column="message_uid" * @hibernate.collection-one-to-many * class="org.lamsfoundation.lams.tool.forum.persistence.Attachment" @@ -460,4 +460,10 @@ append("subject",subject). append("body",body).toString(); } + public ForumToolContentHandler getToolContentHandler() { + return toolContentHandler; + } + public void setToolContentHandler(ForumToolContentHandler toolContentHandler) { + this.toolContentHandler = toolContentHandler; + } } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java =================================================================== diff -u -rcc504e79fcfddaab61fdb673e9866a1b57c2d12c -re280cd832df020c33df6730fbee453add9e6caee --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision cc504e79fcfddaab61fdb673e9866a1b57c2d12c) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision e280cd832df020c33df6730fbee453add9e6caee) @@ -28,6 +28,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Date; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -51,6 +52,9 @@ import org.lamsfoundation.lams.contentrepository.service.IRepositoryService; 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; @@ -78,6 +82,8 @@ import org.lamsfoundation.lams.tool.forum.util.ForumToolContentHandler; import org.lamsfoundation.lams.tool.forum.util.TopicComparator; import org.lamsfoundation.lams.tool.service.ILamsToolService; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.audit.IAuditService; @@ -103,6 +109,8 @@ private ILearnerService learnerService; private IAuditService auditService; private MessageService messageService; + private IExportToolContentService exportContentService; + private IUserManagementService userManagementService; //--------------------------------------------------------------------- // Inversion of Control Methods - Method injection //--------------------------------------------------------------------- @@ -146,8 +154,7 @@ public Message createRootTopic(Long forumId, Long sessionId, Message message) throws PersistenceException { //get Forum and ForumToolSesion if(message.getForum() == null){ - Forum forum = new Forum(); - forum.setUid(forumId); + Forum forum = forumDao.getById(forumId); message.setForum(forum); } //if topic created by author, sessionId will be null. @@ -594,7 +601,34 @@ * @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 { + Forum toolContentObj = forumDao.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 = Forum.newInstance(toolContentObj,toolContentId,null); + toolContentObj.setToolContentHandler(null); + Set items = toolContentObj.getMessages(); + Set authorItems = new HashSet(); + for(Message item:items){ + if(item.getIsAuthored()){ + authorItems.add(item); + item.setToolSession(null); + item.setForum(null); + item.setToolContentHandler(null); + item.setReport(null); + item.setReplyNumber(0); + item.setParent(null); + } + } + toolContentObj.setMessages(authorItems); + try { + exportContentService.registerFileClassForExport(Attachment.class.getName(),"fileUuid","fileVersionId"); + exportContentService.exportToolContent( toolContentId, toolContentObj,forumToolContentHandler, rootPath); + } catch (ExportToolContentException e) { + throw new ToolException(e); + } } /** @@ -603,7 +637,39 @@ * @throws ToolException if any other error occurs */ public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath) throws ToolException { + + + try { + exportContentService.registerFileClassForImport(Attachment.class.getName() + ,"fileUuid","fileVersionId","fileName","fileType",null,null); + Object toolPOJO = exportContentService.importToolContent(toolContentPath,forumToolContentHandler); + if(!(toolPOJO instanceof Forum)) + throw new ImportToolContentException("Import Forum tool content failed. Deserialized object is " + toolPOJO); + Forum toolContentObj = (Forum) toolPOJO; + +// reset it to new toolContentId + toolContentObj.setContentId(toolContentId); + ForumUser user = forumUserDao.getByUserId(new Long(newUserUid.longValue())); + if(user == null){ + user = new ForumUser(); + UserDTO sysUser = userManagementService.getUserById(newUserUid).getUserDTO(); + user.setFirstName(sysUser.getFirstName()); + user.setLastName(sysUser.getLastName()); + user.setLoginName(sysUser.getLogin()); + user.setUserId(new Long(newUserUid.longValue())); + } + toolContentObj.setCreatedBy(user); + + //reset all resourceItem createBy user + Set items = toolContentObj.getMessages(); + for(Message item:items){ + item.setCreatedBy(user); + } + forumDao.saveOrUpdate(toolContentObj); + } catch (ImportToolContentException e) { + throw new ToolException(e); + } } /** @see org.lamsfoundation.lams.tool.ToolSessionManager#createToolSession(java.lang.Long, java.lang.String, java.lang.Long) */ @@ -765,6 +831,23 @@ this.learnerService = learnerService; } + public IExportToolContentService getExportContentService() { + return exportContentService; + } + public void setExportContentService(IExportToolContentService exportContentService) { + this.exportContentService = exportContentService; + } + public IUserManagementService getUserManagementService() { + return userManagementService; + } + + public void setUserManagementService(IUserManagementService userManagementService) { + this.userManagementService = userManagementService; + } + + + + } Index: lams_tool_forum/web/includes/authoringHeader.jsp =================================================================== diff -u -r3080478ec97071f97aa35c5eb46fa2552e652f83 -re280cd832df020c33df6730fbee453add9e6caee --- lams_tool_forum/web/includes/authoringHeader.jsp (.../authoringHeader.jsp) (revision 3080478ec97071f97aa35c5eb46fa2552e652f83) +++ lams_tool_forum/web/includes/authoringHeader.jsp (.../authoringHeader.jsp) (revision e280cd832df020c33df6730fbee453add9e6caee) @@ -47,10 +47,11 @@ } function doSubmit(method, tabId) { + var authorForm = document.getElementById("authoringForm"); if(tabId != null) - document.forumMonitoringForm.currentTab.value=tabId; - document.forumMonitoringForm.method.value=method; - document.forumMonitoringForm.submit(); + authorForm.currentTab.value=tabId; + authorForm.action=method; + authorForm.submit(); } //]]> Index: lams_tool_forum/web/jsps/authoring/instructions.jsp =================================================================== diff -u -rb9a105856c81f49b60f18e80bf9ee1bc7913f390 -re280cd832df020c33df6730fbee453add9e6caee --- lams_tool_forum/web/jsps/authoring/instructions.jsp (.../instructions.jsp) (revision b9a105856c81f49b60f18e80bf9ee1bc7913f390) +++ lams_tool_forum/web/jsps/authoring/instructions.jsp (.../instructions.jsp) (revision e280cd832df020c33df6730fbee453add9e6caee) @@ -58,7 +58,7 @@ - + @@ -115,7 +115,7 @@ - + Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml =================================================================== diff -u -r99e700aeee112cb6ab6842408ea1f2c559b54427 -re280cd832df020c33df6730fbee453add9e6caee --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml (.../mcApplicationContext.xml) (revision 99e700aeee112cb6ab6842408ea1f2c559b54427) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml (.../mcApplicationContext.xml) (revision e280cd832df020c33df6730fbee453add9e6caee) @@ -85,7 +85,8 @@ - + + Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/pojos/McUploadedFile.java =================================================================== diff -u -rc9531327d15636b54f293077ee1cd9f60195381b -re280cd832df020c33df6730fbee453add9e6caee --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/pojos/McUploadedFile.java (.../McUploadedFile.java) (revision c9531327d15636b54f293077ee1cd9f60195381b) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/pojos/McUploadedFile.java (.../McUploadedFile.java) (revision e280cd832df020c33df6730fbee453add9e6caee) @@ -25,6 +25,7 @@ import java.io.Serializable; +import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.log4j.Logger; import org.lamsfoundation.lams.contentrepository.ItemNotFoundException; @@ -109,10 +110,14 @@ try { - NodeKey copiedNodeKey = toolContentHandler.copyFile(new Long(mcUploadedFile.getUuid())); - logger.debug("copied NodeKey: " + copiedNodeKey); - logger.debug("copied NodeKey uuid: " + copiedNodeKey.getUuid().toString()); - newMcUploadedFile = new McUploadedFile(copiedNodeKey.getUuid().toString(), + String fileUuid = mcUploadedFile.getUuid(); + if(toolContentHandler != null){ + NodeKey copiedNodeKey = toolContentHandler.copyFile(new Long(mcUploadedFile.getUuid())); + fileUuid = copiedNodeKey.getUuid().toString(); + logger.debug("copied NodeKey: " + copiedNodeKey); + logger.debug("copied NodeKey uuid: " + fileUuid); + } + newMcUploadedFile = new McUploadedFile(fileUuid, mcUploadedFile.isFileOnline(), mcUploadedFile.getFilename(), newMcContent); @@ -228,4 +233,20 @@ else return (int) (uid.longValue() - optContent.uid.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_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java =================================================================== diff -u -rcc504e79fcfddaab61fdb673e9866a1b57c2d12c -re280cd832df020c33df6730fbee453add9e6caee --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision cc504e79fcfddaab61fdb673e9866a1b57c2d12c) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision e280cd832df020c33df6730fbee453add9e6caee) @@ -25,6 +25,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.lesson.Lesson; import org.lamsfoundation.lams.tool.IToolVO; import org.lamsfoundation.lams.tool.ToolContentManager; @@ -107,6 +111,7 @@ private ILearnerService learnerService; private ILamsToolService toolService; private IToolContentHandler mcToolContentHandler = null; + private IExportToolContentService exportContentService; public McServicePOJO(){} @@ -1508,7 +1513,28 @@ * @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 { + McContent toolContentObj = mcContentDAO.findMcContentById(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 = McContent.newInstance(null,toolContentObj,toolContentId); + toolContentObj.setMcSessions(null); + Set files = toolContentObj.getMcAttachments(); + for(McUploadedFile file : files){ + file.setMcContent(null); + } + exportContentService.registerFileClassForExport(McUploadedFile.class.getName(),"uuid",null); + exportContentService.exportToolContent( toolContentId, toolContentObj,mcToolContentHandler, rootPath); + } catch (ExportToolContentException e) { + throw new ToolException(e); + } catch (ItemNotFoundException e) { + throw new ToolException(e); + } catch (RepositoryCheckedException e) { + throw new ToolException(e); + } } /** @@ -1517,7 +1543,27 @@ * @throws ToolException if any other error occurs */ public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath) throws ToolException { - + try { + exportContentService.registerFileClassForImport(McUploadedFile.class.getName() + ,"uuid",null,"filename","fileProperty",null,null); + + Object toolPOJO = exportContentService.importToolContent(toolContentPath,mcToolContentHandler); + if(!(toolPOJO instanceof McContent)) + throw new ImportToolContentException("Import MC tool content failed. Deserialized object is " + toolPOJO); + McContent toolContentObj = (McContent) toolPOJO; + +// reset it to new toolContentId + toolContentObj.setMcContentId(toolContentId); + toolContentObj.setCreatedBy(newUserUid); + Set files = toolContentObj.getMcAttachments(); + for(McUploadedFile file : files){ + file.setMcContentId(toolContentId); + file.setMcContent(toolContentObj); + } + mcContentDAO.saveMcContent(toolContentObj); + } catch (ImportToolContentException e) { + throw new ToolException(e); + } } @@ -2340,4 +2386,12 @@ this.learnerService = learnerService; } + public IExportToolContentService getExportContentService() { + return exportContentService; + } + + public void setExportContentService(IExportToolContentService exportContentService) { + this.exportContentService = exportContentService; + } + } Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java =================================================================== diff -u -r3c6057656fe671ee8486a977c37132bb6f234272 -re280cd832df020c33df6730fbee453add9e6caee --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java (.../ResourceServiceImpl.java) (revision 3c6057656fe671ee8486a977c37132bb6f234272) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java (.../ResourceServiceImpl.java) (revision e280cd832df020c33df6730fbee453add9e6caee) @@ -750,8 +750,8 @@ toolContentObj.setOnlineFileList(null); toolContentObj.setMiniViewNumberStr(null); try { - exportContentService.registerFileClassForExport("org.lamsfoundation.lams.tool.rsrc.model.ResourceAttachment","fileUuid","fileVersionId"); - exportContentService.registerFileClassForExport("org.lamsfoundation.lams.tool.rsrc.model.ResourceItem","fileUuid","fileVersionId"); + exportContentService.registerFileClassForExport(ResourceAttachment.class.getName(),"fileUuid","fileVersionId"); + exportContentService.registerFileClassForExport(ResourceItem.class.getName(),"fileUuid","fileVersionId"); exportContentService.exportToolContent( toolContentId, toolContentObj,resourceToolContentHandler, rootPath); } catch (ExportToolContentException e) { throw new ToolException(e); Index: lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/NoticeboardAttachment.java =================================================================== diff -u -r1bf30edca36c1de9ca329e9140bf4673c1225028 -re280cd832df020c33df6730fbee453add9e6caee --- lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/NoticeboardAttachment.java (.../NoticeboardAttachment.java) (revision 1bf30edca36c1de9ca329e9140bf4673c1225028) +++ lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/NoticeboardAttachment.java (.../NoticeboardAttachment.java) (revision e280cd832df020c33df6730fbee453add9e6caee) @@ -26,9 +26,11 @@ 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.log4j.Logger; +import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler; import org.lamsfoundation.lams.contentrepository.service.IRepositoryService; @@ -217,7 +219,7 @@ this.versionId = versionId; } - public String returnFileType() + public String getFileProperty() { if (isOnlineFile()) { @@ -227,9 +229,16 @@ return TYPE_OFFLINE; } + public void setFileProperty(String fileProperty) { + if(StringUtils.equals(IToolContentHandler.TYPE_ONLINE,fileProperty)) + this.onlineFile = true; + else + this.onlineFile = false; + } + public String returnKeyName() { - return (getFilename() + "-" + returnFileType()); + return (getFilename() + "-" + getFileProperty()); } /** Are two NoticeboardAttachments equal? Checks attachmentId, filename, Index: lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/NoticeboardContent.java =================================================================== diff -u -r1bf30edca36c1de9ca329e9140bf4673c1225028 -re280cd832df020c33df6730fbee453add9e6caee --- lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/NoticeboardContent.java (.../NoticeboardContent.java) (revision 1bf30edca36c1de9ca329e9140bf4673c1225028) +++ lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/NoticeboardContent.java (.../NoticeboardContent.java) (revision e280cd832df020c33df6730fbee453add9e6caee) @@ -393,9 +393,17 @@ while (iter.hasNext()) { NoticeboardAttachment element = (NoticeboardAttachment) iter.next(); NoticeboardAttachment newAttachment = new NoticeboardAttachment(newContent, element.getFilename(), element.isOnlineFile()); - NodeKey keys = toolContentHandler.copyFile(element.getUuid()); - newAttachment.setUuid(keys.getUuid()); - newAttachment.setVersionId(keys.getVersion()); + if(toolContentHandler != null){ + //if it is not null, copy file node and refresh uuid and version + NodeKey keys = toolContentHandler.copyFile(element.getUuid()); + newAttachment.setUuid(keys.getUuid()); + newAttachment.setVersionId(keys.getVersion()); + }else{ + //keep old value + newAttachment.setUuid(element.getUuid()); + newAttachment.setVersionId(element.getVersionId()); + } + newAttachmentSet.add(newAttachment); } newContent.setNbAttachments(newAttachmentSet); Index: lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/applicationContext.xml =================================================================== diff -u -r99e700aeee112cb6ab6842408ea1f2c559b54427 -re280cd832df020c33df6730fbee453add9e6caee --- lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/applicationContext.xml (.../applicationContext.xml) (revision 99e700aeee112cb6ab6842408ea1f2c559b54427) +++ lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/applicationContext.xml (.../applicationContext.xml) (revision e280cd832df020c33df6730fbee453add9e6caee) @@ -35,6 +35,7 @@ + Index: lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java =================================================================== diff -u -rcc504e79fcfddaab61fdb673e9866a1b57c2d12c -re280cd832df020c33df6730fbee453add9e6caee --- lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java (.../NoticeboardServicePOJO.java) (revision cc504e79fcfddaab61fdb673e9866a1b57c2d12c) +++ lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java (.../NoticeboardServicePOJO.java) (revision e280cd832df020c33df6730fbee453add9e6caee) @@ -31,10 +31,14 @@ import java.util.Set; import org.apache.log4j.Logger; +import org.lamsfoundation.lams.contentrepository.ItemNotFoundException; import org.lamsfoundation.lams.contentrepository.NodeKey; import org.lamsfoundation.lams.contentrepository.RepositoryCheckedException; import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler; 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; @@ -80,6 +84,7 @@ private INoticeboardAttachmentDAO nbAttachmentDAO = null; private IToolContentHandler nbToolContentHandler = null; + private IExportToolContentService exportContentService; private static Logger log = Logger.getLogger(NoticeboardServicePOJO.class); @@ -888,7 +893,24 @@ * @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 { + NoticeboardContent toolContentObj = nbContentDAO.findNbContentById(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 = NoticeboardContent.newInstance(toolContentObj,toolContentId,null); + toolContentObj.setNbSessions(null); + exportContentService.registerFileClassForExport(NoticeboardAttachment.class.getName(),"uuid","versionId"); + exportContentService.exportToolContent( toolContentId, toolContentObj,nbToolContentHandler, rootPath); + } catch (ExportToolContentException e) { + throw new ToolException(e); + } catch (ItemNotFoundException e) { + throw new ToolException(e); + } catch (RepositoryCheckedException e) { + throw new ToolException(e); + } } /** @@ -897,7 +919,21 @@ * @throws ToolException if any other error occurs */ public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath) throws ToolException { - + try { + exportContentService.registerFileClassForImport(NoticeboardAttachment.class.getName() + ,"uuid","versionId","filename","fileProperty",null,null); + + Object toolPOJO = exportContentService.importToolContent(toolContentPath,nbToolContentHandler); + if(!(toolPOJO instanceof NoticeboardContent)) + throw new ImportToolContentException("Import Noteice board tool content failed. Deserialized object is " + toolPOJO); + NoticeboardContent toolContentObj = (NoticeboardContent) toolPOJO; + +// reset it to new toolContentId + toolContentObj.setNbContentId(toolContentId); + nbContentDAO.saveNbContent(toolContentObj); + } catch (ImportToolContentException e) { + throw new ToolException(e); + } } /* ===============Methods implemented from ToolSessionManager =============== */ @@ -1066,4 +1102,12 @@ public void setNbToolContentHandler(IToolContentHandler nbToolContentHandler) { this.nbToolContentHandler = nbToolContentHandler; } + public IExportToolContentService getExportContentService() { + return exportContentService; + } + + + public void setExportContentService(IExportToolContentService exportContentService) { + this.exportContentService = exportContentService; + } } Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java =================================================================== diff -u -r3c6057656fe671ee8486a977c37132bb6f234272 -re280cd832df020c33df6730fbee453add9e6caee --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision 3c6057656fe671ee8486a977c37132bb6f234272) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision e280cd832df020c33df6730fbee453add9e6caee) @@ -226,7 +226,7 @@ * @throws ExportToolContentException */ public void exportToolContent(Long toolContentId , String toPath) throws ToolException, DataMissingException{ - exportContentService.registerFileClassForExport("org.lamsfoundation.lams.tool.sbmt.InstructionFiles","uuID","versionID"); + exportContentService.registerFileClassForExport(InstructionFiles.class.getName(),"uuID","versionID"); SubmitFilesContent toolContentObj = submitFilesContentDAO.getContentByID(toolContentId); if(toolContentObj == null) throw new DataMissingException("Unable to find tool content by given id :" + toolContentId);