Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Group.java =================================================================== diff -u -r4ec6567d23397141210e7c6979f4293c1d99a5d0 -r1d40a310039a2975dc474f61e9a732f90f86c707 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Group.java (.../Group.java) (revision 4ec6567d23397141210e7c6979f4293c1d99a5d0) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Group.java (.../Group.java) (revision 1d40a310039a2975dc474f61e9a732f90f86c707) @@ -1,6 +1,7 @@ package org.lamsfoundation.lams.learningdesign; import java.io.Serializable; +import java.util.HashSet; import java.util.Set; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; @@ -14,33 +15,81 @@ */ public class Group implements Serializable { + public final static int STAFF_GROUP_ORDER_ID = 1; + /** identifier field */ private Long groupId; /** persistent field */ private int orderId; /** persistent field */ - private org.lamsfoundation.lams.learningdesign.Grouping grouping; + private Grouping grouping; /** persistent field */ private Set users; /** persistent field */ private Set toolSessions; + //--------------------------------------------------------------------- + // Object creation Methods + //--------------------------------------------------------------------- + /** full constructor */ - public Group(Long groupId, int orderId, org.lamsfoundation.lams.learningdesign.Grouping grouping, Set userGroups, Set toolSessions) { + public Group(Long groupId, int orderId, Grouping grouping, Set users, Set toolSessions) { this.groupId = groupId; this.orderId = orderId; this.grouping = grouping; - this.users = userGroups; + this.users = users; this.toolSessions = toolSessions; } + /** + * Creation Constructor for initializing learner group without tool sessions + * The order is generated using synchornize method on grouping. + * + * @param grouping the grouping this group belongs to. + * @param users the users in this group. + * @return the new learner group + */ + public static Group createLearnerGroup(Grouping grouping, Set users) + { + return new Group(null,grouping.getNextGroupOrderId(),grouping,users,new HashSet()); + } + + /** + * Creation Constructor for initializing learner group with tool sessions + * The order is generated using synchornize method on grouping. + * + * @param grouping the grouping this group belongs to. + * @param users the users in this group. + * @param toolSessions all tool sessions included in this group + * @return the new learner group + */ + public static Group createLearnerGroupWithToolSession(Grouping grouping, Set users,Set toolSessions) + { + return new Group(null,grouping.getNextGroupOrderId(),grouping,users,toolSessions); + } + + /** + * Creation constructor for initializing staff group. The order is created + * using default constant. + * @param grouping the grouping this group belongs to. + * @param staffs the users in this group. + * @return the new staff group. + */ + public static Group createStaffGroup(Grouping grouping, Set staffs) + { + return new Group(null,STAFF_GROUP_ORDER_ID,grouping,staffs,new HashSet()); + } + /** default constructor */ public Group() { } + //--------------------------------------------------------------------- + // Field Access Methods + //--------------------------------------------------------------------- /** * @hibernate.id @@ -131,13 +180,15 @@ if ( !(other instanceof Group) ) return false; Group castOther = (Group) other; return new EqualsBuilder() - .append(this.getGroupId(), castOther.getGroupId()) + .append(this.getGroupId(), castOther.getGroupId()) + .append(this.getOrderId(), castOther.getOrderId()) .isEquals(); } public int hashCode() { return new HashCodeBuilder() - .append(getGroupId()) + .append(getGroupId()) + .append(getOrderId()) .toHashCode(); } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouping.java =================================================================== diff -u -r4ec6567d23397141210e7c6979f4293c1d99a5d0 -r1d40a310039a2975dc474f61e9a732f90f86c707 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouping.java (.../Grouping.java) (revision 4ec6567d23397141210e7c6979f4293c1d99a5d0) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouping.java (.../Grouping.java) (revision 1d40a310039a2975dc474f61e9a732f90f86c707) @@ -156,4 +156,15 @@ { this.maxNumberOfGroups = maxNumberOfGroups; } + + public synchronized int getNextGroupOrderId() + { + int order =0; + if(this.groups!=null) + { + order = groups.size(); + return ++order; + } + else return ++order; + } } Index: lams_common/src/java/org/lamsfoundation/lams/lesson/Lesson.java =================================================================== diff -u -r7e008c96c3f7a56c3c90cff94b5225865b8d99ba -r1d40a310039a2975dc474f61e9a732f90f86c707 --- lams_common/src/java/org/lamsfoundation/lams/lesson/Lesson.java (.../Lesson.java) (revision 7e008c96c3f7a56c3c90cff94b5225865b8d99ba) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/Lesson.java (.../Lesson.java) (revision 1d40a310039a2975dc474f61e9a732f90f86c707) @@ -5,6 +5,7 @@ import org.lamsfoundation.lams.usermanagement.User; import java.io.Serializable; import java.util.Date; +import java.util.HashSet; import java.util.Set; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; @@ -90,9 +91,26 @@ this.organisation = organisation; this.learnerProgresses = learnerProgresses; } + /** + * @param user + * @param organisation + * @param ld + * @param newLessonClass + * @return + */ + public static Lesson createNewLesson(User user, Organisation organisation, LearningDesign ld, LessonClass newLessonClass) + { + //setup new lesson + return new Lesson(new Date(System.currentTimeMillis()), + user, + Lesson.CREATED, + ld, + newLessonClass,//lesson class + organisation, + new HashSet());//learner progress + } - /** * @hibernate.id generator-class="identity" type="java.lang.Long" * column="lesson_id" Index: lams_common/src/java/org/lamsfoundation/lams/lesson/LessonClass.java =================================================================== diff -u -r4ef234ccd60438cc74e211bf2e84a094c237c1b9 -r1d40a310039a2975dc474f61e9a732f90f86c707 --- lams_common/src/java/org/lamsfoundation/lams/lesson/LessonClass.java (.../LessonClass.java) (revision 4ef234ccd60438cc74e211bf2e84a094c237c1b9) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/LessonClass.java (.../LessonClass.java) (revision 1d40a310039a2975dc474f61e9a732f90f86c707) @@ -17,9 +17,9 @@ * @author chris */ public class LessonClass extends Grouping { + + private Group staffGroup; - private Group staffGroup; - private Lesson lesson; /** Creates a new instance of LessonClass */ Index: lams_common/test/java/org/lamsfoundation/lams/learningdesign/TestGrouping.java =================================================================== diff -u --- lams_common/test/java/org/lamsfoundation/lams/learningdesign/TestGrouping.java (revision 0) +++ lams_common/test/java/org/lamsfoundation/lams/learningdesign/TestGrouping.java (revision 1d40a310039a2975dc474f61e9a732f90f86c707) @@ -0,0 +1,71 @@ +/* ******************************************************************************** + * Copyright Notice + * ================= + * This file contains propriety information of LAMS Foundation. + * Copying or reproduction with prior written permission is prohibited. + * Copyright (c) 2005 + * Created on 8/02/2005 + ******************************************************************************** */ + +package org.lamsfoundation.lams.learningdesign; + +import java.util.HashSet; + +import junit.framework.TestCase; + + +/** + * + * @author Jacky Fang 8/02/2005 + * + */ +public class TestGrouping extends TestCase +{ + + private Grouping grouping; + /* + * @see TestCase#setUp() + */ + protected void setUp() throws Exception + { + super.setUp(); + grouping = new RandomGrouping(); + } + + /* + * @see TestCase#tearDown() + */ + protected void tearDown() throws Exception + { + super.tearDown(); + } + + /** + * Constructor for TestGrouping. + * @param arg0 + */ + public TestGrouping(String arg0) + { + super(arg0); + } + + /** + * Test the order generation without concurrency contention. + */ + public void testGetNextGroupOrderId() + { + + assertEquals(1,grouping.getNextGroupOrderId()); + + grouping.setGroups(new HashSet()); + Group group1 = new Group(); + group1.setOrderId(grouping.getNextGroupOrderId()); + grouping.getGroups().add(group1); + assertEquals(2,grouping.getNextGroupOrderId()); + + Group group2 = new Group(); + group2.setOrderId(grouping.getNextGroupOrderId()); + grouping.getGroups().add(group2); + assertEquals(3,grouping.getNextGroupOrderId()); + } +} Index: lams_common/test/java/org/lamsfoundation/lams/lesson/LessonDataAccessTestCase.java =================================================================== diff -u -r482c427790ea04eb519813599987b8015cf9e12f -r1d40a310039a2975dc474f61e9a732f90f86c707 --- lams_common/test/java/org/lamsfoundation/lams/lesson/LessonDataAccessTestCase.java (.../LessonDataAccessTestCase.java) (revision 482c427790ea04eb519813599987b8015cf9e12f) +++ lams_common/test/java/org/lamsfoundation/lams/lesson/LessonDataAccessTestCase.java (.../LessonDataAccessTestCase.java) (revision 1d40a310039a2975dc474f61e9a732f90f86c707) @@ -204,7 +204,7 @@ //make a copy of lazily initialized users Set users = new HashSet(testOrg.getUsers()); Group learnerClassGroup = new Group(null,//group id - TEST_GROUP_ORDER_ID, + testLessonClass.getNextGroupOrderId(), testLessonClass, users, new HashSet());//tool session, should be empty now @@ -238,7 +238,7 @@ */ protected void assertLessonClass(LessonClass lessonClass) { - assertEquals("check up number of activities",1,lessonClass.getActivities().size()); + assertEquals("check up number of activities",11,lessonClass.getActivities().size()); assertEquals("check up staff groups",1,lessonClass.getStaffGroup().getUsers().size()); assertEquals("check up grouping types, should be class grouping",Grouping.CLASS_GROUPING_TYPE,lessonClass.getGroupingTypeId()); assertEquals("check up learner groups",1,lessonClass.getGroups().size()); @@ -253,7 +253,7 @@ assertEquals("check up creation time",testLesson.getCreateDateTime().toString(), lesson.getCreateDateTime().toString()); assertEquals("check up user who created this lesson",testUser.getLogin(),lesson.getUser().getLogin()); - assertEquals("check up the lesson state",Lesson.NOT_STARTED_STATE,lesson.getLessonStateId()); + assertEquals("check up the lesson state",Lesson.CREATED,lesson.getLessonStateId()); assertEquals("check up the learning design that used to create lesson", testLearningDesign.getTitle(), lesson.getLearningDesign().getTitle()); Index: lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestInitLesson.java =================================================================== diff -u -r72352f709cfb1eb543caae62477a0824a134dd5c -r1d40a310039a2975dc474f61e9a732f90f86c707 --- lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestInitLesson.java (.../TestInitLesson.java) (revision 72352f709cfb1eb543caae62477a0824a134dd5c) +++ lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestInitLesson.java (.../TestInitLesson.java) (revision 1d40a310039a2975dc474f61e9a732f90f86c707) @@ -61,5 +61,6 @@ assertLessonClass(createdLessonClass); //checking initialization result of lesson assertLesson(createdLesson); + } }