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) {