Index: lams_common/src/java/org/lamsfoundation/lams/lesson/LessonClass.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/LessonClass.java,v diff -u -r1.14 -r1.15 --- lams_common/src/java/org/lamsfoundation/lams/lesson/LessonClass.java 18 Sep 2006 04:26:00 -0000 1.14 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/LessonClass.java 28 Sep 2006 01:00:29 -0000 1.15 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILessonClassDAO.java,v diff -u -r1.7 -r1.8 --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILessonClassDAO.java 17 Sep 2006 06:14:23 -0000 1.7 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILessonClassDAO.java 28 Sep 2006 01:00:29 -0000 1.8 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonClassDAO.java,v diff -u -r1.9 -r1.10 --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonClassDAO.java 17 Sep 2006 06:14:17 -0000 1.9 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonClassDAO.java 28 Sep 2006 01:00:28 -0000 1.10 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonDAO.java,v diff -u -r1.27 -r1.28 --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonDAO.java 27 Sep 2006 06:52:22 -0000 1.27 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonDAO.java 28 Sep 2006 01:00:28 -0000 1.28 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java,v diff -u -r1.10 -r1.11 --- lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java 26 Sep 2006 05:07:46 -0000 1.10 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java 28 Sep 2006 01:00:29 -0000 1.11 @@ -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);