Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmitFilesContentDAO.java
===================================================================
diff -u -reebdf6c7a06bd126cf6331883dd60e4ca72ac5c9 -r75505d34c45a3c8b688d43860e1dd8d0a25d6bc4
--- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmitFilesContentDAO.java (.../ISubmitFilesContentDAO.java) (revision eebdf6c7a06bd126cf6331883dd60e4ca72ac5c9)
+++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmitFilesContentDAO.java (.../ISubmitFilesContentDAO.java) (revision 75505d34c45a3c8b688d43860e1dd8d0a25d6bc4)
@@ -29,7 +29,7 @@
*
* @param content
*/
- public void save(SubmitFilesContent content);
+ public void saveOrUpdate(SubmitFilesContent content);
public void deleteInstructionFile(Long contentID, Long uuid, Long versionID, String type);
Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitFilesContentDAO.java
===================================================================
diff -u -r6e5832d17263bc6c6f7683733e91e22f97eab569 -r75505d34c45a3c8b688d43860e1dd8d0a25d6bc4
--- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitFilesContentDAO.java (.../SubmitFilesContentDAO.java) (revision 6e5832d17263bc6c6f7683733e91e22f97eab569)
+++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitFilesContentDAO.java (.../SubmitFilesContentDAO.java) (revision 75505d34c45a3c8b688d43860e1dd8d0a25d6bc4)
@@ -49,9 +49,9 @@
/* (non-Javadoc)
* @see org.lamsfoundation.lams.tool.sbmt.dao.ISubmitFilesContentDAO#save(org.lamsfoundation.lams.tool.sbmt.SubmitFilesContent)
*/
- public void save(SubmitFilesContent content) {
+ public void saveOrUpdate(SubmitFilesContent content) {
this.getSession().setFlushMode(FlushMode.COMMIT);
- this.getHibernateTemplate().save(content);
+ this.getHibernateTemplate().saveOrUpdate(content);
this.getHibernateTemplate().flush();
}
Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/ISubmitFilesService.java
===================================================================
diff -u -r837aa6d15c08f6d4b1cd80b7b4cc3d56e494c9ed -r75505d34c45a3c8b688d43860e1dd8d0a25d6bc4
--- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/ISubmitFilesService.java (.../ISubmitFilesService.java) (revision 837aa6d15c08f6d4b1cd80b7b4cc3d56e494c9ed)
+++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/ISubmitFilesService.java (.../ISubmitFilesService.java) (revision 75505d34c45a3c8b688d43860e1dd8d0a25d6bc4)
@@ -39,22 +39,7 @@
*/
public interface ISubmitFilesService {
-
/**
- * This method adds a new content record to the database.
- *
- */
- public void addSubmitFilesContent(SubmitFilesContent content);
-
- /**
- * Updates the record in the database
- *
- * @param submitFilesContent
- * The SubmitFilesContent
to be updated
- */
- public void updateSubmitFilesContent(SubmitFilesContent submitFilesContent);
-
- /**
* Returns the SubmitFilesContent
object corresponding to the
* given contentID
. If could not find out corresponding
* SubmitFilesContent
by given contentID
, return a not-null
@@ -201,4 +186,10 @@
*/
//public List getSubmitFilesSessionsByContentID(Long contentID);
public List getSubmitFilesSessionByContentID(Long contentID);
+ /**
+ * Save or update tool content into database.
+ * @param persistContent
+ * The SubmitFilesContent
to be updated
+ */
+ public void saveOrUpdateContent(SubmitFilesContent persistContent);
}
Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java
===================================================================
diff -u -rc851c6113c43610c970bbd7c939018f1e4d38c76 -r75505d34c45a3c8b688d43860e1dd8d0a25d6bc4
--- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision c851c6113c43610c970bbd7c939018f1e4d38c76)
+++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision 75505d34c45a3c8b688d43860e1dd8d0a25d6bc4)
@@ -136,7 +136,7 @@
content = duplicateDefaultToolContent(toolContentId);
}
content.setRunOffline(true);
- submitFilesContentDAO.save(content);
+ submitFilesContentDAO.saveOrUpdate(content);
}
catch (DataAccessException e)
{
@@ -175,7 +175,7 @@
content = duplicateDefaultToolContent(toolContentId);
}
content.setDefineLater(true);
- submitFilesContentDAO.save(content);
+ submitFilesContentDAO.saveOrUpdate(content);
}
catch (DataAccessException e)
{
@@ -210,26 +210,15 @@
}
}
- /**
- * (non-Javadoc)
- *
- * @see org.lamsfoundation.lams.tool.sbmt.service.ISubmitFilesService#addSubmitFilesContent(SubmitFilesContent)
- */
- public void addSubmitFilesContent(SubmitFilesContent content) {
- submitFilesContentDAO.save(content);
- }
/*
* (non-Javadoc)
*
* @see org.lamsfoundation.lams.tool.sbmt.service.ISubmitFilesService#updateSubmitFilesContent(org.lamsfoundation.lams.tool.sbmt.SubmitFilesContent)
*/
- public void updateSubmitFilesContent(SubmitFilesContent submitFilesContent) {
- submitFilesContentDAO.update(submitFilesContent);
+ public void saveOrUpdateContent(SubmitFilesContent submitFilesContent) {
+ submitFilesContentDAO.saveOrUpdate(submitFilesContent);
}
- public void saveSubmitFilesContent(SubmitFilesContent submitFilesContent) {
- submitFilesContentDAO.save(submitFilesContent);
- }
/*
* (non-Javadoc)
@@ -694,7 +683,7 @@
content = SubmitFilesContent.newInstance(defaultContent,contentID,sbmtToolContentHandler);
content.setContentID(contentID);
- saveSubmitFilesContent(content);
+// saveSubmitFilesContent(content);
return content;
}
Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/AuthoringAction.java
===================================================================
diff -u -r2437f5fc533ea6acaf8a86a9a703a5909b456516 -r75505d34c45a3c8b688d43860e1dd8d0a25d6bc4
--- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/AuthoringAction.java (.../AuthoringAction.java) (revision 2437f5fc533ea6acaf8a86a9a703a5909b456516)
+++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/AuthoringAction.java (.../AuthoringAction.java) (revision 75505d34c45a3c8b688d43860e1dd8d0a25d6bc4)
@@ -92,50 +92,57 @@
.getServlet().getServletContext());
try {
SubmitFilesContent persistContent = submitFilesService.getSubmitFilesContent(content.getContentID());
- 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)
- 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();
+
+ if(persistContent == null || content.getContentID() == null
+ || !content.getContentID().equals(persistContent.getContentID())){
+ //new content
+ persistContent = content;
+ }
- 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;
- }
+ //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)
+ Set attPOSet = persistContent.getInstructionFiles();
+ if(attPOSet == null)
+ attPOSet = new HashSet();
+ 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);
- submitFilesService.updateSubmitFilesContent(persistContent);
- }else
- submitFilesService.addSubmitFilesContent(content);
+ }
+ 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);
+
+ submitFilesService.saveOrUpdateContent(persistContent);
} catch (Exception e) {
log.error(e);
}
Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/MonitoringAction.java
===================================================================
diff -u -r18af423790dd09bf86e8ba5f623cec545a28c694 -r75505d34c45a3c8b688d43860e1dd8d0a25d6bc4
--- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/MonitoringAction.java (.../MonitoringAction.java) (revision 18af423790dd09bf86e8ba5f623cec545a28c694)
+++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/MonitoringAction.java (.../MonitoringAction.java) (revision 75505d34c45a3c8b688d43860e1dd8d0a25d6bc4)
@@ -428,7 +428,7 @@
SubmitFilesContent content = submitFilesService.getSubmitFilesContent(contentID);
content.setTitle(title);
content.setInstruction(instructions);
- submitFilesService.updateSubmitFilesContent(content);
+ submitFilesService.saveOrUpdateContent(content);
return mapping.findForward("success");
}