Index: lams_build/lib/lams/lams-learning.jar =================================================================== diff -u -r2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc -rc8ada738d232f17c286242d2e86081d116ed1e94 Binary files differ Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r2c76f1a15b8cc50c586e9e35bdbd2f93454f7a98 -rc8ada738d232f17c286242d2e86081d116ed1e94 Binary files differ Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IGroupingDAO.java =================================================================== diff -u -r34b959260a0f8f8285793a4481a95ca3580eabc5 -rc8ada738d232f17c286242d2e86081d116ed1e94 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IGroupingDAO.java (.../IGroupingDAO.java) (revision 34b959260a0f8f8285793a4481a95ca3580eabc5) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IGroupingDAO.java (.../IGroupingDAO.java) (revision c8ada738d232f17c286242d2e86081d116ed1e94) @@ -23,11 +23,14 @@ /* $$Id$$ */ package org.lamsfoundation.lams.learningdesign.dao; +import java.util.List; + import org.lamsfoundation.lams.dao.IBaseDAO; import org.lamsfoundation.lams.learningdesign.Grouping; /** * @author Manpreet Minhas + * @author Fiona Malikoff */ public interface IGroupingDAO extends IBaseDAO { @@ -40,12 +43,11 @@ */ public Grouping getGroupingById(Long groupingID); - /** - * Must return a "real" grouping object, not a CGLIB proxy object. - * - * @param groupingUIID - * @return Grouping populated Grouping object - */ - public Grouping getGroupingByUIID(Integer groupingUIID); + /** + * Returns the list of groupings applicable for the given learning design. + * @param learningDesignId + * @return list of Grouping objects + */ + public List getGroupingsByLearningDesign(Long learningDesignId); } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/GroupingDAO.java =================================================================== diff -u -r34b959260a0f8f8285793a4481a95ca3580eabc5 -rc8ada738d232f17c286242d2e86081d116ed1e94 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/GroupingDAO.java (.../GroupingDAO.java) (revision 34b959260a0f8f8285793a4481a95ca3580eabc5) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/GroupingDAO.java (.../GroupingDAO.java) (revision c8ada738d232f17c286242d2e86081d116ed1e94) @@ -23,9 +23,14 @@ /* $$Id$$ */ package org.lamsfoundation.lams.learningdesign.dao.hibernate; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + import org.lamsfoundation.lams.dao.hibernate.BaseDAO; import org.lamsfoundation.lams.learningdesign.ChosenGrouping; import org.lamsfoundation.lams.learningdesign.Grouping; +import org.lamsfoundation.lams.learningdesign.GroupingActivity; import org.lamsfoundation.lams.learningdesign.RandomGrouping; import org.lamsfoundation.lams.learningdesign.dao.IGroupingDAO; import org.springframework.dao.DataRetrievalFailureException; @@ -35,7 +40,9 @@ */ public class GroupingDAO extends BaseDAO implements IGroupingDAO { - private static final String FIND_BY_UI_ID ="from "+Grouping.class.getName()+" g where g.groupingUIID=:UIID"; + private final static String GROUPINGS_FOR_LEARNING_DESIGN = "select grouping from " + + Grouping.class.getName() + " grouping, " + GroupingActivity.class.getName() + " activity " + + " where activity.createGrouping = grouping and activity.learningDesign.id = ?"; /** * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.IGroupingDAO#getGroupingById(java.lang.Long) @@ -45,19 +52,19 @@ return getNonCGLibGrouping(grouping); } - /** - * @see org.lamsfoundation.lams.learningdesign.dao.IGroupingDAO#getGroupingByUIID(java.lang.Integer) - */ - public Grouping getGroupingByUIID(Integer groupingUIID) { - if ( groupingUIID != null ) { - Grouping grouping = (Grouping) getSession() - .createQuery(FIND_BY_UI_ID) - .setInteger("UIID",groupingUIID.intValue()) - .uniqueResult(); - return getNonCGLibGrouping(grouping); - } - return null; - } + /** + * Returns the list of groupings applicable for the given learning design. + */ + public List getGroupingsByLearningDesign(Long learningDesignId){ + List groupings = this.getHibernateTemplate().find(GROUPINGS_FOR_LEARNING_DESIGN,learningDesignId); + ArrayList realGroupings = new ArrayList(groupings.size()); + Iterator iter = groupings.iterator(); + while (iter.hasNext()) { + Grouping element = (Grouping) iter.next(); + realGroupings.add(getNonCGLibGrouping(element)); + } + return realGroupings; + } /** we must return the real grouping, not a Hibernate proxy. So relook * it up. This should be quick as it should be in the cache. Index: lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILearnerProgressDAO.java =================================================================== diff -u -r7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec -rc8ada738d232f17c286242d2e86081d116ed1e94 --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILearnerProgressDAO.java (.../ILearnerProgressDAO.java) (revision 7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILearnerProgressDAO.java (.../ILearnerProgressDAO.java) (revision c8ada738d232f17c286242d2e86081d116ed1e94) @@ -24,8 +24,6 @@ package org.lamsfoundation.lams.lesson.dao; import org.lamsfoundation.lams.lesson.LearnerProgress; -import org.lamsfoundation.lams.lesson.Lesson; -import org.lamsfoundation.lams.usermanagement.User; /** * Inteface defines Lesson DAO Methods @@ -44,11 +42,10 @@ /** * Retrieves the learner progress object for user in a lesson. * @param learnerId the user who owns the learner progress data. - * @param lesson the lesson for which the progress data applies + * @param lessonId the lesson for which the progress data applies * @return the user's progress data */ - public LearnerProgress getLearnerProgressByLearner(final Integer learnerId, - final Lesson lesson); + public LearnerProgress getLearnerProgressByLearner(final Integer learnerId, final Long lessonId); /** * Saves or Updates learner progress data. Index: lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LearnerProgressDAO.java =================================================================== diff -u -r7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec -rc8ada738d232f17c286242d2e86081d116ed1e94 --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LearnerProgressDAO.java (.../LearnerProgressDAO.java) (revision 7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LearnerProgressDAO.java (.../LearnerProgressDAO.java) (revision c8ada738d232f17c286242d2e86081d116ed1e94) @@ -26,9 +26,7 @@ import org.hibernate.HibernateException; import org.hibernate.Session; import org.lamsfoundation.lams.lesson.LearnerProgress; -import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.dao.ILearnerProgressDAO; -import org.lamsfoundation.lams.usermanagement.User; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; @@ -40,7 +38,7 @@ public class LearnerProgressDAO extends HibernateDaoSupport implements ILearnerProgressDAO { private final static String LOAD_PROGRESS_BY_LEARNER = - "from LearnerProgress p where p.user.id = :learnerId and p.lesson = :lesson"; + "from LearnerProgress p where p.user.id = :learnerId and p.lesson.id = :lessonId"; /** * Retrieves the Lesson @@ -71,9 +69,9 @@ } /** - * @see org.lamsfoundation.lams.lesson.dao.ILearnerProgressDAO#getLearnerProgressByLeaner(java.lang.Integer,org.lamsfoundation.lams.lesson.Lesson) + * @see org.lamsfoundation.lams.lesson.dao.ILearnerProgressDAO#getLearnerProgressByLeaner(java.lang.Integer,java.lang.Long) */ - public LearnerProgress getLearnerProgressByLearner(final Integer learnerId, final Lesson lesson) + public LearnerProgress getLearnerProgressByLearner(final Integer learnerId, final Long lessonId) { HibernateTemplate hibernateTemplate = new HibernateTemplate(this.getSessionFactory()); @@ -84,7 +82,7 @@ { return session.createQuery(LOAD_PROGRESS_BY_LEARNER) .setInteger("learnerId",learnerId) - .setEntity("lesson",lesson) + .setLong("lessonId",lessonId) .uniqueResult(); } } Index: lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLearnerProgressDAO.java =================================================================== diff -u -r7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec -rc8ada738d232f17c286242d2e86081d116ed1e94 --- lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLearnerProgressDAO.java (.../TestLearnerProgressDAO.java) (revision 7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec) +++ lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLearnerProgressDAO.java (.../TestLearnerProgressDAO.java) (revision c8ada738d232f17c286242d2e86081d116ed1e94) @@ -90,7 +90,7 @@ public void testGetNullLearnerProgressByLearner() { - LearnerProgress progress= learnerProgressDao.getLearnerProgressByLearner(testUser.getUserId(),testLesson); + LearnerProgress progress= learnerProgressDao.getLearnerProgressByLearner(testUser.getUserId(),testLesson.getLessonId()); assertNull("should not get any progress data",progress); } @@ -99,7 +99,7 @@ { super.learnerProgressDao.saveLearnerProgress(this.testLearnerProgress); - LearnerProgress progress= learnerProgressDao.getLearnerProgressByLearner(testUser.getUserId(),testLesson); + LearnerProgress progress= learnerProgressDao.getLearnerProgressByLearner(testUser.getUserId(),testLesson.getLessonId()); assertLearnerProgressInitialization(progress); super.learnerProgressDao.deleteLearnerProgress(testLearnerProgress); @@ -115,14 +115,14 @@ super.learnerProgressDao.deleteLearnerProgress(testLearnerProgress); super.getSession().flush(); - LearnerProgress nullProgress= learnerProgressDao.getLearnerProgressByLearner(testUser.getUserId(),testLesson); + LearnerProgress nullProgress= learnerProgressDao.getLearnerProgressByLearner(testUser.getUserId(),testLesson.getLessonId()); assertNull("should not get any progress data",nullProgress); } public void testGetLearnerProgressByLeaner() throws HibernateException { super.learnerProgressDao.saveLearnerProgress(this.testLearnerProgress); - LearnerProgress progress= learnerProgressDao.getLearnerProgressByLearner(testUser.getUserId(),testLesson); + LearnerProgress progress= learnerProgressDao.getLearnerProgressByLearner(testUser.getUserId(),testLesson.getLessonId()); assertLearnerProgressInitialization(progress); super.learnerProgressDao.deleteLearnerProgress(testLearnerProgress); super.getSession().flush(); @@ -145,7 +145,7 @@ public void testUpdateLearnerProgress() throws HibernateException { super.learnerProgressDao.saveLearnerProgress(this.testLearnerProgress); - LearnerProgress progress= learnerProgressDao.getLearnerProgressByLearner(testUser.getUserId(),testLesson); + LearnerProgress progress= learnerProgressDao.getLearnerProgressByLearner(testUser.getUserId(),testLesson.getLessonId()); Activity firstActivity = this.testLesson.getLearningDesign().getFirstActivity(); @@ -156,7 +156,7 @@ super.learnerProgressDao.updateLearnerProgress(progress); - LearnerProgress updatedProgress= learnerProgressDao.getLearnerProgressByLearner(testUser.getUserId(),testLesson); + LearnerProgress updatedProgress= learnerProgressDao.getLearnerProgressByLearner(testUser.getUserId(),testLesson.getLessonId()); assertLearnerProgressInitialization(progress); assertEquals("verify completed activity",2,updatedProgress.getCompletedActivities().size()); assertEquals("verify attempted activity",1,updatedProgress.getAttemptedActivities().size());