Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenGrouping.java =================================================================== diff -u -rd6e24451f694815d6138e6189fa8ba2294ee6944 -r91523738e69ab3ad209d6a8dfb25114cdfcfb719 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenGrouping.java (.../ChosenGrouping.java) (revision d6e24451f694815d6138e6189fa8ba2294ee6944) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenGrouping.java (.../ChosenGrouping.java) (revision 91523738e69ab3ad209d6a8dfb25114cdfcfb719) @@ -24,6 +24,20 @@ { super(groupingId, groups, activities); } + + /** + * This method creates a deep copy of the Grouping passed + * as an argument. + * + * @param originalGrouping The Grouping object to be deep copied + * @return ChosenGrouping The deep copied Grouping object + */ + public static ChosenGrouping createCopy(ChosenGrouping originalGrouping){ + ChosenGrouping chosenGrouping = new ChosenGrouping(); + chosenGrouping.setMaxNumberOfGroups(originalGrouping.getMaxNumberOfGroups()); + chosenGrouping.setGroupingUIID(originalGrouping.getGroupingUIID()); + return chosenGrouping; + } /** * This type of grouping doesn't have groups other than learner groups. Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java =================================================================== diff -u -r174fa126cd5cc9d88eb39d6596af0453a2b77e49 -r91523738e69ab3ad209d6a8dfb25114cdfcfb719 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java (.../GroupingActivity.java) (revision 174fa126cd5cc9d88eb39d6596af0453a2b77e49) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java (.../GroupingActivity.java) (revision 91523738e69ab3ad209d6a8dfb25114cdfcfb719) @@ -1,6 +1,7 @@ package org.lamsfoundation.lams.learningdesign; import java.io.Serializable; +import java.util.Date; import org.apache.commons.lang.builder.ToStringBuilder; @@ -97,7 +98,34 @@ this.createGrouping = createGrouping; this.createGroupingUIID = create_grouping_ui_id; } - + /** + * This function creates a deep copy of the GroupingActivity passed + * as an argument. However each time a GroupingActivity is deep copied + * it would result in creation of new Groups as well. + * @param originalActivity + * @return + */ + public static GroupingActivity createCopy(GroupingActivity originalActivity){ + GroupingActivity groupingActivity = new GroupingActivity(); + + groupingActivity.setActivityUIID(originalActivity.getActivityUIID()); + groupingActivity.setDescription(originalActivity.getDescription()); + groupingActivity.setTitle(originalActivity.getTitle()); + groupingActivity.setHelpText(originalActivity.getHelpText()); + groupingActivity.setXcoord(originalActivity.getXcoord()); + groupingActivity.setYcoord(originalActivity.getYcoord()); + groupingActivity.setDefineLater(originalActivity.getDefineLater()); + groupingActivity.setCreateDateTime(new Date()); + groupingActivity.setLibraryActivityUiImage(originalActivity.getLibraryActivityUiImage()); + Grouping oldGrouping = originalActivity.getGrouping(); + + if(oldGrouping.getGroupingTypeId()==Grouping.CHOSEN_GROUPING_TYPE) + groupingActivity.setGrouping(ChosenGrouping.createCopy((ChosenGrouping)oldGrouping)); + else + groupingActivity.setGrouping(RandomGrouping.createCopy((RandomGrouping)oldGrouping)); + + return groupingActivity; + } public String toString() { return new ToStringBuilder(this) Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/RandomGrouping.java =================================================================== diff -u -rd6e24451f694815d6138e6189fa8ba2294ee6944 -r91523738e69ab3ad209d6a8dfb25114cdfcfb719 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/RandomGrouping.java (.../RandomGrouping.java) (revision d6e24451f694815d6138e6189fa8ba2294ee6944) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/RandomGrouping.java (.../RandomGrouping.java) (revision 91523738e69ab3ad209d6a8dfb25114cdfcfb719) @@ -70,4 +70,23 @@ { return true; } + /** + * This method creates a deep copy of the Grouping passed + * as an argument. + * + * @param originalGrouping The Grouping object to be deep copied + * @return RandomGrouping The deep copied Grouping object + */ + public static RandomGrouping createCopy(RandomGrouping originalGrouping){ + RandomGrouping randomGrouping = new RandomGrouping(); + + randomGrouping.setMaxNumberOfGroups(originalGrouping.getMaxNumberOfGroups()); + randomGrouping.setGroupingUIID(originalGrouping.getGroupingUIID()); + + randomGrouping.setNumberOfGroups(originalGrouping.getNumberOfGroups()); + randomGrouping.setLearnersPerGroup(originalGrouping.getLearnersPerGroup()); + + return randomGrouping; + } + }