Index: lams_common/src/java/org/lamsfoundation/lams/tool/dao/IToolSessionDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/dao/IToolSessionDAO.java,v diff -u -r1.3 -r1.4 --- lams_common/src/java/org/lamsfoundation/lams/tool/dao/IToolSessionDAO.java 11 Feb 2005 04:22:45 -0000 1.3 +++ lams_common/src/java/org/lamsfoundation/lams/tool/dao/IToolSessionDAO.java 18 Feb 2005 06:05:31 -0000 1.4 @@ -6,7 +6,9 @@ package org.lamsfoundation.lams.tool.dao; +import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.tool.ToolSession; +import org.lamsfoundation.lams.usermanagement.User; /** * Inteface defines Lesson DAO Methods @@ -25,4 +27,7 @@ public void saveToolSession(ToolSession toolSession); public void removeToolSession(ToolSession toolSession); + + public ToolSession getToolSessionByLearner(final User learner,final Activity activity); + } Index: lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolSessionDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolSessionDAO.java,v diff -u -r1.5 -r1.6 --- lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolSessionDAO.java 11 Feb 2005 04:22:45 -0000 1.5 +++ lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolSessionDAO.java 18 Feb 2005 06:05:31 -0000 1.6 @@ -6,17 +6,27 @@ package org.lamsfoundation.lams.tool.dao.hibernate; +import net.sf.hibernate.HibernateException; +import net.sf.hibernate.Session; + +import org.springframework.orm.hibernate.HibernateCallback; +import org.springframework.orm.hibernate.HibernateTemplate; import org.springframework.orm.hibernate.support.HibernateDaoSupport; + +import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.tool.ToolSession; import org.lamsfoundation.lams.tool.dao.IToolSessionDAO; +import org.lamsfoundation.lams.usermanagement.User; /** * Hibernate implementation of ILessonDAO - * @author chris + * @author chris, Jacky Fang */ public class ToolSessionDAO extends HibernateDaoSupport implements IToolSessionDAO { + protected static final String LOAD_NONGROUPED_TOOL_SESSION_BY_LEARNER = + "from NonGroupedToolSession s where s.user = :learner and s.toolActivity = :activity"; /** * Retrieves the ToolSession * @param toolSessionId identifies the ToolSession to get @@ -26,12 +36,34 @@ { return (ToolSession)getHibernateTemplate().get(ToolSession.class, toolSessionId); } + + /** + * Get the tool session by learner and activity. Non-grouped base tool session + * meant to be unique against the user and activity. + * @see org.lamsfoundation.lams.tool.dao.IToolSessionDAO#getToolSessionByLearner(org.lamsfoundation.lams.usermanagement.User, org.lamsfoundation.lams.learningdesign.Activity) + */ + public ToolSession getToolSessionByLearner(final User learner,final Activity activity) + { + HibernateTemplate hibernateTemplate = new HibernateTemplate(this.getSessionFactory()); + + return (ToolSession)hibernateTemplate.execute( + new HibernateCallback() + { + public Object doInHibernate(Session session) throws HibernateException + { + return session.createQuery(LOAD_NONGROUPED_TOOL_SESSION_BY_LEARNER) + .setEntity("learner",learner) + .setEntity("activity",activity) + .uniqueResult(); + } + } + ); + } public void saveToolSession(ToolSession toolSession) { getHibernateTemplate().save(toolSession); } - /** * @see org.lamsfoundation.lams.tool.dao.IToolSessionDAO#removeToolSession(org.lamsfoundation.lams.tool.ToolSession) */ Index: lams_common/test/java/org/lamsfoundation/lams/tool/dao/TestToolSessionDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/tool/dao/Attic/TestToolSessionDAO.java,v diff -u -r1.2 -r1.3 --- lams_common/test/java/org/lamsfoundation/lams/tool/dao/TestToolSessionDAO.java 13 Feb 2005 22:13:33 -0000 1.2 +++ lams_common/test/java/org/lamsfoundation/lams/tool/dao/TestToolSessionDAO.java 18 Feb 2005 06:05:31 -0000 1.3 @@ -62,10 +62,19 @@ assertNotNull(toolSession.getUser()); } + public void testGetToolSessionByLearner() + { + ToolSession toolSession = toolSessionDao.getToolSessionByLearner(testUser,testActivity); + + assertNotNull(toolSession); + } + public void testSaveNonGroupedToolSession() { ToolSession testToolSession=initNGToolSession(); toolSessionDao.saveToolSession(this.ngToolSession); } + + }