Index: lams_build/lib/lams/lams-central.jar
===================================================================
diff -u -r514c85e03129ba1c23a495caea70bc88eef0546c -r6cbd4eddf683da44fcbf3faed4ae3fe10e8336b8
Binary files differ
Index: lams_build/lib/lams/lams-learning.jar
===================================================================
diff -u -r514c85e03129ba1c23a495caea70bc88eef0546c -r6cbd4eddf683da44fcbf3faed4ae3fe10e8336b8
Binary files differ
Index: lams_build/lib/lams/lams-monitoring.jar
===================================================================
diff -u -r514c85e03129ba1c23a495caea70bc88eef0546c -r6cbd4eddf683da44fcbf3faed4ae3fe10e8336b8
Binary files differ
Index: lams_build/lib/lams/lams.jar
===================================================================
diff -u -rdab2e119700d02ac373e69b7c3afeeadf1f21d56 -r6cbd4eddf683da44fcbf3faed4ae3fe10e8336b8
Binary files differ
Index: lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java
===================================================================
diff -u -r209087915bc219f430c282ad00e5d1e6462f9b5f -r6cbd4eddf683da44fcbf3faed4ae3fe10e8336b8
--- lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java (.../ObjectExtractor.java) (revision 209087915bc219f430c282ad00e5d1e6462f9b5f)
+++ lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java (.../ObjectExtractor.java) (revision 6cbd4eddf683da44fcbf3faed4ae3fe10e8336b8)
@@ -764,7 +764,7 @@
if (numLearnersPerGroup != null && numLearnersPerGroup.intValue() > 0) {
learnerChoiceGrouping.setLearnersPerGroup(numLearnersPerGroup);
learnerChoiceGrouping.setNumberOfGroups(null);
- learnerChoiceGrouping.setEqualNumberOfLearners(null);
+ learnerChoiceGrouping.setEqualNumberOfLearnersPerGroup(null);
}
else {
Integer numGroups = WDDXProcessor.convertToInteger(groupingDetails, WDDXTAGS.NUMBER_OF_GROUPS);
@@ -778,7 +778,7 @@
Boolean equalNumberOfLearnersPerGroup = WDDXProcessor.convertToBoolean(groupingDetails,
WDDXTAGS.EQUAL_NUMBER_OF_LEARNERS_PER_GROUP);
if (equalNumberOfLearnersPerGroup != null) {
- learnerChoiceGrouping.setEqualNumberOfLearners(equalNumberOfLearnersPerGroup);
+ learnerChoiceGrouping.setEqualNumberOfLearnersPerGroup(equalNumberOfLearnersPerGroup);
}
}
}
Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Grouping.hbm.xml
===================================================================
diff -u -rc209be8131f22f6fe37bd8d6c14b56425a78b766 -r6cbd4eddf683da44fcbf3faed4ae3fe10e8336b8
--- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Grouping.hbm.xml (.../Grouping.hbm.xml) (revision c209be8131f22f6fe37bd8d6c14b56425a78b766)
+++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Grouping.hbm.xml (.../Grouping.hbm.xml) (revision 6cbd4eddf683da44fcbf3faed4ae3fe10e8336b8)
@@ -105,7 +105,7 @@
length="11"
/>
Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearnerChoiceGrouping.java
===================================================================
diff -u -rc209be8131f22f6fe37bd8d6c14b56425a78b766 -r6cbd4eddf683da44fcbf3faed4ae3fe10e8336b8
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearnerChoiceGrouping.java (.../LearnerChoiceGrouping.java) (revision c209be8131f22f6fe37bd8d6c14b56425a78b766)
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearnerChoiceGrouping.java (.../LearnerChoiceGrouping.java) (revision 6cbd4eddf683da44fcbf3faed4ae3fe10e8336b8)
@@ -31,7 +31,7 @@
*/
public class LearnerChoiceGrouping extends Grouping {
/** nullable persistent field */
- private Boolean equalNumberOfLearners;
+ private Boolean equalNumberOfLearnersPerGroup;
/** nullable persistent field */
private Integer numberOfGroups;
@@ -57,7 +57,7 @@
public Grouping createCopy(int uiidOffset) {
LearnerChoiceGrouping learnerChoiceGrouping = new LearnerChoiceGrouping();
copyGroupingFields(learnerChoiceGrouping, uiidOffset);
- learnerChoiceGrouping.setEqualNumberOfLearners(getEqualNumberOfLearners());
+ learnerChoiceGrouping.setEqualNumberOfLearnersPerGroup(getEqualNumberOfLearnersPerGroup());
learnerChoiceGrouping.setLearnersPerGroup(getLearnersPerGroup());
learnerChoiceGrouping.setNumberOfGroups(getNumberOfGroups());
return learnerChoiceGrouping;
@@ -73,12 +73,12 @@
return true;
}
- public Boolean getEqualNumberOfLearners() {
- return equalNumberOfLearners;
+ public Boolean getEqualNumberOfLearnersPerGroup() {
+ return equalNumberOfLearnersPerGroup;
}
- public void setEqualNumberOfLearners(Boolean equalNumberOfLearners) {
- this.equalNumberOfLearners = equalNumberOfLearners;
+ public void setEqualNumberOfLearnersPerGroup(Boolean equalNumberOfLearnersPerGroup) {
+ this.equalNumberOfLearnersPerGroup = equalNumberOfLearnersPerGroup;
}
public Integer getLearnersPerGroup() {
Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/GroupingDTO.java
===================================================================
diff -u -rc209be8131f22f6fe37bd8d6c14b56425a78b766 -r6cbd4eddf683da44fcbf3faed4ae3fe10e8336b8
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/GroupingDTO.java (.../GroupingDTO.java) (revision c209be8131f22f6fe37bd8d6c14b56425a78b766)
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/GroupingDTO.java (.../GroupingDTO.java) (revision 6cbd4eddf683da44fcbf3faed4ae3fe10e8336b8)
@@ -48,19 +48,21 @@
private Integer learnersPerGroup;
private Long staffGroupID;
private Integer maxNumberOfGroups;
- private Boolean equalNumberOfLearners;
+ private Boolean equalNumberOfLearnersPerGroup;
//list of GroupDTO
private List groups;
public GroupingDTO(Long groupingID, Integer groupingUIID, Integer groupingType, Integer numberOfGroups,
- Integer learnersPerGroup, Long staffGroupID, Integer maxNumberOfGroups, List groupDTOs) {
+ Integer learnersPerGroup, Long staffGroupID, Integer maxNumberOfGroups, Boolean equalNumberOfLearnersPerGroup,
+ List groupDTOs) {
this.groupingID = groupingID;
this.groupingUIID = groupingUIID;
groupingTypeID = groupingType;
this.numberOfGroups = numberOfGroups;
this.learnersPerGroup = learnersPerGroup;
this.staffGroupID = staffGroupID;
this.maxNumberOfGroups = maxNumberOfGroups;
+ this.equalNumberOfLearnersPerGroup = equalNumberOfLearnersPerGroup;
groups = groupDTOs;
}
@@ -112,7 +114,7 @@
private void addLearnerChoiceGroupingAttributes(LearnerChoiceGrouping grouping) {
learnersPerGroup = grouping.getLearnersPerGroup();
numberOfGroups = grouping.getNumberOfGroups();
- equalNumberOfLearners = grouping.getEqualNumberOfLearners();
+ equalNumberOfLearnersPerGroup = grouping.getEqualNumberOfLearnersPerGroup();
}
private void addLessonClassAttributes(LessonClass grouping) {
@@ -243,11 +245,11 @@
this.groups = groups;
}
- public Boolean getEqualNumberOfLearners() {
- return equalNumberOfLearners;
+ public Boolean getEqualNumberOfLearnersPerGroup() {
+ return equalNumberOfLearnersPerGroup;
}
- public void setEqualNumberOfLearners(Boolean equalNumberOfLearners) {
- this.equalNumberOfLearners = equalNumberOfLearners;
+ public void setEqualNumberOfLearnersPerGroup(Boolean equalNumberOfLearnersPerGroup) {
+ equalNumberOfLearnersPerGroup = equalNumberOfLearnersPerGroup;
}
}
Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java
===================================================================
diff -u -r209087915bc219f430c282ad00e5d1e6462f9b5f -r6cbd4eddf683da44fcbf3faed4ae3fe10e8336b8
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java (.../ExportToolContentService.java) (revision 209087915bc219f430c282ad00e5d1e6462f9b5f)
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java (.../ExportToolContentService.java) (revision 6cbd4eddf683da44fcbf3faed4ae3fe10e8336b8)
@@ -2134,7 +2134,7 @@
grouping = new LearnerChoiceGrouping();
((LearnerChoiceGrouping) grouping).setLearnersPerGroup(groupingDto.getLearnersPerGroup());
((LearnerChoiceGrouping) grouping).setNumberOfGroups(groupingDto.getNumberOfGroups());
- ((LearnerChoiceGrouping) grouping).setEqualNumberOfLearners(groupingDto.getEqualNumberOfLearners());
+ ((LearnerChoiceGrouping) grouping).setEqualNumberOfLearnersPerGroup(groupingDto.getEqualNumberOfLearnersPerGroup());
}
else {
log.error("Unable to determine the grouping type. Creating a random grouping. GroupingDTO was " + groupingDto);
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java
===================================================================
diff -u -r209087915bc219f430c282ad00e5d1e6462f9b5f -r6cbd4eddf683da44fcbf3faed4ae3fe10e8336b8
--- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 209087915bc219f430c282ad00e5d1e6462f9b5f)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 6cbd4eddf683da44fcbf3faed4ae3fe10e8336b8)
@@ -607,21 +607,23 @@
User learner = (User) userManagementService.findById(User.class, learnerId);
if (learner != null) {
-
- if (((LearnerChoiceGrouping) grouping).getEqualNumberOfLearners()) {
- Integer maxNumberOfLearnersPerGroup = null;
- Set groups = grouping.getGroups();
- if (((LearnerChoiceGrouping) grouping).getLearnersPerGroup() == null) {
- Lesson lesson = getLesson(lessonId);
- int learnerCount = lesson.getAllLearners().size();
-
- int groupCount = grouping.getGroups().size();
- maxNumberOfLearnersPerGroup = learnerCount / groupCount + (learnerCount % groupCount == 0 ? 0 : 1);
+ Integer maxNumberOfLearnersPerGroup = null;
+ Set groups = grouping.getGroups();
+ if (((LearnerChoiceGrouping) grouping).getLearnersPerGroup() == null) {
+ if (((LearnerChoiceGrouping) grouping).getEqualNumberOfLearnersPerGroup()) {
+ if (((LearnerChoiceGrouping) grouping).getLearnersPerGroup() == null) {
+ Lesson lesson = getLesson(lessonId);
+ int learnerCount = lesson.getAllLearners().size();
+ int groupCount = grouping.getGroups().size();
+ maxNumberOfLearnersPerGroup = learnerCount / groupCount
+ + (learnerCount % groupCount == 0 ? 0 : 1);
+ }
}
- else {
- maxNumberOfLearnersPerGroup = ((LearnerChoiceGrouping) grouping).getLearnersPerGroup();
- }
-
+ }
+ else {
+ maxNumberOfLearnersPerGroup = ((LearnerChoiceGrouping) grouping).getLearnersPerGroup();
+ }
+ if (maxNumberOfLearnersPerGroup != null) {
for (Group group : groups) {
if (group.getGroupId().equals(groupId)) {
if (group.getUsers().size() >= maxNumberOfLearnersPerGroup) {
@@ -630,6 +632,7 @@
}
}
}
+
lessonService.performGrouping(grouping, groupId, learner);
return true;
}
@@ -1169,20 +1172,22 @@
Integer maxNumberOfLearnersPerGroup = null;
int learnerCount = lesson.getAllLearners().size();
int groupCount = grouping.getGroups().size();
- if (groupCount == 0) {
- ((LearnerChoiceGrouper) grouping.getGrouper()).createGroups(grouping, 2);
- groupCount = grouping.getGroups().size();
- groupingDAO.update(grouping);
- }
if (grouping.getLearnersPerGroup() == null) {
- if (grouping.getEqualNumberOfLearners()) {
+ if (groupCount == 0) {
+ ((LearnerChoiceGrouper) grouping.getGrouper()).createGroups(grouping, 2);
+ groupCount = grouping.getGroups().size();
+ groupingDAO.update(grouping);
+ }
+ if (grouping.getEqualNumberOfLearnersPerGroup()) {
maxNumberOfLearnersPerGroup = learnerCount / groupCount + (learnerCount % groupCount == 0 ? 0 : 1);
}
}
else {
maxNumberOfLearnersPerGroup = grouping.getLearnersPerGroup();
- if (groupCount * maxNumberOfLearnersPerGroup == learnerCount) {
- ((LearnerChoiceGrouper) grouping.getGrouper()).createGroups(grouping, 1);
+ int desiredGroupCount = learnerCount / maxNumberOfLearnersPerGroup
+ + (learnerCount % maxNumberOfLearnersPerGroup == 0 ? 0 : 1);
+ if (desiredGroupCount > groupCount) {
+ ((LearnerChoiceGrouper) grouping.getGrouper()).createGroups(grouping, desiredGroupCount - groupCount);
groupingDAO.update(grouping);
}
}