Index: lams_tool_sbmt/build.xml
===================================================================
diff -u -r86bb62d3caffa558350cdb31d6d965f8bd936cd6 -r2437f5fc533ea6acaf8a86a9a703a5909b456516
--- lams_tool_sbmt/build.xml (.../build.xml) (revision 86bb62d3caffa558350cdb31d6d965f8bd936cd6)
+++ lams_tool_sbmt/build.xml (.../build.xml) (revision 2437f5fc533ea6acaf8a86a9a703a5909b456516)
@@ -441,7 +441,7 @@
-
+
Index: lams_tool_sbmt/conf/hibernate/mappings/org/lamsfoundation/lams/tool/sbmt/InstructionFiles.hbm.xml
===================================================================
diff -u -r759c8f83bff5a495f44ea5532762395ee626c7c2 -r2437f5fc533ea6acaf8a86a9a703a5909b456516
--- lams_tool_sbmt/conf/hibernate/mappings/org/lamsfoundation/lams/tool/sbmt/InstructionFiles.hbm.xml (.../InstructionFiles.hbm.xml) (revision 759c8f83bff5a495f44ea5532762395ee626c7c2)
+++ lams_tool_sbmt/conf/hibernate/mappings/org/lamsfoundation/lams/tool/sbmt/InstructionFiles.hbm.xml (.../InstructionFiles.hbm.xml) (revision 2437f5fc533ea6acaf8a86a9a703a5909b456516)
@@ -12,8 +12,8 @@
>
Index: lams_tool_sbmt/db/sql/create_lams_tool_sbmt.sql
===================================================================
diff -u -r4bb149982343d7316540227e02553e26c7797ba5 -r2437f5fc533ea6acaf8a86a9a703a5909b456516
--- lams_tool_sbmt/db/sql/create_lams_tool_sbmt.sql (.../create_lams_tool_sbmt.sql) (revision 4bb149982343d7316540227e02553e26c7797ba5)
+++ lams_tool_sbmt/db/sql/create_lams_tool_sbmt.sql (.../create_lams_tool_sbmt.sql) (revision 2437f5fc533ea6acaf8a86a9a703a5909b456516)
@@ -13,13 +13,13 @@
primary key (content_id)
);
create table tl_lasbmt11_instruction_files (
- file_id bigint not null auto_increment,
+ uid bigint not null auto_increment,
uuid bigint,
version_id bigint,
type varchar(20),
name varchar(255),
content_id bigint,
- primary key (file_id)
+ primary key (uid)
);
create table tl_lasbmt11_report (
report_id bigint not null auto_increment,
Index: lams_tool_sbmt/db/sql/table-schema.sql
===================================================================
diff -u -r33e300d2262bcd06e34d469d3c628d12118e2cb8 -r2437f5fc533ea6acaf8a86a9a703a5909b456516
--- lams_tool_sbmt/db/sql/table-schema.sql (.../table-schema.sql) (revision 33e300d2262bcd06e34d469d3c628d12118e2cb8)
+++ lams_tool_sbmt/db/sql/table-schema.sql (.../table-schema.sql) (revision 2437f5fc533ea6acaf8a86a9a703a5909b456516)
@@ -23,13 +23,13 @@
primary key (content_id)
);
create table tl_lasbmt11_instruction_files (
- file_id bigint not null auto_increment,
+ uid bigint not null auto_increment,
uuid bigint,
version_id bigint,
type varchar(20),
name varchar(255),
content_id bigint,
- primary key (file_id)
+ primary key (uid)
);
create table tl_lasbmt11_report (
report_id bigint not null auto_increment,
Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/InstructionFiles.hbm.xml
===================================================================
diff -u -r759c8f83bff5a495f44ea5532762395ee626c7c2 -r2437f5fc533ea6acaf8a86a9a703a5909b456516
--- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/InstructionFiles.hbm.xml (.../InstructionFiles.hbm.xml) (revision 759c8f83bff5a495f44ea5532762395ee626c7c2)
+++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/InstructionFiles.hbm.xml (.../InstructionFiles.hbm.xml) (revision 2437f5fc533ea6acaf8a86a9a703a5909b456516)
@@ -12,8 +12,8 @@
>
Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/InstructionFiles.java
===================================================================
diff -u -r496ea8c9fb835a69057f28bbdfa2f2749b6f297c -r2437f5fc533ea6acaf8a86a9a703a5909b456516
--- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/InstructionFiles.java (.../InstructionFiles.java) (revision 496ea8c9fb835a69057f28bbdfa2f2749b6f297c)
+++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/InstructionFiles.java (.../InstructionFiles.java) (revision 2437f5fc533ea6acaf8a86a9a703a5909b456516)
@@ -32,24 +32,24 @@
private static final long serialVersionUID = 3555065437595925246L;
private static Logger log = Logger.getLogger(InstructionFiles.class);
- private Long fileID;
+ private Long uid;
private Long uuID;
private Long versionID;
private String name;
private String type;
/**
- * @hibernate.id generator-class="identity" type="java.lang.Long" column="file_id"
- * @return Returns the fileID.
+ * @hibernate.id generator-class="identity" type="java.lang.Long" column="uid"
+ * @return Returns the uid.
*/
- public Long getFileID() {
- return fileID;
+ public Long getUid() {
+ return uid;
}
/**
- * @param fileID The fileID to set.
+ * @param uid The uid to set.
*/
- public void setFileID(Long fileID) {
- this.fileID = fileID;
+ public void setUid(Long fileID) {
+ this.uid = fileID;
}
/**
*
Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java
===================================================================
diff -u -r9310fe30da9974d1f174319efc054e3bde9eed84 -r2437f5fc533ea6acaf8a86a9a703a5909b456516
--- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision 9310fe30da9974d1f174319efc054e3bde9eed84)
+++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision 2437f5fc533ea6acaf8a86a9a703a5909b456516)
@@ -24,19 +24,16 @@
import java.io.FileNotFoundException;
import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
-import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.apache.struts.upload.FormFile;
@@ -91,119 +88,19 @@
private static Logger log = Logger.getLogger(SubmitFilesService.class);
private ISubmitFilesContentDAO submitFilesContentDAO;
-
private ISubmitFilesReportDAO submitFilesReportDAO;
-
private ISubmitFilesSessionDAO submitFilesSessionDAO;
-
private ISubmissionDetailsDAO submissionDetailsDAO;
-
private ILearnerDAO learnerDAO;
+ private IUserDAO userDAO;
-
private SbmtToolContentHandler toolContentHandler;
- private IUserDAO userDAO;
private ILamsToolService toolService;
private ILearnerService learnerService;
private IRepositoryService repositoryService;
- /***************************************************************************
- * Property Injection Methods
- **************************************************************************/
-
/**
- * @param submitFilesContentDAO
- * The submitFilesContentDAO to set.
- */
- public void setSubmitFilesContentDAO(
- ISubmitFilesContentDAO submitFilesContentDAO) {
- this.submitFilesContentDAO = submitFilesContentDAO;
- }
-
- /**
- * @param submitFilesReportDAO
- * The submitFilesReportDAO to set.
- */
- public void setSubmitFilesReportDAO(
- ISubmitFilesReportDAO submitFilesReportDAO) {
- this.submitFilesReportDAO = submitFilesReportDAO;
- }
-
- /**
- * @param submitFilesSessionDAO
- * The submitFilesSessionDAO to set.
- */
- public void setSubmitFilesSessionDAO(
- ISubmitFilesSessionDAO submitFilesSessionDAO) {
- this.submitFilesSessionDAO = submitFilesSessionDAO;
- }
-
- /**
- * @param submissionDetailsDAO The submissionDetailsDAO to set.
- */
- public void setSubmissionDetailsDAO(
- ISubmissionDetailsDAO submissionDetailsDAO) {
- this.submissionDetailsDAO = submissionDetailsDAO;
- }
-
-
- /**
- * @return Returns the toolContentHandler.
- */
- public SbmtToolContentHandler getToolContentHandler() {
- return toolContentHandler;
- }
-
- /**
- * @param toolContentHandler The toolContentHandler to set.
- */
- public void setToolContentHandler(SbmtToolContentHandler toolContentHandler) {
- this.toolContentHandler = toolContentHandler;
- }
-
- /**
- * @param userDAO The userDAO to set.
- */
- public void setUserDAO(IUserDAO userDAO) {
- this.userDAO = userDAO;
- }
-
- /**
- * @return Returns the learnerDAO.
- */
- public ILearnerDAO getLearnerDAO() {
- return learnerDAO;
- }
-
- /**
- * @param learnerDAO The learnerDAO to set.
- */
- public void setLearnerDAO(ILearnerDAO learnerDAO) {
- this.learnerDAO = learnerDAO;
- }
-
- public Learner getLearner(Long sessionID, Long userID) {
- return learnerDAO.getLearner(sessionID,userID);
- }
-
- public ILearnerService getLearnerService() {
- return learnerService;
- }
-
- public void setLearnerService(ILearnerService learnerService) {
- this.learnerService = learnerService;
- }
-
- public ILamsToolService getToolService() {
- return toolService;
- }
-
- public void setToolService(ILamsToolService toolService) {
- this.toolService = toolService;
- }
-
- /**
* (non-Javadoc)
*
* @see org.lamsfoundation.lams.tool.ToolContentManager#copyToolContent(java.lang.Long,
@@ -536,40 +433,18 @@
* @see org.lamsfoundation.lams.tool.ToolSessionManager# uploadFileToContent(Long,FormFile )
*/
public InstructionFiles uploadFileToContent(Long contentID, FormFile uploadFile,String fileType) throws SubmitFilesException{
- InstructionFiles refile = null;
if(uploadFile == null || StringUtils.isEmpty(uploadFile.getFileName()))
throw new SubmitFilesException("Could not find upload file: " + uploadFile);
- SubmitFilesContent content = getSubmitFilesContent(contentID);
- if ( content == null || !contentID.equals(content.getContentID())) {
- content = new SubmitFilesContent();
- content.setContentID(contentID);
- //user firstly upload file without any other input, even the not-null
- //field "title". Set title as default title.
- content.setTitle(SbmtConstants.DEFAULT_TITLE);
- }
NodeKey nodeKey = processFile(uploadFile,fileType);
- Set fileSet = content.getInstructionFiles();
- if(fileSet == null){
- fileSet = new HashSet();
- content.setInstructionFiles(fileSet);
- }
InstructionFiles file = new InstructionFiles();
file.setType(fileType);
file.setUuID(nodeKey.getUuid());
file.setVersionID(nodeKey.getVersion());
file.setName(uploadFile.getFileName());
- fileSet.add(file);
- submitFilesContentDAO.save(content);
- refile = new InstructionFiles();
- try {
- PropertyUtils.copyProperties(refile,file);
- } catch (Exception e) {
- throw new SubmitFilesException("Could not get return InstructionFile instance" +e.getMessage());
- }
- return refile;
+ return file;
}
/**
* (non-Javadoc)
@@ -821,7 +696,6 @@
content = (SubmitFilesContent) defaultContent.clone();
content.setContentID(contentID);
saveSubmitFilesContent(content);
-
return content;
}
@@ -832,4 +706,101 @@
learners = new ArrayList(); //return sized 0 list rather than null value
return learners;
}
+
+ /***************************************************************************
+ * Property Injection Methods
+ **************************************************************************/
+
+ /**
+ * @param submitFilesContentDAO
+ * The submitFilesContentDAO to set.
+ */
+ public void setSubmitFilesContentDAO(
+ ISubmitFilesContentDAO submitFilesContentDAO) {
+ this.submitFilesContentDAO = submitFilesContentDAO;
+ }
+
+ /**
+ * @param submitFilesReportDAO
+ * The submitFilesReportDAO to set.
+ */
+ public void setSubmitFilesReportDAO(
+ ISubmitFilesReportDAO submitFilesReportDAO) {
+ this.submitFilesReportDAO = submitFilesReportDAO;
+ }
+
+ /**
+ * @param submitFilesSessionDAO
+ * The submitFilesSessionDAO to set.
+ */
+ public void setSubmitFilesSessionDAO(
+ ISubmitFilesSessionDAO submitFilesSessionDAO) {
+ this.submitFilesSessionDAO = submitFilesSessionDAO;
+ }
+
+ /**
+ * @param submissionDetailsDAO The submissionDetailsDAO to set.
+ */
+ public void setSubmissionDetailsDAO(
+ ISubmissionDetailsDAO submissionDetailsDAO) {
+ this.submissionDetailsDAO = submissionDetailsDAO;
+ }
+
+
+ /**
+ * @return Returns the toolContentHandler.
+ */
+ public SbmtToolContentHandler getToolContentHandler() {
+ return toolContentHandler;
+ }
+
+ /**
+ * @param toolContentHandler The toolContentHandler to set.
+ */
+ public void setToolContentHandler(SbmtToolContentHandler toolContentHandler) {
+ this.toolContentHandler = toolContentHandler;
+ }
+
+ /**
+ * @param userDAO The userDAO to set.
+ */
+ public void setUserDAO(IUserDAO userDAO) {
+ this.userDAO = userDAO;
+ }
+
+ /**
+ * @return Returns the learnerDAO.
+ */
+ public ILearnerDAO getLearnerDAO() {
+ return learnerDAO;
+ }
+
+ /**
+ * @param learnerDAO The learnerDAO to set.
+ */
+ public void setLearnerDAO(ILearnerDAO learnerDAO) {
+ this.learnerDAO = learnerDAO;
+ }
+
+ public Learner getLearner(Long sessionID, Long userID) {
+ return learnerDAO.getLearner(sessionID,userID);
+ }
+
+ public ILearnerService getLearnerService() {
+ return learnerService;
+ }
+
+ public void setLearnerService(ILearnerService learnerService) {
+ this.learnerService = learnerService;
+ }
+
+ public ILamsToolService getToolService() {
+ return toolService;
+ }
+
+ public void setToolService(ILamsToolService toolService) {
+ this.toolService = toolService;
+ }
+
+
}
\ No newline at end of file
Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/util/SbmtConstants.java
===================================================================
diff -u -r06ec9e5c95aa91c3758457a2797c86557bd9da59 -r2437f5fc533ea6acaf8a86a9a703a5909b456516
--- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/util/SbmtConstants.java (.../SbmtConstants.java) (revision 06ec9e5c95aa91c3758457a2797c86557bd9da59)
+++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/util/SbmtConstants.java (.../SbmtConstants.java) (revision 2437f5fc533ea6acaf8a86a9a703a5909b456516)
@@ -33,4 +33,6 @@
//TODO: hard code, need to read from config file/db
public static final String TOOL_URL_BASE = "/lams/tool/lasbmt11/";
+ public static final String ATTACHMENT_LIST = "attachmentList";
+ public static final String DELETED_ATTACHMENT_LIST = "deletedAttachmentList";
}
Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/AuthoringAction.java
===================================================================
diff -u -rc97960ddf053d2035d4285dc77dde54ffc2df31d -r2437f5fc533ea6acaf8a86a9a703a5909b456516
--- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/AuthoringAction.java (.../AuthoringAction.java) (revision c97960ddf053d2035d4285dc77dde54ffc2df31d)
+++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/AuthoringAction.java (.../AuthoringAction.java) (revision 2437f5fc533ea6acaf8a86a9a703a5909b456516)
@@ -22,8 +22,13 @@
*/
package org.lamsfoundation.lams.tool.sbmt.web;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -38,6 +43,7 @@
import org.apache.struts.actions.LookupDispatchAction;
import org.apache.struts.upload.FormFile;
import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler;
+import org.lamsfoundation.lams.tool.sbmt.InstructionFiles;
import org.lamsfoundation.lams.tool.sbmt.SubmitFilesContent;
import org.lamsfoundation.lams.tool.sbmt.dto.AuthoringDTO;
import org.lamsfoundation.lams.tool.sbmt.service.ISubmitFilesService;
@@ -89,7 +95,41 @@
if(content.getContentID().equals(persistContent.getContentID())){
//keep Set type attribute for persist content becuase this update only
//include updating simple properties from web page(i.e. text value, list value, etc)
- content.setInstructionFiles(persistContent.getInstructionFiles());
+ Set attPOSet = persistContent.getInstructionFiles();
+ List attachmentList = getAttachmentList(request);
+ List deleteAttachmentList = getDeletedAttachmentList(request);
+ Iterator iter = attachmentList.iterator();
+ while(iter.hasNext()){
+ InstructionFiles newAtt = (InstructionFiles) iter.next();
+ //add new attachment, UID is not null
+ if(newAtt.getUid() == null)
+ attPOSet.add(newAtt);
+ }
+ attachmentList.clear();
+
+ iter = deleteAttachmentList.iterator();
+ while(iter.hasNext()){
+ InstructionFiles delAtt = (InstructionFiles) iter.next();
+ //delete from repository
+ submitFilesService.deleteFromRepository(delAtt.getUuID(),delAtt.getVersionID());
+ //it is an existed att, then delete it from current attachmentPO
+ if(delAtt.getUid() != null){
+ Iterator attIter = attPOSet.iterator();
+ while(attIter.hasNext()){
+ InstructionFiles att = (InstructionFiles) attIter.next();
+ if(delAtt.getUid().equals(att.getUid())){
+ attIter.remove();
+ break;
+ }
+ }
+ submitFilesService.deleteInstructionFile(content.getContentID(), delAtt.getUuID(), delAtt
+ .getVersionID(), delAtt.getType());
+ }//end remove from persist value
+ }
+ deleteAttachmentList.clear();
+
+ //copy back
+ content.setInstructionFiles(attPOSet);
content.setToolSession(persistContent.getToolSession());
//copy web page value into persist content, as above, the "Set" type value kept.
PropertyUtils.copyProperties(persistContent,content);
@@ -150,18 +190,32 @@
SubmitFilesContent content = getContent(form);
//Call setUp() as early as possible , so never loss the screen value if any exception happen.
setUp(request,content);
- submitFilesService = SubmitFilesServiceProxy.getSubmitFilesService(this
- .getServlet().getServletContext());
- //send back the upload file list and display them on page
- SubmitFilesContent persistContent = submitFilesService.getSubmitFilesContent(content.getContentID());
- content.setInstructionFiles(persistContent.getInstructionFiles());
- //content change, so call setup again.
- setUp(request,content);
+
+ //upload to repository
+ InstructionFiles att = submitFilesService.uploadFileToContent(content.getContentID(), file, type);
- submitFilesService.uploadFileToContent(content.getContentID(), file, type);
+ //handle session value
+ List attachmentList = getAttachmentList(request);
+ List deleteAttachmentList = getDeletedAttachmentList(request);
+ //first check exist attachment and delete old one (if exist) to deletedAttachmentList
+ Iterator iter = attachmentList.iterator();
+ InstructionFiles existAtt;
+ while(iter.hasNext()){
+ existAtt = (InstructionFiles) iter.next();
+ if(StringUtils.equals(existAtt.getName(),att.getName())){
+ //if there is same name attachment, delete old one
+ deleteAttachmentList.add(existAtt);
+ iter.remove();
+ break;
+ }
+ }
+ //add to attachmentList
+ attachmentList.add(att);
+
//add new uploaded file into DTO becuase content instruction file list comes from persistCotent.
//so it is not need refresh content again.
//content change, so call setup again.
+ content.setInstructionFiles(new HashSet(attachmentList));
setUp(request,content);
return mapping.getInputForward();
@@ -197,6 +251,10 @@
persistContent.setContentID(contentID);
}
setUp(request,persistContent);
+
+ //initialize attachmentList
+ List attachmentList = getAttachmentList(request);
+ attachmentList.addAll(persistContent.getInstructionFiles());
//set back STRUTS component value
DynaActionForm authForm = (DynaActionForm) form;
@@ -259,5 +317,33 @@
AuthoringDTO authorDto = new AuthoringDTO(content);
request.setAttribute(SbmtConstants.AUTHORING_DTO,authorDto);
}
-
+ /**
+ * @param request
+ * @return
+ */
+ private List getAttachmentList(HttpServletRequest request) {
+ return getListFromSession(request,SbmtConstants.ATTACHMENT_LIST);
+ }
+ /**
+ * @param request
+ * @return
+ */
+ private List getDeletedAttachmentList(HttpServletRequest request) {
+ return getListFromSession(request,SbmtConstants.DELETED_ATTACHMENT_LIST);
+ }
+ /**
+ * Get java.util.List
from HttpSession by given name.
+ *
+ * @param request
+ * @param name
+ * @return
+ */
+ private List getListFromSession(HttpServletRequest request,String name) {
+ List list = (List) request.getSession().getAttribute(name);
+ if(list == null){
+ list = new ArrayList();
+ request.getSession().setAttribute(name,list);
+ }
+ return list;
+ }
}
Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/DeleteFileAction.java
===================================================================
diff -u -rc97960ddf053d2035d4285dc77dde54ffc2df31d -r2437f5fc533ea6acaf8a86a9a703a5909b456516
--- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/DeleteFileAction.java (.../DeleteFileAction.java) (revision c97960ddf053d2035d4285dc77dde54ffc2df31d)
+++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/DeleteFileAction.java (.../DeleteFileAction.java) (revision 2437f5fc533ea6acaf8a86a9a703a5909b456516)
@@ -22,6 +22,7 @@
import java.io.IOException;
import java.io.PrintWriter;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -36,10 +37,6 @@
import org.apache.struts.actions.DispatchAction;
import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler;
import org.lamsfoundation.lams.tool.sbmt.InstructionFiles;
-import org.lamsfoundation.lams.tool.sbmt.SubmitFilesContent;
-import org.lamsfoundation.lams.tool.sbmt.dto.AuthoringDTO;
-import org.lamsfoundation.lams.tool.sbmt.service.ISubmitFilesService;
-import org.lamsfoundation.lams.tool.sbmt.service.SubmitFilesServiceProxy;
import org.lamsfoundation.lams.tool.sbmt.util.SbmtConstants;
import org.lamsfoundation.lams.util.WebUtil;
import org.lamsfoundation.lams.web.util.AttributeNames;
@@ -76,23 +73,29 @@
Long contentID = new Long(WebUtil.readLongParam(request,AttributeNames.PARAM_TOOL_CONTENT_ID));
Long versionID = new Long(WebUtil.readLongParam(request,"versionID"));
Long uuID = new Long(WebUtil.readLongParam(request,"uuID"));
-
- ISubmitFilesService service = SubmitFilesServiceProxy.getSubmitFilesService(this
- .getServlet().getServletContext());
+ //handle session value
+ List attachmentList = getAttachmentList(request);
+ List deleteAttachmentList = getDeletedAttachmentList(request);
+ //first check exist attachment and delete old one (if exist) to deletedAttachmentList
+ Iterator iter = attachmentList.iterator();
+ InstructionFiles existAtt;
+ while(iter.hasNext()){
+ existAtt = (InstructionFiles) iter.next();
+ if(existAtt.getUuID().equals(uuID) && existAtt.getVersionID().equals(versionID)){
+ //if there is same name attachment, delete old one
+ deleteAttachmentList.add(existAtt);
+ iter.remove();
+ break;
+ }
+ }
- service.deleteFromRepository(uuID,versionID);
- service.deleteInstructionFile(contentID,uuID,versionID,type);
- SubmitFilesContent content = service.getSubmitFilesContent(contentID);
- AuthoringDTO authorDto = new AuthoringDTO(content);
- List list;
- if(StringUtils.equals(type,IToolContentHandler.TYPE_OFFLINE))
- list = authorDto.getOfflineFiles();
- else
- list = authorDto.getOnlineFiles();
- Iterator iter = list.iterator();
+ iter = attachmentList.iterator();
StringBuffer sb = new StringBuffer();
while(iter.hasNext()){
InstructionFiles file = (InstructionFiles) iter.next();
+ if(!StringUtils.equals(type,file.getType()))
+ continue;
+
sb.append("").append(file.getName()).append("\r\n");
sb.append(" ");
sb.append(this.getResources(request).getMessage("label.view"));
@@ -130,5 +133,33 @@
}
return null;
}
-
+ /**
+ * @param request
+ * @return
+ */
+ private List getAttachmentList(HttpServletRequest request) {
+ return getListFromSession(request,SbmtConstants.ATTACHMENT_LIST);
+ }
+ /**
+ * @param request
+ * @return
+ */
+ private List getDeletedAttachmentList(HttpServletRequest request) {
+ return getListFromSession(request,SbmtConstants.DELETED_ATTACHMENT_LIST);
+ }
+ /**
+ * Get java.util.List
from HttpSession by given name.
+ *
+ * @param request
+ * @param name
+ * @return
+ */
+ private List getListFromSession(HttpServletRequest request,String name) {
+ List list = (List) request.getSession().getAttribute(name);
+ if(list == null){
+ list = new ArrayList();
+ request.getSession().setAttribute(name,list);
+ }
+ return list;
+ }
}
Index: lams_tool_sbmt/web/WEB-INF/struts/validation.xml
===================================================================
diff -u -r279fcb721d30c71b3d61cb67351348a41a9709de -r2437f5fc533ea6acaf8a86a9a703a5909b456516
--- lams_tool_sbmt/web/WEB-INF/struts/validation.xml (.../validation.xml) (revision 279fcb721d30c71b3d61cb67351348a41a9709de)
+++ lams_tool_sbmt/web/WEB-INF/struts/validation.xml (.../validation.xml) (revision 2437f5fc533ea6acaf8a86a9a703a5909b456516)
@@ -7,9 +7,15 @@
+
+