Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/ResourceConstants.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/ResourceConstants.java,v diff -u -r1.31 -r1.32 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/ResourceConstants.java 17 Sep 2006 06:25:39 -0000 1.31 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/ResourceConstants.java 29 Sep 2006 05:00:25 -0000 1.32 @@ -26,7 +26,8 @@ public class ResourceConstants { public static final String TOOL_SIGNATURE = "larsrc11"; public static final String RESOURCE_SERVICE = "resourceService"; - + public static final String TOOL_CONTENT_HANDLER_NAME = "resourceToolContentHandler"; + public static final int COMPLETED = 1; //resource type; Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/Summary.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/Attic/Summary.java,v diff -u -r1.7 -r1.8 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/Summary.java 17 Sep 2006 06:25:38 -0000 1.7 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/Summary.java 29 Sep 2006 05:00:25 -0000 1.8 @@ -58,6 +58,9 @@ private String url; private Long fileUuid; private Long fileVersionId; + private String fileName; + private String attachmentLocalUrl; + //true: initial group item, false, belong to some group. private boolean isInitGroup; @@ -81,6 +84,7 @@ this.itemTitle = item.getTitle(); this.username = item.getCreateBy() == null?"":item.getCreateBy().getLoginName(); this.url = item.getUrl(); + this.fileName = item.getFileName(); this.fileUuid = item.getFileUuid(); this.fileVersionId = item.getFileVersionId(); }else @@ -104,6 +108,7 @@ this.itemTitle = item.getTitle(); this.username = item.getCreateBy() == null?"":item.getCreateBy().getLoginName(); this.url = item.getUrl(); + this.fileName = item.getFileName(); this.fileUuid = item.getFileUuid(); this.fileVersionId = item.getFileVersionId(); }else @@ -190,5 +195,17 @@ public void setInitGroup(boolean isInitGroup) { this.isInitGroup = isInitGroup; } + public String getAttachmentLocalUrl() { + return attachmentLocalUrl; + } + public void setAttachmentLocalUrl(String attachmentLocalUrl) { + this.attachmentLocalUrl = attachmentLocalUrl; + } + public String getFileName() { + return fileName; + } + public void setFileName(String fileName) { + this.fileName = fileName; + } } Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java,v diff -u -r1.39 -r1.40 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java 17 Sep 2006 06:25:37 -0000 1.39 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java 29 Sep 2006 05:00:24 -0000 1.40 @@ -277,8 +277,7 @@ * @return * @throws ServletException */ - private ActionForward saveOrUpdateItem(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) - throws Exception { + private ActionForward saveOrUpdateItem(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){ //get instructions: List instructionList = getInstructionsFromRequest(request); @@ -294,8 +293,13 @@ try { extractFormToResourceItem(request, instructionList, itemForm); } catch (Exception e) { - log.error("Uploading failed. The exception is " + e.toString()); - throw e; + //any upload exception will display as normal error message rather then throw exception directly + errors.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage(ResourceConstants.ERROR_MSG_UPLOAD_FAILED,e.getMessage())); + if(!errors.isEmpty()){ + this.addErrors(request,errors); + request.setAttribute(ResourceConstants.ATTR_INSTRUCTION_LIST,instructionList); + return findForward(itemForm.getItemType(),mapping); + } } //set session map ID so that itemlist.jsp can get sessionMAP request.setAttribute(ResourceConstants.ATTR_SESSION_MAP_ID, itemForm.getSessionMapID()); Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/servlet/ExportServlet.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/servlet/ExportServlet.java,v diff -u -r1.7 -r1.8 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/servlet/ExportServlet.java 17 Sep 2006 06:25:39 -0000 1.7 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/servlet/ExportServlet.java 29 Sep 2006 05:00:24 -0000 1.8 @@ -25,6 +25,7 @@ package org.lamsfoundation.lams.tool.rsrc.web.servlet; +import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -43,9 +44,13 @@ import org.lamsfoundation.lams.tool.rsrc.service.IResourceService; import org.lamsfoundation.lams.tool.rsrc.service.ResourceApplicationException; import org.lamsfoundation.lams.tool.rsrc.service.ResourceServiceProxy; +import org.lamsfoundation.lams.tool.rsrc.util.ResourceToolContentHandler; +import org.lamsfoundation.lams.util.FileUtil; import org.lamsfoundation.lams.web.servlet.AbstractExportPortfolioServlet; import org.lamsfoundation.lams.web.util.AttributeNames; import org.lamsfoundation.lams.web.util.SessionMap; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; /** * Export portfolio servlet to export all shared resource into offline HTML @@ -62,6 +67,8 @@ private final String FILENAME = "shared_resources_main.html"; + private ResourceToolContentHandler handler; + public String doExport(HttpServletRequest request, HttpServletResponse response, String directoryName, Cookie[] cookies) { // initial sessionMap @@ -117,6 +124,7 @@ List group = service.exportBySessionId(toolSessionID,true); + saveFileToLocal(group, directoryName); List groupList = new ArrayList(); if(group.size() > 0) @@ -144,10 +152,49 @@ throw new ResourceApplicationException(error); } List> groupList = service.exportByContentId(toolContentID); - + if(groupList != null) + for (List list : groupList) { + saveFileToLocal(list, directoryName); + } // put it into HTTPSession sessionMap.put(ResourceConstants.ATTR_TITLE, content.getTitle()); sessionMap.put(ResourceConstants.ATTR_SUMMARY_LIST, groupList); } + private void saveFileToLocal(List list, String directoryName) { + handler = getToolContentHandler(); + for (Summary summary : list) { + //for learning object, it just display "No offlice pakcage avaliable" information. + if(summary.getItemType() == ResourceConstants.RESOURCE_TYPE_LEARNING_OBJECT + || summary.getItemType() == ResourceConstants.RESOURCE_TYPE_URL) + continue; + try{ + int idx= 1; + String userName = summary.getUsername(); + String localDir; + while(true){ + localDir = FileUtil.getFullPath(directoryName,userName + "/" + idx); + File local = new File(localDir); + if(!local.exists()){ + local.mkdirs(); + break; + } + idx++; + } + summary.setAttachmentLocalUrl(userName + "/" + idx + "/" + summary.getFileName()); + handler.saveFile(summary.getFileUuid(), FileUtil.getFullPath(directoryName, summary.getAttachmentLocalUrl())); + } catch (Exception e) { + logger.error("Export forum topic attachment failed: " + e.toString()); + } + } + + } + + private ResourceToolContentHandler getToolContentHandler() { + if ( handler == null ) { + WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext()); + handler = (ResourceToolContentHandler) wac.getBean(ResourceConstants.TOOL_CONTENT_HANDLER_NAME); + } + return handler; + } } Index: lams_tool_larsrc/web/common/messages.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/web/common/messages.jsp,v diff -u -r1.3 -r1.4 --- lams_tool_larsrc/web/common/messages.jsp 14 Sep 2006 07:16:23 -0000 1.3 +++ lams_tool_larsrc/web/common/messages.jsp 29 Sep 2006 05:00:24 -0000 1.4 @@ -1,6 +1,5 @@ <%-- Error Messages --%> -

 


Index: lams_tool_larsrc/web/pages/export/exportportfolio.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/web/pages/export/exportportfolio.jsp,v diff -u -r1.9 -r1.10 --- lams_tool_larsrc/web/pages/export/exportportfolio.jsp 28 Sep 2006 23:31:19 -0000 1.9 +++ lams_tool_larsrc/web/pages/export/exportportfolio.jsp 29 Sep 2006 05:00:24 -0000 1.10 @@ -111,16 +111,10 @@ - - - - + - - - - +