Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenGrouper.java =================================================================== diff -u -r51d9b7fc27684748ffcd792f6ce6e4f23ef6ce12 -rb125be1bc92a6f11535ffa059b15a519c741b40e --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenGrouper.java (.../ChosenGrouper.java) (revision 51d9b7fc27684748ffcd792f6ce6e4f23ef6ce12) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenGrouper.java (.../ChosenGrouper.java) (revision b125be1bc92a6f11535ffa059b15a519c741b40e) @@ -23,46 +23,44 @@ package org.lamsfoundation.lams.learningdesign; import java.io.Serializable; +import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import org.lamsfoundation.lams.usermanagement.User; /** + * The chosen grouper algorithm implementation. It creates a new group for + * the learners that the teacher requested. * * @author Jacky Fang * @since 2005-3-24 - * @version + * @version 1.1 * */ public class ChosenGrouper implements Grouper,Serializable { /** - * + * @see org.lamsfoundation.lams.learningdesign.Grouper#doGrouping(org.lamsfoundation.lams.learningdesign.Grouping, org.lamsfoundation.lams.usermanagement.User) */ - public ChosenGrouper() + public void doGrouping(Grouping chosenGrouping, User learner) { - super(); - // TODO Auto-generated constructor stub + //convert the single user into a list. + List learners = new ArrayList(); + learners.add(learner); + //delegate to do grouping for a list of learners. + doGrouping(chosenGrouping,learners); } - + /** * @see org.lamsfoundation.lams.learningdesign.Grouper#doGrouping(org.lamsfoundation.lams.learningdesign.Grouping, java.util.List) */ - public void doGrouping(Grouping grouping, List learners) + public void doGrouping(Grouping chosenGrouping, List learners) { - // TODO Auto-generated method stub - + chosenGrouping.getGroups().add(Group.createLearnerGroup(chosenGrouping, + new HashSet(learners))); } - /** - * @see org.lamsfoundation.lams.learningdesign.Grouper#doGrouping(org.lamsfoundation.lams.learningdesign.Grouping, org.lamsfoundation.lams.usermanagement.User) - */ - public void doGrouping(Grouping grouping, User learner) - { - // TODO Auto-generated method stub - - } - } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenGrouping.java =================================================================== diff -u -rdfed139a7289e34015731c0b41b2435a0b902b6f -rb125be1bc92a6f11535ffa059b15a519c741b40e --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenGrouping.java (.../ChosenGrouping.java) (revision dfed139a7289e34015731c0b41b2435a0b902b6f) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenGrouping.java (.../ChosenGrouping.java) (revision b125be1bc92a6f11535ffa059b15a519c741b40e) @@ -33,7 +33,8 @@ * @param originalGrouping The Grouping object to be deep copied * @return ChosenGrouping The deep copied Grouping object */ - public static ChosenGrouping createCopy(ChosenGrouping originalGrouping){ + public static ChosenGrouping createCopy(ChosenGrouping originalGrouping) + { ChosenGrouping chosenGrouping = new ChosenGrouping(); chosenGrouping.setMaxNumberOfGroups(originalGrouping.getMaxNumberOfGroups()); chosenGrouping.setGroupingUIID(originalGrouping.getGroupingUIID()); Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouper.java =================================================================== diff -u -rdfed139a7289e34015731c0b41b2435a0b902b6f -rb125be1bc92a6f11535ffa059b15a519c741b40e --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouper.java (.../Grouper.java) (revision dfed139a7289e34015731c0b41b2435a0b902b6f) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouper.java (.../Grouper.java) (revision b125be1bc92a6f11535ffa059b15a519c741b40e) @@ -40,9 +40,18 @@ */ public interface Grouper { - + /** + * Do the grouping for a list of learners that the teacher requested. + * @param grouping the grouping that is used to perform groups creation. + * @param learners the list of learners that the teacher requested. + */ public void doGrouping(Grouping grouping, List learners); + /** + * Do the grouping for a single learner. + * @param grouping the grouping that is used to perform groups creation. + * @param learner the learner teacher want to add. + */ public void doGrouping(Grouping grouping, User learner); } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouping.java =================================================================== diff -u -rdfed139a7289e34015731c0b41b2435a0b902b6f -rb125be1bc92a6f11535ffa059b15a519c741b40e --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouping.java (.../Grouping.java) (revision dfed139a7289e34015731c0b41b2435a0b902b6f) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouping.java (.../Grouping.java) (revision b125be1bc92a6f11535ffa059b15a519c741b40e) @@ -287,4 +287,9 @@ { this.grouper.doGrouping(this,learner); } + + public boolean doesLearnerExist(User learner) + { + return getGroupBy(learner).isNull(); + } } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/RandomGrouper.java =================================================================== diff -u -r51d9b7fc27684748ffcd792f6ce6e4f23ef6ce12 -rb125be1bc92a6f11535ffa059b15a519c741b40e --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/RandomGrouper.java (.../RandomGrouper.java) (revision 51d9b7fc27684748ffcd792f6ce6e4f23ef6ce12) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/RandomGrouper.java (.../RandomGrouper.java) (revision b125be1bc92a6f11535ffa059b15a519c741b40e) @@ -100,7 +100,7 @@ //--------------------------------------------------------------------- /** * Compute the number of new groups needs to be created based on passed - * in grouping. It figure out group by number of groups or group by + * in grouping. It figures out group by number of groups or group by * learner per group automatically. * * @param randomGrouping the grouping we used to group learner @@ -115,7 +115,7 @@ return getNewGroupsByNumberOfGroups(randomGrouping, isInitialization); else if(randomGrouping.getLearnersPerGroup()!=null) return getNewGroupsByLearnerPerGroup(randomGrouping,learners); - + //TODO need to be changed to customized exception. throw new RuntimeException("At least one random grouping algorithm" + "needs to be defined."); } @@ -146,7 +146,7 @@ for(Iterator i=learners.iterator();i.hasNext();) { User learner = (User)i.next(); - if(randomGrouping.getGroupBy(learner).isNull()) + if(randomGrouping.doesLearnerExist(learner)) { Group selectedGroup = selectGroupToJoin((RandomGrouping)randomGrouping); selectedGroup.getUsers().add(learner); @@ -211,5 +211,4 @@ return 0; } - } Index: lams_common/test/java/org/lamsfoundation/lams/learningdesign/TestChosenGrouper.java =================================================================== diff -u --- lams_common/test/java/org/lamsfoundation/lams/learningdesign/TestChosenGrouper.java (revision 0) +++ lams_common/test/java/org/lamsfoundation/lams/learningdesign/TestChosenGrouper.java (revision b125be1bc92a6f11535ffa059b15a519c741b40e) @@ -0,0 +1,110 @@ +/*************************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * ***********************************************************************/ + +package org.lamsfoundation.lams.learningdesign; + +import java.util.ArrayList; +import java.util.List; +import java.util.TreeSet; + +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.usermanagement.User; + +import junit.framework.TestCase; + + +/** + * + * @author Jacky Fang + * @since 2005-3-29 + * @version 1.1 + * + */ +public class TestChosenGrouper extends TestCase +{ + //--------------------------------------------------------------------- + // Instance variables + //--------------------------------------------------------------------- + private static Logger log = Logger.getLogger(TestChosenGrouper.class); + + private ChosenGrouping chosenGrouping; + private List userList = new ArrayList(); + private static final int NUM_OF_TEST_USERS = 10; + /* + * @see TestCase#setUp() + */ + protected void setUp() throws Exception + { + super.setUp(); + chosenGrouping = new ChosenGrouping(new Long(1), + new TreeSet(), + new TreeSet()); + //initialize users + for(int i =0; i