Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McContent.java =================================================================== diff -u -r3e8a2742fa273f3a67859ee1200c03e248bd1aae -r070e73301afd033583fa0062749425fbbdece17d --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McContent.java (.../McContent.java) (revision 3e8a2742fa273f3a67859ee1200c03e248bd1aae) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McContent.java (.../McContent.java) (revision 070e73301afd033583fa0062749425fbbdece17d) @@ -29,6 +29,8 @@ import java.util.Set; import java.util.TreeSet; +import javax.servlet.http.HttpServletRequest; + import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.log4j.Logger; @@ -174,7 +176,7 @@ * @return the new mc content object. */ public static McContent newInstance(McContent mc, - Long newContentId) + Long newContentId, HttpServletRequest request) { McContent newContent = new McContent( newContentId, @@ -203,8 +205,10 @@ new TreeSet() ); newContent.setMcQueContents(mc.deepCopyMcQueContent(newContent)); - newContent.setMcAttachments(mc.deepCopyMcAttachments(newContent)); + newContent.setMcAttachments(mc.deepCopyMcAttachments(newContent, request)); + + return newContent; } @@ -236,7 +240,7 @@ * @param newMcContent * @return Set */ - public Set deepCopyMcAttachments(McContent newMcContent) + public Set deepCopyMcAttachments(McContent newMcContent, HttpServletRequest request) { Set newMcQueContent = new TreeSet(); for (Iterator i = this.getMcAttachments().iterator(); i.hasNext();) @@ -245,7 +249,7 @@ if (mcUploadedFile.getMcContent() != null) { McUploadedFile newMcUploadedFile=McUploadedFile.newInstance(mcUploadedFile, - newMcContent); + newMcContent, request); newMcQueContent.add(newMcUploadedFile); } } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McUploadedFile.java =================================================================== diff -u -r235c4ce5577dbe569ef93fbcc5205c761e3158b0 -r070e73301afd033583fa0062749425fbbdece17d --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McUploadedFile.java (.../McUploadedFile.java) (revision 235c4ce5577dbe569ef93fbcc5205c761e3158b0) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McUploadedFile.java (.../McUploadedFile.java) (revision 070e73301afd033583fa0062749425fbbdece17d) @@ -22,7 +22,13 @@ import java.io.Serializable; +import javax.servlet.http.HttpServletRequest; + import org.apache.commons.lang.builder.ToStringBuilder; +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.contentrepository.NodeKey; +import org.lamsfoundation.lams.contentrepository.RepositoryCheckedException; +import org.lamsfoundation.lams.tool.mc.service.IMcService; /** *
Persistent object/bean that defines the uploaded file for the MCQ tool.
@@ -34,6 +40,8 @@
*/
public class McUploadedFile implements Serializable, Comparable
{
+ static Logger logger = Logger.getLogger(McUploadedFile.class.getName());
+
/** identifier field */
private Long uid;
@@ -92,14 +100,28 @@
public static McUploadedFile newInstance(McUploadedFile mcUploadedFile,
- McContent newMcContent)
+ McContent newMcContent, HttpServletRequest request)
{
- McUploadedFile newMcUploadedFile = new McUploadedFile(mcUploadedFile.getUuid(),
- mcUploadedFile.isFileOnline(),
- mcUploadedFile.getFilename(),
- newMcContent);
- return newMcUploadedFile;
+ IMcService mcService =McUtils.getToolService(request);
+ McUploadedFile newMcUploadedFile=null;
+
+ try
+ {
+ NodeKey copiedNodeKey = mcService.copyFile(new Long(mcUploadedFile.getUuid()));
+ logger.debug("copiedNodeKey: " + copiedNodeKey);
+ newMcUploadedFile = new McUploadedFile(copiedNodeKey.getUuid().toString(),
+ mcUploadedFile.isFileOnline(),
+ mcUploadedFile.getFilename(),
+ newMcContent);
+
+ }
+ catch(RepositoryCheckedException e)
+ {
+ logger.debug("error occurred: " + e);
+ }
+
+ return newMcUploadedFile;
}
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java
===================================================================
diff -u -r88d5dbe3e6552bb320ad648f984662ccbd670157 -r070e73301afd033583fa0062749425fbbdece17d
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java (.../IMcService.java) (revision 88d5dbe3e6552bb320ad648f984662ccbd670157)
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java (.../IMcService.java) (revision 070e73301afd033583fa0062749425fbbdece17d)
@@ -25,6 +25,8 @@
import java.io.InputStream;
import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+
import org.lamsfoundation.lams.contentrepository.ITicket;
import org.lamsfoundation.lams.contentrepository.NodeKey;
import org.lamsfoundation.lams.contentrepository.RepositoryCheckedException;
@@ -148,6 +150,8 @@
public boolean studentActivityOccurred(McContent mc) throws McApplicationException;
public void copyToolContent(Long fromContentId, Long toContentId) throws ToolException;
+
+ public void copyToolContent(Long fromContentId, Long toContentId, HttpServletRequest request) throws ToolException;
public void setAsForceCompleteSession(Long toolSessionId) throws McApplicationException;
@@ -227,6 +231,8 @@
public NodeKey uploadFile(InputStream istream, String filename, String contentType, String fileType) throws RepositoryCheckedException;
+ public NodeKey copyFile(Long uuid) throws RepositoryCheckedException;
+
public void removeOffLineFile(String filename, Long mcContentId) throws McApplicationException;
public void removeOnLineFile(String filename, Long mcContentId) throws McApplicationException;
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java
===================================================================
diff -u -r057f73622ec6b272df95a156ad0ade82971b529f -r070e73301afd033583fa0062749425fbbdece17d
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision 057f73622ec6b272df95a156ad0ade82971b529f)
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision 070e73301afd033583fa0062749425fbbdece17d)
@@ -27,6 +27,8 @@
import java.util.List;
import java.util.TreeSet;
+import javax.servlet.http.HttpServletRequest;
+
import org.apache.log4j.Logger;
import org.lamsfoundation.lams.contentrepository.AccessDeniedException;
import org.lamsfoundation.lams.contentrepository.FileException;
@@ -990,9 +992,100 @@
* gets called by Container+Flash
*
*/
+
+ public void copyToolContent(Long fromContentId, Long toContentId, HttpServletRequest request) throws ToolException
+ {
+ logger.debug("start of copyToolContent with ids: " + fromContentId + " and " + toContentId);
+
+ if (fromContentId == null)
+ {
+ logger.debug("fromContentId is null.");
+ logger.debug("attempt retrieving tool's default content id with signatute : " + MY_SIGNATURE);
+ long defaultContentId=0;
+ try
+ {
+ defaultContentId=getToolDefaultContentIdBySignature(MY_SIGNATURE);
+ fromContentId= new Long(defaultContentId);
+ }
+ catch(Exception e)
+ {
+ logger.debug("default content id has not been setup for signature: " + MY_SIGNATURE);
+ throw new ToolException("WARNING! default content has not been setup for signature" + MY_SIGNATURE + " Can't continue!");
+ }
+ }
+
+ if (toContentId == null)
+ {
+ logger.debug("throwing ToolException: toContentId is null");
+ throw new ToolException("toContentId is missing");
+ }
+ logger.debug("final - copyToolContent using ids: " + fromContentId + " and " + toContentId);
+
+ try
+ {
+ McContent fromContent = mcContentDAO.findMcContentById(fromContentId);
+
+ if (fromContent == null)
+ {
+ logger.debug("fromContent is null.");
+ logger.debug("attempt retrieving tool's default content id with signatute : " + MY_SIGNATURE);
+ long defaultContentId=0;
+ try
+ {
+ defaultContentId=getToolDefaultContentIdBySignature(MY_SIGNATURE);
+ fromContentId= new Long(defaultContentId);
+ }
+ catch(Exception e)
+ {
+ logger.debug("default content id has not been setup for signature: " + MY_SIGNATURE);
+ throw new ToolException("WARNING! default content has not been setup for signature" + MY_SIGNATURE + " Can't continue!");
+ }
+
+ fromContent = mcContentDAO.findMcContentById(fromContentId);
+ logger.debug("using fromContent: " + fromContent);
+ }
+
+ logger.debug("final - retrieved fromContent: " + fromContent);
+ logger.debug("final - before new instance using " + fromContent + " and " + toContentId);
+ McContent toContent = McContent.newInstance(fromContent,toContentId, request);
+ if (toContent == null)
+ {
+ logger.debug("throwing ToolException: WARNING!, retrieved toContent is null.");
+ throw new ToolException("WARNING! Fail to create toContent. Can't continue!");
+ }
+ else
+ {
+ logger.debug("retrieved toContent: " + toContent);
+ mcContentDAO.saveMcContent(toContent);
+ logger.debug("toContent has been saved successfully: " + toContent);
+ }
+ logger.debug("end of copyToolContent with ids: " + fromContentId + " and " + toContentId);
+ }
+ catch (DataAccessException e)
+ {
+ logger.debug("throwing ToolException: Exception occured when lams is copying content between content ids.");
+ throw new ToolException("Exception occured when lams is copying content between content ids.");
+ }
+ }
+
- public void copyToolContent(Long fromContentId, Long toContentId) throws ToolException
+ /**
+ *
+ * gets called ONLY when a lesson is being created in monitoring mode.
+ * Should create the new content(toContent) based on what the author has created her content with. In q/a tool's case
+ * that is content + question's content but not user responses. The deep copy should go only as far as
+ * default content (or author created content) already goes.
+ * ToolContentManager CONTRACT
+ *
+ *
+ * similar to public void removeToolContent(Long toolContentId)
+ * gets called by Container+Flash
+ *
+ */
+
+ public void copyToolContent(Long fromContentId, Long toContentId) throws ToolException
{
+ /*
logger.debug("start of copyToolContent with ids: " + fromContentId + " and " + toContentId);
if (fromContentId == null)
@@ -1064,9 +1157,10 @@
logger.debug("throwing ToolException: Exception occured when lams is copying content between content ids.");
throw new ToolException("Exception occured when lams is copying content between content ids.");
}
+ */
}
+
-
/**
* TO BE DEFINED-FUTURE API
@@ -1651,6 +1745,11 @@
}
+ public NodeKey copyFile(Long uuid) throws RepositoryCheckedException
+ {
+ return mcToolContentHandler.copyFile(uuid);
+ }
+
/**
* This method verifies the credentials of the SubmitFiles Tool and gives it
* the Ticket
to login and access the Content Repository.
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java
===================================================================
diff -u -r336dd0a5a85e5ddc5c2b46f7a3388b31903a51c9 -r070e73301afd033583fa0062749425fbbdece17d
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java (.../McStarterAction.java) (revision 336dd0a5a85e5ddc5c2b46f7a3388b31903a51c9)
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java (.../McStarterAction.java) (revision 070e73301afd033583fa0062749425fbbdece17d)
@@ -162,7 +162,7 @@
try
{
- mcService.copyToolContent(fromContentId, toContentId);
+ mcService.copyToolContent(fromContentId, toContentId, request);
}
catch(ToolException e)
{