Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/ResourceConstants.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/ResourceConstants.java,v diff -u -r1.12 -r1.13 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/ResourceConstants.java 20 Apr 2006 04:44:16 -0000 1.12 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/ResourceConstants.java 20 Apr 2006 05:31:42 -0000 1.13 @@ -27,6 +27,8 @@ public static final String TOOL_SIGNNATURE = "larsrc11"; public static final String RESOURCE_SERVICE = "resourceService"; + public static final int COMPLETED = 1; + //resource type; public static final short RESOURCE_TYPE_URL = 1; public static final short RESOURCE_TYPE_FILE = 2; Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/rsrcApplicationContext.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/rsrcApplicationContext.xml,v diff -u -r1.3 -r1.4 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/rsrcApplicationContext.xml 4 Apr 2006 07:05:55 -0000 1.3 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/rsrcApplicationContext.xml 20 Apr 2006 05:31:42 -0000 1.4 @@ -107,7 +107,10 @@ PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception + PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception + PROPAGATION_REQUIRED,-java.lang.Exception + PROPAGATION_REQUIRED,-java.lang.Exception Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/ResourceDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/ResourceDAO.java,v diff -u -r1.3 -r1.4 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/ResourceDAO.java 3 Apr 2006 13:24:23 -0000 1.3 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/ResourceDAO.java 20 Apr 2006 05:31:42 -0000 1.4 @@ -31,4 +31,6 @@ Resource getByUid(Long resourceUid); + void delete(Resource resource); + } Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/ResourceSessionDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/ResourceSessionDAO.java,v diff -u -r1.3 -r1.4 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/ResourceSessionDAO.java 20 Apr 2006 04:44:16 -0000 1.3 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/ResourceSessionDAO.java 20 Apr 2006 05:31:42 -0000 1.4 @@ -23,10 +23,18 @@ /* $$Id$$ */ package org.lamsfoundation.lams.tool.rsrc.dao; +import java.util.List; + import org.lamsfoundation.lams.tool.rsrc.model.ResourceSession; public interface ResourceSessionDAO extends DAO { ResourceSession getSessionBySessionId(Long sessionId); + List getByContentId(Long toolContentId); + + void delete(ResourceSession session); + + void deleteBySessionId(Long toolSessionId); + } Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/hibernate/ResourceDAOHibernate.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/hibernate/ResourceDAOHibernate.java,v diff -u -r1.4 -r1.5 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/hibernate/ResourceDAOHibernate.java 3 Apr 2006 13:24:23 -0000 1.4 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/hibernate/ResourceDAOHibernate.java 20 Apr 2006 05:31:42 -0000 1.5 @@ -49,4 +49,8 @@ return (Resource) getObject(Resource.class,resourceUid); } + public void delete(Resource resource) { + this.getHibernateTemplate().delete(resource); + } + } Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/hibernate/ResourceSessionDAOHibernate.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/hibernate/ResourceSessionDAOHibernate.java,v diff -u -r1.3 -r1.4 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/hibernate/ResourceSessionDAOHibernate.java 20 Apr 2006 04:44:16 -0000 1.3 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dao/hibernate/ResourceSessionDAOHibernate.java 20 Apr 2006 05:31:42 -0000 1.4 @@ -32,11 +32,23 @@ public class ResourceSessionDAOHibernate extends BaseDAOHibernate implements ResourceSessionDAO{ private static final String FIND_BY_SESSION_ID = "from " + ResourceSession.class.getName() + " as p where p.sessionId=?"; + private static final String FIND_BY_CONTENT_ID = "from " + ResourceSession.class.getName() + " as p where p.resource_uid=?"; + public ResourceSession getSessionBySessionId(Long sessionId) { List list = getHibernateTemplate().find(FIND_BY_SESSION_ID,sessionId); if(list == null || list.size() == 0) return null; return (ResourceSession) list.get(0); } + public List getByContentId(Long toolContentId) { + return getHibernateTemplate().find(FIND_BY_CONTENT_ID,toolContentId); + } + + public void delete(ResourceSession session) { + this.getHibernateTemplate().delete(session); + } + public void deleteBySessionId(Long toolSessionId) { + this.removeObject(ResourceSession.class,toolSessionId); + } } Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java,v diff -u -r1.10 -r1.11 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java 20 Apr 2006 04:44:16 -0000 1.10 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java 20 Apr 2006 05:31:42 -0000 1.11 @@ -28,7 +28,9 @@ import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; +import java.util.Set; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; @@ -46,6 +48,12 @@ import org.lamsfoundation.lams.contentrepository.service.IRepositoryService; import org.lamsfoundation.lams.contentrepository.service.SimpleCredentials; import org.lamsfoundation.lams.learning.service.ILearnerService; +import org.lamsfoundation.lams.tool.ToolContentManager; +import org.lamsfoundation.lams.tool.ToolSessionExportOutputData; +import org.lamsfoundation.lams.tool.ToolSessionManager; +import org.lamsfoundation.lams.tool.exception.DataMissingException; +import org.lamsfoundation.lams.tool.exception.SessionDataExistsException; +import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.rsrc.ResourceConstants; import org.lamsfoundation.lams.tool.rsrc.dao.ResourceAttachmentDAO; import org.lamsfoundation.lams.tool.rsrc.dao.ResourceDAO; @@ -73,7 +81,7 @@ * */ public class ResourceServiceImpl implements - IResourceService + IResourceService,ToolContentManager, ToolSessionManager { static Logger log = Logger.getLogger(ResourceServiceImpl.class.getName()); @@ -142,15 +150,15 @@ } } /** - * This method verifies the credentials of the SubmitFiles Tool and gives it + * This method verifies the credentials of the Share Resource Tool and gives it * the Ticket to login and access the Content Repository. * * A valid ticket is needed in order to access the content from the * repository. This method would be called evertime the tool needs to * upload/download files from the content repository. * * @return ITicket The ticket for repostory access - * @throws SubmitFilesException + * @throws ResourceApplicationException */ private ITicket getRepositoryLoginTicket() throws ResourceApplicationException { ICredentials credentials = new SimpleCredentials( @@ -329,7 +337,6 @@ /** * Process an uploaded file. * - * @param forumForm * @throws ResourceApplicationException * @throws FileNotFoundException * @throws IOException @@ -487,4 +494,115 @@ this.toolService = toolService; } + //******************************************************************************* + //ToolContentManager, ToolSessionManager methods + //******************************************************************************* + public void copyToolContent(Long fromContentId, Long toContentId) throws ToolException { + if (fromContentId == null || toContentId == null) + throw new ToolException( + "Failed to create the SharedResourceFiles tool seession"); + + Resource resource = resourceDao.getByContentId(fromContentId); + if ( resource == null ) { + try { + resource = getDefaultContent(fromContentId); + } catch (ResourceApplicationException e) { + throw new ToolException(e); + } + } + Resource toContent = Resource.newInstance(resource,toContentId,resourceToolContentHandler); + resourceDao.saveObject(toContent); + + //save resource items + Set items = toContent.getResourceItems(); + if(items != null){ + Iterator iter = items.iterator(); + while(iter.hasNext()){ + ResourceItem item = (ResourceItem) iter.next(); +// createRootTopic(toContent.getUid(),null,msg); + } + } + } + + + public void setAsDefineLater(Long toolContentId) throws DataMissingException, ToolException { + Resource resource = resourceDao.getByContentId(toolContentId); + if(resource == null){ + throw new ToolException("No found tool content by given content ID:" + toolContentId); + } + resource.setDefineLater(true); + } + + + public void setAsRunOffline(Long toolContentId) throws DataMissingException, ToolException { + Resource resource = resourceDao.getByContentId(toolContentId); + if(resource == null){ + throw new ToolException("No found tool content by given content ID:" + toolContentId); + } + resource.setRunOffline(true); + } + + + public void removeToolContent(Long toolContentId, boolean removeSessionData) throws SessionDataExistsException, ToolException { + Resource resource = resourceDao.getByContentId(toolContentId); + if(removeSessionData){ + List list = resourceSessionDao.getByContentId(toolContentId); + Iterator iter = list.iterator(); + while(iter.hasNext()){ + ResourceSession session = (ResourceSession ) iter.next(); + resourceSessionDao.delete(session); + } + } + resourceDao.delete(resource); + } + + + public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { + ResourceSession session = new ResourceSession(); + session.setSessionId(toolSessionId); + session.setSessionName(toolSessionName); + Resource resource = resourceDao.getByContentId(toolContentId); + session.setResource(resource); + resourceSessionDao.saveObject(session); + } + + + public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { + if(toolSessionId == null){ + log.error("Fail to leave tool Session based on null tool session id."); + throw new ToolException("Fail to remove tool Session based on null tool session id."); + } + if(learnerId == null){ + log.error("Fail to leave tool Session based on null learner."); + throw new ToolException("Fail to remove tool Session based on null learner."); + } + + ResourceSession session = resourceSessionDao.getSessionBySessionId(toolSessionId); + if(session != null){ + session.setStatus(ResourceConstants.COMPLETED); + resourceSessionDao.saveObject(session); + }else{ + log.error("Fail to leave tool Session.Could not find shared resources " + + "session by given session id: "+toolSessionId); + throw new DataMissingException("Fail to leave tool Session." + + "Could not find shared resource session by given session id: "+toolSessionId); + } + return learnerService.completeToolSession(toolSessionId,learnerId); + } + + + public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { + return null; + } + + + public ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, ToolException { + return null; + } + + + public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { + resourceSessionDao.deleteBySessionId(toolSessionId); + } + }