Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McContent.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/Attic/McContent.java,v diff -u -r1.12 -r1.13 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McContent.java 19 Dec 2005 20:34:52 -0000 1.12 +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McContent.java 24 Dec 2005 20:50:20 -0000 1.13 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/Attic/McUploadedFile.java,v diff -u -r1.5 -r1.6 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McUploadedFile.java 19 Dec 2005 20:36:09 -0000 1.5 +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McUploadedFile.java 24 Dec 2005 20:50:31 -0000 1.6 @@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java,v
diff -u -r1.31 -r1.32
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java 18 Dec 2005 19:57:51 -0000 1.31
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java 24 Dec 2005 20:50:51 -0000 1.32
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java,v
diff -u -r1.35 -r1.36
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java 24 Dec 2005 18:57:42 -0000 1.35
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java 24 Dec 2005 20:50:51 -0000 1.36
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java,v
diff -u -r1.36 -r1.37
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java 24 Dec 2005 19:01:55 -0000 1.36
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java 24 Dec 2005 20:51:04 -0000 1.37
@@ -162,7 +162,7 @@
try
{
- mcService.copyToolContent(fromContentId, toContentId);
+ mcService.copyToolContent(fromContentId, toContentId, request);
}
catch(ToolException e)
{