Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r11914f2354254e0e92e2a271453ba2f0e8a35fdc -r4ca1b4e69d135a796d7db5eab3206e24e9503619 Binary files differ Index: lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java =================================================================== diff -u -r11914f2354254e0e92e2a271453ba2f0e8a35fdc -r4ca1b4e69d135a796d7db5eab3206e24e9503619 --- lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java (.../ObjectExtractor.java) (revision 11914f2354254e0e92e2a271453ba2f0e8a35fdc) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java (.../ObjectExtractor.java) (revision 4ca1b4e69d135a796d7db5eab3206e24e9503619) @@ -877,17 +877,6 @@ } private void buildBranchingActivity(BranchingActivity branchingActivity,Hashtable activityDetails) throws WDDXProcessorConversionException, ObjectExtractorException { - /** - * read the createBranchingUUID, get the Branching Object, and set CreateBranching to that object - */ - //Integer createBranchingUIID = WDDXProcessor.convertToInteger(activityDetails,WDDXTAGS.CREATE_BRANCHINGS_UIID); - - // Get Branching object - - // doesn't extend SystemToolActivity class?? - //SystemTool systemTool = systemToolDAO.getSystemToolByID(SystemTool.BRANCHING); - //branchingActivity.setSystemTool(systemTool); - } private void buildGroupingActivity(GroupingActivity groupingActivity,Hashtable activityDetails) throws WDDXProcessorConversionException, ObjectExtractorException { @@ -1167,20 +1156,29 @@ Integer entryUIID = WDDXProcessor.convertToInteger(details, WDDXTAGS.GROUP_BRANCH_ACTIVITY_ENTRY_UIID); Integer groupUIID = WDDXProcessor.convertToInteger(details, WDDXTAGS.GROUP_UIID); Integer sequenceActivityUIID=WDDXProcessor.convertToInteger(details,WDDXTAGS.GROUP_BRANCH_SEQUENCE_ACTIVITY_UIID); - + Integer branchingActivityUIID=WDDXProcessor.convertToInteger(details,WDDXTAGS.GROUP_BRANCH_ACTIVITY_UIID); + Group group = groups.get(groupUIID); if ( group == null ) { throw new WDDXProcessorConversionException("Group listed in the branch mapping list is missing. Mapping entry UUID "+entryUIID+" groupUIID "+groupUIID); } Activity sequenceActivity = newActivityMap.get(sequenceActivityUIID); - if ( sequenceActivity == null || ! sequenceActivity.isSequenceActivity() ) { - throw new WDDXProcessorConversionException("Activity listed in the branch mapping list is missing. Mapping entry UUID "+entryUIID+" sequenceActivityUIID "+sequenceActivityUIID); + if ( sequenceActivity == null ) { + throw new WDDXProcessorConversionException("Sequence Activity listed in the branch mapping list is missing. Mapping entry UUID "+entryUIID+" sequenceActivityUIID "+sequenceActivityUIID); } if ( ! sequenceActivity.isSequenceActivity() ) { throw new WDDXProcessorConversionException("Activity listed in the branch mapping list is not a sequence activity. Mapping entry UUID "+entryUIID+" sequenceActivityUIID "+sequenceActivityUIID); } + Activity branchingActivity = newActivityMap.get(branchingActivityUIID); + if ( branchingActivity == null ) { + throw new WDDXProcessorConversionException("Branching Activity listed in the branch mapping list is missing. Mapping entry UUID "+entryUIID+" branchingActivityUIID "+branchingActivityUIID); + } + if ( ! branchingActivity.isBranchingActivity() ) { + throw new WDDXProcessorConversionException("Activity listed in the branch mapping list is not a branching activity. Mapping entry UUID "+entryUIID+" branchingActivityUIID "+branchingActivityUIID); + } + GroupBranchActivityEntry entry = null; // does it exist already? Check on the ID field as the UIID field may not have @@ -1200,6 +1198,7 @@ group.getBranchActivities().add(entry); } entry.setBranchSequenceActivity((SequenceActivity)sequenceActivity); + entry.setBranchingActivity((BranchingActivity)branchingActivity); entry.setGroup(group); return entry; Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/GroupBranchActivityEntry.hbm.xml =================================================================== diff -u -r11914f2354254e0e92e2a271453ba2f0e8a35fdc -r4ca1b4e69d135a796d7db5eab3206e24e9503619 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/GroupBranchActivityEntry.hbm.xml (.../GroupBranchActivityEntry.hbm.xml) (revision 11914f2354254e0e92e2a271453ba2f0e8a35fdc) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/GroupBranchActivityEntry.hbm.xml (.../GroupBranchActivityEntry.hbm.xml) (revision 4ca1b4e69d135a796d7db5eab3206e24e9503619) @@ -32,10 +32,17 @@ - @hibernate.column name="activity_id" + @hibernate.column name="sequence_activity_id" - + + + + + @hibernate.column name="branch_activity_id" + + + Index: lams_common/db/model/lams_11.clay =================================================================== diff -u -r11914f2354254e0e92e2a271453ba2f0e8a35fdc -r4ca1b4e69d135a796d7db5eab3206e24e9503619 --- lams_common/db/model/lams_11.clay (.../lams_11.clay) (revision 11914f2354254e0e92e2a271453ba2f0e8a35fdc) +++ lams_common/db/model/lams_11.clay (.../lams_11.clay) (revision 4ca1b4e69d135a796d7db5eab3206e24e9503619) @@ -5308,8 +5308,8 @@ - + @@ -5321,8 +5321,8 @@ - + @@ -5344,7 +5344,7 @@ - + @@ -5357,6 +5357,19 @@ + + + + + + + + + + + + + @@ -5365,8 +5378,8 @@ - + @@ -5377,13 +5390,20 @@ - + - + + + + + + + + Index: lams_common/db/sql/create_lams_11_tables.sql =================================================================== diff -u -r11914f2354254e0e92e2a271453ba2f0e8a35fdc -r4ca1b4e69d135a796d7db5eab3206e24e9503619 --- lams_common/db/sql/create_lams_11_tables.sql (.../create_lams_11_tables.sql) (revision 11914f2354254e0e92e2a271453ba2f0e8a35fdc) +++ lams_common/db/sql/create_lams_11_tables.sql (.../create_lams_11_tables.sql) (revision 4ca1b4e69d135a796d7db5eab3206e24e9503619) @@ -558,17 +558,22 @@ entry_id BIGINT(20) NOT NULL AUTO_INCREMENT , entry_ui_id INT(11) , group_id BIGINT(20) NOT NULL - , activity_id BIGINT(20) NOT NULL - , UNIQUE UQ_lams_group_activity (activity_id, group_id) + , sequence_activity_id BIGINT(20) NOT NULL + , branch_activity_id BIGINT(20) NOT NULL + , UNIQUE UQ_lams_group_activity (group_id, branch_activity_id) , PRIMARY KEY (entry_id) , INDEX (group_id) , CONSTRAINT FK_lams_group_activity_1 FOREIGN KEY (group_id) REFERENCES lams_group (group_id) - , INDEX (activity_id) - , CONSTRAINT FK_lams_group_activity_2 FOREIGN KEY (activity_id) + , INDEX (sequence_activity_id) + , CONSTRAINT FK_lams_branch_map_sequence FOREIGN KEY (sequence_activity_id) REFERENCES lams_learning_activity (activity_id) + , INDEX (branch_activity_id) + , CONSTRAINT FK_lams_branch_map_branch FOREIGN KEY (branch_activity_id) + REFERENCES lams_learning_activity (activity_id) )TYPE=InnoDB; + CREATE TABLE lams_lesson ( lesson_id BIGINT(20) NOT NULL AUTO_INCREMENT , learning_design_id BIGINT(20) NOT NULL Index: lams_common/db/sql/updatescripts/alter_21_branching.sql =================================================================== diff -u -r11914f2354254e0e92e2a271453ba2f0e8a35fdc -r4ca1b4e69d135a796d7db5eab3206e24e9503619 --- lams_common/db/sql/updatescripts/alter_21_branching.sql (.../alter_21_branching.sql) (revision 11914f2354254e0e92e2a271453ba2f0e8a35fdc) +++ lams_common/db/sql/updatescripts/alter_21_branching.sql (.../alter_21_branching.sql) (revision 4ca1b4e69d135a796d7db5eab3206e24e9503619) @@ -8,15 +8,19 @@ entry_id BIGINT(20) NOT NULL AUTO_INCREMENT , entry_ui_id INT(11) , group_id BIGINT(20) NOT NULL - , activity_id BIGINT(20) NOT NULL - , UNIQUE UQ_lams_group_activity (activity_id, group_id) + , sequence_activity_id BIGINT(20) NOT NULL + , branch_activity_id BIGINT(20) NOT NULL + , UNIQUE UQ_lams_group_activity (group_id, branch_activity_id) , PRIMARY KEY (entry_id) , INDEX (group_id) , CONSTRAINT FK_lams_group_activity_1 FOREIGN KEY (group_id) REFERENCES lams_group (group_id) - , INDEX (activity_id) - , CONSTRAINT FK_lams_group_activity_2 FOREIGN KEY (activity_id) + , INDEX (sequence_activity_id) + , CONSTRAINT FK_lams_branch_map_sequence FOREIGN KEY (sequence_activity_id) REFERENCES lams_learning_activity (activity_id) + , INDEX (branch_activity_id) + , CONSTRAINT FK_lams_branch_map_branch FOREIGN KEY (branch_activity_id) + REFERENCES lams_learning_activity (activity_id) )TYPE=InnoDB; INSERT INTO lams_learning_activity_type VALUES (10, 'BRANCHING_CHOSEN'); Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Group.java =================================================================== diff -u -r11914f2354254e0e92e2a271453ba2f0e8a35fdc -r4ca1b4e69d135a796d7db5eab3206e24e9503619 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Group.java (.../Group.java) (revision 11914f2354254e0e92e2a271453ba2f0e8a35fdc) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Group.java (.../Group.java) (revision 4ca1b4e69d135a796d7db5eab3206e24e9503619) @@ -259,7 +259,7 @@ * @hibernate.collection-key * column="group_id" * @hibernate.collection-one-to-many - * class="org.lamsfoundation.lams.learningdesign.GroupBranchActivity" + * class="org.lamsfoundation.lams.learningdesign.GroupBranchActivityEntry" * */ public Set getBranchActivities() { @@ -349,11 +349,12 @@ newGrouping, null, null, null); if ( this.getBranchActivities() != null && this.getBranchActivities().size() > 0) { + newGroup.setBranchActivities(new HashSet()); Iterator iter = this.getBranchActivities().iterator(); while ( iter.hasNext() ) { GroupBranchActivityEntry oldEntry = (GroupBranchActivityEntry) iter.next(); GroupBranchActivityEntry newEntry = new GroupBranchActivityEntry(null, - oldEntry.getEntryUIID(), newGroup, oldEntry.getBranchSequenceActivity()); + oldEntry.getEntryUIID(), newGroup, oldEntry.getBranchSequenceActivity(), oldEntry.getBranchingActivity()); newGroup.getBranchActivities().add(newEntry); } } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupBranchActivityEntry.java =================================================================== diff -u -r11914f2354254e0e92e2a271453ba2f0e8a35fdc -r4ca1b4e69d135a796d7db5eab3206e24e9503619 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupBranchActivityEntry.java (.../GroupBranchActivityEntry.java) (revision 11914f2354254e0e92e2a271453ba2f0e8a35fdc) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupBranchActivityEntry.java (.../GroupBranchActivityEntry.java) (revision 4ca1b4e69d135a796d7db5eab3206e24e9503619) @@ -54,16 +54,20 @@ /** persistent field */ private SequenceActivity branchSequenceActivity; - //--------------------------------------------------------------------- + /** persistent field */ + private BranchingActivity branchingActivity; + + //--------------------------------------------------------------------- // Object creation Methods //--------------------------------------------------------------------- /** full constructor */ - public GroupBranchActivityEntry(Long entryId, Integer entryUIID, Group group, SequenceActivity branchSequenceActivity) { + public GroupBranchActivityEntry(Long entryId, Integer entryUIID, Group group, SequenceActivity branchSequenceActivity, BranchingActivity branchingActivity) { this.entryId = entryId; this.entryUIID = entryUIID; this.group = group; this.branchSequenceActivity = branchSequenceActivity; + this.branchingActivity = branchingActivity; } /** default constructor */ @@ -116,7 +120,7 @@ /** * @hibernate.many-to-one * not-null="true" - * @hibernate.column name="activity_id" + * @hibernate.column name="sequence_activity_id" * */ public org.lamsfoundation.lams.learningdesign.SequenceActivity getBranchSequenceActivity() { @@ -127,6 +131,20 @@ this.branchSequenceActivity = branchSequenceActivity; } + /** + * @hibernate.many-to-one + * not-null="true" + * @hibernate.column name="branch_activity_id" + * + */ + public org.lamsfoundation.lams.learningdesign.BranchingActivity getBranchingActivity() { + return this.branchingActivity; + } + + public void setBranchingActivity(org.lamsfoundation.lams.learningdesign.BranchingActivity branchingActivity) { + this.branchingActivity = branchingActivity; + } + public String toString() { return new ToStringBuilder(this) .append("entryId", getEntryId()) Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/GroupBranchActivityEntryDTO.java =================================================================== diff -u -r11914f2354254e0e92e2a271453ba2f0e8a35fdc -r4ca1b4e69d135a796d7db5eab3206e24e9503619 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/GroupBranchActivityEntryDTO.java (.../GroupBranchActivityEntryDTO.java) (revision 11914f2354254e0e92e2a271453ba2f0e8a35fdc) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/GroupBranchActivityEntryDTO.java (.../GroupBranchActivityEntryDTO.java) (revision 4ca1b4e69d135a796d7db5eab3206e24e9503619) @@ -43,6 +43,7 @@ private Integer entryUIID; private Integer groupUIID; private Integer sequenceActivityUIID; + private Integer branchingActivityUIID; //--------------------------------------------------------------------- // Object creation Methods @@ -54,6 +55,7 @@ this.entryUIID = gba.getEntryUIID(); this.groupUIID = gba.getGroup().getGroupUIID(); this.sequenceActivityUIID = gba.getBranchSequenceActivity().getActivityUIID(); + this.branchingActivityUIID = gba.getBranchingActivity().getActivityUIID(); } public Long getEntryID() { @@ -88,4 +90,12 @@ this.entryUIID = entryUIID; } + public Integer getBranchingActivityUIID() { + return branchingActivityUIID; + } + + public void setBranchingActivityUIID(Integer branchingActivityUIID) { + this.branchingActivityUIID = branchingActivityUIID; + } + } Index: lams_common/src/java/org/lamsfoundation/lams/lesson/service/ILessonService.java =================================================================== diff -u -r9481bb9c6f8c0e4d6fbed6b230a41c77feda64c6 -r4ca1b4e69d135a796d7db5eab3206e24e9503619 --- lams_common/src/java/org/lamsfoundation/lams/lesson/service/ILessonService.java (.../ILessonService.java) (revision 9481bb9c6f8c0e4d6fbed6b230a41c77feda64c6) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/service/ILessonService.java (.../ILessonService.java) (revision 4ca1b4e69d135a796d7db5eab3206e24e9503619) @@ -28,6 +28,7 @@ import java.util.List; import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.Grouping; import org.lamsfoundation.lams.learningdesign.GroupingActivity; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.dto.LessonDTO; @@ -99,13 +100,21 @@ public void performGrouping(Long lessonId, GroupingActivity groupingActivity, User learner) throws LessonServiceException; /** - * Perform grouping for all the learners who have started the lesson, based on the grouping activity. - * Currently used for chosen grouping. - * @param lessonId lesson id (mandatory) - * @param groupName group name (mandatory) - * @param groupingActivityId the activity that has create grouping. (mandatory) + * Perform the grouping, setting the given list of learners as one group. + * @param groupingActivity the activity that has create grouping. (mandatory) + * @param groupName (optional) + * @param learners to form one group (mandatory) */ - public void performGrouping(GroupingActivity groupingActivity, String groupName, List learners) throws LessonServiceException; + public void performGrouping(GroupingActivity groupingActivity, String groupName, List learners) throws LessonServiceException; + + /** + * Perform the grouping, setting the given list of learners as one group. Used in suitations + * where there is a grouping but no grouping activity (e.g. in branching). + * @param groupingActivity the activity that has create grouping. (mandatory) + * @param groupName (optional) + * @param learners to form one group (mandatory) + */ + public void performGrouping(Grouping grouping, String groupName, List learners) throws LessonServiceException; /** * Perform grouping for all the learners who have started the lesson, based on the grouping activity. Index: lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java =================================================================== diff -u -r9481bb9c6f8c0e4d6fbed6b230a41c77feda64c6 -r4ca1b4e69d135a796d7db5eab3206e24e9503619 --- lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java (.../LessonService.java) (revision 9481bb9c6f8c0e4d6fbed6b230a41c77feda64c6) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java (.../LessonService.java) (revision 4ca1b4e69d135a796d7db5eab3206e24e9503619) @@ -206,13 +206,26 @@ } /** - * Perform the grouping, setting the given list of learners as one group. Not used initially. + * Perform the grouping, setting the given list of learners as one group. * @param groupingActivity the activity that has create grouping. (mandatory) - * @param learners to form one group + * @param groupName (optional) + * @param learners to form one group (mandatory) */ public void performGrouping(GroupingActivity groupingActivity, String groupName, List learners) throws LessonServiceException { Grouping grouping = groupingActivity.getCreateGrouping(); + performGrouping(grouping, groupName, learners); + } + + /** + * Perform the grouping, setting the given list of learners as one group. Used in suitations + * where there is a grouping but no grouping activity (e.g. in branching). + * @param groupingActivity the activity that has create grouping. (mandatory) + * @param groupName (optional) + * @param learners to form one group (mandatory) + */ + public void performGrouping(Grouping grouping, String groupName, List learners) throws LessonServiceException { + if ( grouping != null && grouping.isChosenGrouping() ) { Grouper grouper = grouping.getGrouper(); if ( grouper != null ) { @@ -225,7 +238,7 @@ groupingDAO.update(grouping); } } else { - String error = "The method performChosenGrouping supports only grouping methods where the supplied list should be used as a single group (currently only ChosenGrouping). Called with a groupingActivity with the wrong grouper "+groupingActivity.getActivityId(); + String error = "The method performChosenGrouping supports only grouping methods where the supplied list should be used as a single group (currently only ChosenGrouping). Called with wrong grouper "+grouping; log.error(error); throw new LessonServiceException(error); } Index: lams_common/src/java/org/lamsfoundation/lams/util/wddx/WDDXTAGS.java =================================================================== diff -u -r11914f2354254e0e92e2a271453ba2f0e8a35fdc -r4ca1b4e69d135a796d7db5eab3206e24e9503619 --- lams_common/src/java/org/lamsfoundation/lams/util/wddx/WDDXTAGS.java (.../WDDXTAGS.java) (revision 11914f2354254e0e92e2a271453ba2f0e8a35fdc) +++ lams_common/src/java/org/lamsfoundation/lams/util/wddx/WDDXTAGS.java (.../WDDXTAGS.java) (revision 4ca1b4e69d135a796d7db5eab3206e24e9503619) @@ -135,6 +135,7 @@ public static final String GROUP_BRANCH_ACTIVITY_ENTRY_ID = "entryID"; public static final String GROUP_BRANCH_ACTIVITY_ENTRY_UIID = "entryUIID"; public static final String GROUP_BRANCH_SEQUENCE_ACTIVITY_UIID = "sequenceActivityUIID"; + public static final String GROUP_BRANCH_ACTIVITY_UIID = "branchActivityUIID"; /** Transition specific tags */ public static final String TRANSITION_ID ="transitionID"; Index: lams_common/src/java/org/lamsfoundation/lams/web/util/AttributeNames.java =================================================================== diff -u -r6563149ab60daa42a7f37c0486e1cd248cacb200 -r4ca1b4e69d135a796d7db5eab3206e24e9503619 --- lams_common/src/java/org/lamsfoundation/lams/web/util/AttributeNames.java (.../AttributeNames.java) (revision 6563149ab60daa42a7f37c0486e1cd248cacb200) +++ lams_common/src/java/org/lamsfoundation/lams/web/util/AttributeNames.java (.../AttributeNames.java) (revision 4ca1b4e69d135a796d7db5eab3206e24e9503619) @@ -50,6 +50,7 @@ public static final String PARAM_DEST_ACTIVITY_ID = "destActivityID"; public static final String PARAM_ACTIVITY_ID = "activityID"; public static final String PARAM_CONTENT_FOLDER_ID = "contentFolderID"; + public static final String PARAM_TITLE = "title"; public static final String PARAM_COURSE_ID = "courseID"; public static final String PARAM_CLASS_ID = "classID"; @@ -58,6 +59,7 @@ public static final String PARAM_LEARNINGDESIGN_ID = "learningDesignID"; public static final String PARAM_ORGANISATION_ID = "organisationID"; + public static final String PARAM_LEARNER_PROGRESS_ID = "progressID"; public static final String PARAM_LESSON_ID = "lessonID"; public static final String PARAM_DIRECTORY_NAME = "directoryName"; public static final String PARAM_FILENAME = "filename";