Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r725717c8db7287e639f58135c179133d18e85adb -r20a2c3a6cd80bcf92989b3fa1e566ab93fa99afa Binary files differ Index: lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java =================================================================== diff -u -r725717c8db7287e639f58135c179133d18e85adb -r20a2c3a6cd80bcf92989b3fa1e566ab93fa99afa --- lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java (.../ObjectExtractor.java) (revision 725717c8db7287e639f58135c179133d18e85adb) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java (.../ObjectExtractor.java) (revision 20a2c3a6cd80bcf92989b3fa1e566ab93fa99afa) @@ -1238,13 +1238,14 @@ } if ( entry == null ) { - entry = new GroupBranchActivityEntry(); - group.getBranchActivities().add(entry); + group.allocateBranchToGroup(entryId,entryUIID, (SequenceActivity)sequenceActivity, (BranchingActivity)branchingActivity); + } else { + entry.setBranchSequenceActivity((SequenceActivity)sequenceActivity); + entry.setBranchingActivity((BranchingActivity)branchingActivity); + entry.setGroup(group); } - entry.setBranchSequenceActivity((SequenceActivity)sequenceActivity); - entry.setBranchingActivity((BranchingActivity)branchingActivity); - entry.setGroup(group); - + + groupingDAO.update(group); return entry; } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Group.java =================================================================== diff -u -r8c80e19ca280ae4a8609b795eea180a6d44400e5 -r20a2c3a6cd80bcf92989b3fa1e566ab93fa99afa --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Group.java (.../Group.java) (revision 8c80e19ca280ae4a8609b795eea180a6d44400e5) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Group.java (.../Group.java) (revision 20a2c3a6cd80bcf92989b3fa1e566ab93fa99afa) @@ -366,4 +366,16 @@ return newGroup; } + + /** Allocate this group to the given branch, in a branching activity. This creates the GroupBranchActivityEntry record and adds it + * to the branchActivities set. The entryId, entryUIID will only be populated if this is called from authoring + */ + public GroupBranchActivityEntry allocateBranchToGroup(Long entryId, Integer entryUIID, SequenceActivity branch, BranchingActivity branchingActivity) { + GroupBranchActivityEntry entry = new GroupBranchActivityEntry(entryId, entryUIID, this, branch, (BranchingActivity) branchingActivity); + if ( getBranchActivities() == null ) { + setBranchActivities(new HashSet()); + } + getBranchActivities().add(entry); + return entry; + } } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java =================================================================== diff -u -r725717c8db7287e639f58135c179133d18e85adb -r20a2c3a6cd80bcf92989b3fa1e566ab93fa99afa --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java (.../ExportToolContentService.java) (revision 725717c8db7287e639f58135c179133d18e85adb) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java (.../ExportToolContentService.java) (revision 20a2c3a6cd80bcf92989b3fa1e566ab93fa99afa) @@ -1656,35 +1656,26 @@ */ private GroupBranchActivityEntry getGroupBranchActivityEntry(GroupBranchActivityEntryDTO entryDto, MapgroupByUIIDMapper, Map activityByUIIDMapper) { - GroupBranchActivityEntry entry = new GroupBranchActivityEntry(); - entry.setEntryUIID(entryDto.getEntryUIID()); - - Group group = groupByUIIDMapper.get(entryDto.getGroupUIID()); - if ( group == null ) { - log.error("Unable to find matching group for group to branch mapping "+entryDto+" Skipping entry"); - return null; - } - if ( group.getBranchActivities() == null ) - group.setBranchActivities(new HashSet()); - group.getBranchActivities().add(entry); - entry.setGroup(group); - - Activity activity = activityByUIIDMapper.get(entryDto.getSequenceActivityUIID()); - if ( activity == null ) { + Activity branch = activityByUIIDMapper.get(entryDto.getSequenceActivityUIID()); + if ( branch == null ) { log.error("Unable to find matching sequence activity for group to branch mapping "+entryDto+" Skipping entry"); return null; } - entry.setBranchSequenceActivity((SequenceActivity)activity); - activity = activityByUIIDMapper.get(entryDto.getBranchingActivityUIID()); - if ( activity == null ) { + Activity branchingActivity = activityByUIIDMapper.get(entryDto.getBranchingActivityUIID()); + if ( branchingActivity == null ) { log.error("Unable to find matching branching activity for group to branch mapping "+entryDto+" Skipping entry"); return null; } - entry.setBranchingActivity((BranchingActivity)activity); - return entry; + Group group = groupByUIIDMapper.get(entryDto.getGroupUIID()); + if ( group == null ) { + log.error("Unable to find matching group for group to branch mapping "+entryDto+" Skipping entry"); + return null; + } + + return group.allocateBranchToGroup(null, entryDto.getEntryUIID(), (SequenceActivity) branch, (BranchingActivity) branchingActivity); } private Transition getTransition(TransitionDTO transDto, Map activityMapper) {