Index: lams_common/src/java/org/lamsfoundation/lams/lesson/LessonClass.java =================================================================== diff -u -rfbeb734a6ccb4d08e312fbf1b7fc6eb7bae46535 -r315fad9f727a91c28b274654eab02cac89d76b9c --- lams_common/src/java/org/lamsfoundation/lams/lesson/LessonClass.java (.../LessonClass.java) (revision fbeb734a6ccb4d08e312fbf1b7fc6eb7bae46535) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/LessonClass.java (.../LessonClass.java) (revision 315fad9f727a91c28b274654eab02cac89d76b9c) @@ -81,7 +81,7 @@ */ public boolean isLearnerGroup(Group group) { - if(group.getGroupId()==null||staffGroup.getGroupId()==null) + if(group==null||group.getGroupId()==null||staffGroup.getGroupId()==null) return false; return staffGroup.getGroupId()!=group.getGroupId(); @@ -120,11 +120,7 @@ return false; // should be one ordinary group for lesson class, and this is all the learners in the lesson class - Group learnersGroup = null; - Iterator iter = getGroups().iterator(); - if (iter.hasNext()) { - learnersGroup = (Group) iter.next(); - } + Group learnersGroup = getLearnersGroup(); if ( learnersGroup == null ) { Organisation lessonOrganisation = getLesson() != null ? getLesson().getOrganisation() : null; if ( lessonOrganisation == null ) { @@ -138,17 +134,23 @@ } if ( ! learnersGroup.hasLearner(user) ) { - if ( log.isDebugEnabled() ) { - log.debug("Adding learner "+user.getLogin()+" to LessonClass "+getGroupingId()); - } learnersGroup.getUsers().add(user); return true; } - if ( log.isDebugEnabled() ) { - log.debug("Not adding learner "+user.getLogin()+" to LessonClass "+getGroupingId()+". User is already a learner."); - } return false; } + + public Group getLearnersGroup() { + Group learnersGroup = null; + Iterator iter = getGroups().iterator(); + while (learnersGroup==null && iter.hasNext()) { + learnersGroup = (Group) iter.next(); + if ( ! isLearnerGroup(learnersGroup) ) { + learnersGroup = null; + } + } + return learnersGroup; + } /** * Add a staff member to the lesson class. Checks for duplicates. @@ -176,15 +178,9 @@ } if ( ! staffGroup.hasLearner(user) ) { - if ( log.isDebugEnabled() ) { - log.debug("Adding staff member "+user.getLogin()+" to LessonClass "+getGroupingId()); - } staffGroup.getUsers().add(user); return true; } - if ( log.isDebugEnabled() ) { - log.debug("Not adding staff member "+user.getLogin()+" to LessonClass "+getGroupingId()+". User is already a staff member."); - } return false; } Index: lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILessonClassDAO.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r315fad9f727a91c28b274654eab02cac89d76b9c --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILessonClassDAO.java (.../ILessonClassDAO.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILessonClassDAO.java (.../ILessonClassDAO.java) (revision 315fad9f727a91c28b274654eab02cac89d76b9c) @@ -23,17 +23,18 @@ /* $$Id$$ */ package org.lamsfoundation.lams.lesson.dao; +import org.lamsfoundation.lams.dao.IBaseDAO; import org.lamsfoundation.lams.lesson.LessonClass; /** * Inteface defines Lesson DAO Methods * @author chris */ -public interface ILessonClassDAO +public interface ILessonClassDAO extends IBaseDAO { /** - * Retrieves the Lesson + * Retrieves the Lesson. Maybe a Hibernate Proxy that requires lazy loading to get to data. * @param lessonId identifies the lesson to get * @return the lesson */ Index: lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonClassDAO.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r315fad9f727a91c28b274654eab02cac89d76b9c --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonClassDAO.java (.../LessonClassDAO.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonClassDAO.java (.../LessonClassDAO.java) (revision 315fad9f727a91c28b274654eab02cac89d76b9c) @@ -24,16 +24,15 @@ package org.lamsfoundation.lams.lesson.dao.hibernate; -import org.springframework.orm.hibernate3.support.HibernateDaoSupport; - +import org.lamsfoundation.lams.dao.hibernate.BaseDAO; import org.lamsfoundation.lams.lesson.LessonClass; import org.lamsfoundation.lams.lesson.dao.ILessonClassDAO; /** * Hibernate implementation of ILessonDAO * @author chris */ -public class LessonClassDAO extends HibernateDaoSupport implements ILessonClassDAO +public class LessonClassDAO extends BaseDAO implements ILessonClassDAO { public LessonClass getLessonClass(Long lessonClassId) Index: lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonDAO.java =================================================================== diff -u -r44c5b51485f48a91d94eda050c0eecc0dcc1bc6e -r315fad9f727a91c28b274654eab02cac89d76b9c --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonDAO.java (.../LessonDAO.java) (revision 44c5b51485f48a91d94eda050c0eecc0dcc1bc6e) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonDAO.java (.../LessonDAO.java) (revision 315fad9f727a91c28b274654eab02cac89d76b9c) @@ -72,7 +72,6 @@ public Lesson getLesson(Long lessonId) { Lesson lesson = (Lesson)getHibernateTemplate().get(Lesson.class, lessonId); - initialize(lesson); return lesson; } Index: lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java =================================================================== diff -u -rc8409f1c984169ae3b83277f54b1be8cc65e71b3 -r315fad9f727a91c28b274654eab02cac89d76b9c --- lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java (.../LessonService.java) (revision c8409f1c984169ae3b83277f54b1be8cc65e71b3) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java (.../LessonService.java) (revision 315fad9f727a91c28b274654eab02cac89d76b9c) @@ -27,6 +27,7 @@ import java.util.List; import org.apache.log4j.Logger; +import org.lamsfoundation.lams.learningdesign.Group; import org.lamsfoundation.lams.learningdesign.Grouper; import org.lamsfoundation.lams.learningdesign.Grouping; import org.lamsfoundation.lams.learningdesign.GroupingActivity; @@ -324,6 +325,17 @@ throw new LessonServiceException("Lesson class for "+lessonId+" does not exist. Unable to add learner to lesson."); } + // initialise the lesson group, or we get a lazy loading error when logging in + // from moodle. Should only be two groups - learner and staff + // yes this is a bit of a hack! + Group learnersGroup = lessonClass.getLearnersGroup(); + if ( learnersGroup != null ) + lessonDAO.initialize(learnersGroup); + + // hack - if coming from moodle and person is accessing lams + // for the first time since it starts, the user object isn't full initialised. + lessonDAO.initialize(user); + boolean ret = lessonClass.addLearner(user); if ( ret ) { lessonClassDAO.updateLessonClass(lessonClass); @@ -349,7 +361,12 @@ } lessonDAO.initialize(lessonClass.getStaffGroup()); + + // hack - if coming from moodle and person is accessing lams + // for the first time since it starts, the user object isn't full initialised. + lessonDAO.initialize(user); + boolean ret = lessonClass.addStaffMember(user); if ( ret ) { lessonClassDAO.updateLessonClass(lessonClass);