Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Group.hbm.xml =================================================================== diff -u -r4ec6567d23397141210e7c6979f4293c1d99a5d0 -rd7f8bd90added31c1bbadc8ebd51e301d13965b6 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Group.hbm.xml (.../Group.hbm.xml) (revision 4ec6567d23397141210e7c6979f4293c1d99a5d0) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Group.hbm.xml (.../Group.hbm.xml) (revision d7f8bd90added31c1bbadc8ebd51e301d13965b6) @@ -58,7 +58,6 @@ Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenGrouping.java =================================================================== diff -u -r2eeeb7da6fd05405ea0bdd511270423401536fa9 -rd7f8bd90added31c1bbadc8ebd51e301d13965b6 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenGrouping.java (.../ChosenGrouping.java) (revision 2eeeb7da6fd05405ea0bdd511270423401536fa9) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenGrouping.java (.../ChosenGrouping.java) (revision d7f8bd90added31c1bbadc8ebd51e301d13965b6) @@ -24,5 +24,15 @@ { super(groupingId, groups, activities); } - + + /** + * This type of grouping doesn't have groups other than learner groups. + * So it always return true. + * @see org.lamsfoundation.lams.learningdesign.Grouping#isLearnerGroup(org.lamsfoundation.lams.learningdesign.Group) + */ + protected boolean isLearnerGroup(Group group) + { + return true; + } + } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouping.java =================================================================== diff -u -r2eeeb7da6fd05405ea0bdd511270423401536fa9 -rd7f8bd90added31c1bbadc8ebd51e301d13965b6 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouping.java (.../Grouping.java) (revision 2eeeb7da6fd05405ea0bdd511270423401536fa9) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouping.java (.../Grouping.java) (revision d7f8bd90added31c1bbadc8ebd51e301d13965b6) @@ -40,7 +40,7 @@ private Set activities; /** non-persistent field */ - private Set learners; + protected Set learners; /** full constructor */ public Grouping(Long groupingId, Set groups, Set activities) @@ -179,16 +179,23 @@ public Set getLearners() { //verify pre-condition - if(groups==null) + if(getGroups()==null) throw new IllegalArgumentException("Fail to get learnings from" + "a grouping without groups"); learners = new HashSet(); - for(Iterator i = groups.iterator();i.hasNext();) + for(Iterator i = getGroups().iterator();i.hasNext();) { Group group = (Group)i.next(); - learners.addAll(group.getUsers()); + if(isLearnerGroup(group)) + learners.addAll(group.getUsers()); } return learners; } + + /** + * @return + */ + protected abstract boolean isLearnerGroup(Group group); + } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/RandomGrouping.java =================================================================== diff -u -r2eeeb7da6fd05405ea0bdd511270423401536fa9 -rd7f8bd90added31c1bbadc8ebd51e301d13965b6 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/RandomGrouping.java (.../RandomGrouping.java) (revision 2eeeb7da6fd05405ea0bdd511270423401536fa9) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/RandomGrouping.java (.../RandomGrouping.java) (revision d7f8bd90added31c1bbadc8ebd51e301d13965b6) @@ -61,4 +61,13 @@ this.numberOfGroups = numberOfGroups; } + /** + * This type of grouping doesn't have groups other than learner groups. + * So it always return true. + * @see org.lamsfoundation.lams.learningdesign.Grouping#isLearnerGroup(org.lamsfoundation.lams.learningdesign.Group) + */ + protected boolean isLearnerGroup(Group group) + { + return true; + } } Index: lams_common/src/java/org/lamsfoundation/lams/lesson/LessonClass.java =================================================================== diff -u -r2eeeb7da6fd05405ea0bdd511270423401536fa9 -rd7f8bd90added31c1bbadc8ebd51e301d13965b6 --- lams_common/src/java/org/lamsfoundation/lams/lesson/LessonClass.java (.../LessonClass.java) (revision 2eeeb7da6fd05405ea0bdd511270423401536fa9) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/LessonClass.java (.../LessonClass.java) (revision d7f8bd90added31c1bbadc8ebd51e301d13965b6) @@ -48,4 +48,17 @@ public void setLesson(Lesson lesson) { this.lesson = lesson; } + + /** + * @see org.lamsfoundation.lams.learningdesign.Grouping#isLearnerGroup(org.lamsfoundation.lams.learningdesign.Group) + */ + protected boolean isLearnerGroup(Group group) + { + if(group.getGroupId()==null||staffGroup.getGroupId()==null) + throw new IllegalArgumentException("Can't check up whether group" + + " is learner group without group id."); + + return staffGroup.getGroupId()!=group.getGroupId(); + } + } \ No newline at end of file Index: lams_common/test/java/org/lamsfoundation/lams/lesson/TestLessonClass.java =================================================================== diff -u --- lams_common/test/java/org/lamsfoundation/lams/lesson/TestLessonClass.java (revision 0) +++ lams_common/test/java/org/lamsfoundation/lams/lesson/TestLessonClass.java (revision d7f8bd90added31c1bbadc8ebd51e301d13965b6) @@ -0,0 +1,81 @@ +/* ******************************************************************************** + * Copyright Notice + * ================= + * This file contains propriety information of LAMS Foundation. + * Copying or reproduction with prior written permission is prohibited. + * Copyright (c) 2005 + * Created on 14/02/2005 + ******************************************************************************** */ + +package org.lamsfoundation.lams.lesson; + +import java.util.HashSet; + +import org.lamsfoundation.lams.learningdesign.Group; +import org.lamsfoundation.lams.usermanagement.User; + +import junit.framework.TestCase; + + +/** + * + * @author Jacky Fang 14/02/2005 + * + */ +public class TestLessonClass extends TestCase +{ + + LessonClass lessonClass; + /* + * @see TestCase#setUp() + */ + protected void setUp() throws Exception + { + super.setUp(); + lessonClass = new LessonClass(); + lessonClass.setGroups(new HashSet()); + } + + /* + * @see TestCase#tearDown() + */ + protected void tearDown() throws Exception + { + super.tearDown(); + } + + /** + * Constructor for TestLessonClass. + * @param arg0 + */ + public TestLessonClass(String arg0) + { + super(arg0); + } + + public void testGetLearners() + { + User user1 = new User(); + user1.setUserId(new Integer(1)); + Group group1 = new Group(); + group1.setGroupId(new Long(1)); + group1.setUsers(new HashSet()); + group1.getUsers().add(user1); + group1.setOrderId(lessonClass.getNextGroupOrderId()); + lessonClass.getGroups().add(group1); + + User staff = new User(); + staff.setUserId(new Integer(3)); + Group staffGroup = new Group(); + staffGroup.setGroupId(new Long(2)); + staffGroup.setUsers(new HashSet()); + staffGroup.getUsers().add(staff); + staffGroup.setOrderId(lessonClass.getNextGroupOrderId()); + lessonClass.getGroups().add(staffGroup); + lessonClass.setStaffGroup(staffGroup); + + assertEquals("verify number of learners",1,lessonClass.getLearners().size()); + + } + +}