Index: lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java,v diff -u -r1.66 -r1.67 --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java 10 Jun 2008 01:23:45 -0000 1.66 +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java 16 Jun 2008 02:54:27 -0000 1.67 @@ -930,19 +930,33 @@ SequenceActivity newSequenceActivity = (SequenceActivity) activity; // Need to check if the sets are not null as these are new objects and Hibernate may not have backed them with collections yet. if ( newSequenceActivity.getBranchEntries() != null && newSequenceActivity.getBranchEntries().size() > 0 ) { - Iterator beIter = newSequenceActivity.getBranchEntries().iterator(); - while ( beIter.hasNext() ) { - // sequence activity will be correct but the branching activity and the grouping will be wrong - // the condition was copied by the sequence activity copy - BranchActivityEntry entry = (BranchActivityEntry) beIter.next(); - BranchingActivity oldBranchingActivity = entry.getBranchingActivity(); - entry.setBranchingActivity((BranchingActivity) newActivities.get(LearningDesign.addOffset(oldBranchingActivity.getActivityUIID(), uiidOffset))); - Group oldGroup = entry.getGroup(); - if ( oldGroup != null ) { - Grouping oldGrouping = oldGroup.getGrouping(); - Grouping newGroouping = newGroupings.get(LearningDesign.addOffset(oldGrouping.getGroupingUIID(), uiidOffset)); - entry.setGroup(newGroouping.getGroup(LearningDesign.addOffset(oldGroup.getGroupUIID(), uiidOffset))); - } + + Activity parentActivity = newSequenceActivity.getParentActivity(); + if ( parentActivity.isChosenBranchingActivity() || + ( parentActivity.isGroupBranchingActivity() && parentActivity.getDefineLater()!=null && + parentActivity.getDefineLater().booleanValue())) { + // Don't have any preset up entries for a teacher chosen or a define later group based branching. + // Must be copying a design that was run previously. + newSequenceActivity.getBranchEntries().clear(); + + } else { + Iterator beIter = newSequenceActivity.getBranchEntries().iterator(); + while ( beIter.hasNext() ) { + // sequence activity will be correct but the branching activity and the grouping will be wrong + // the condition was copied by the sequence activity copy + BranchActivityEntry entry = (BranchActivityEntry) beIter.next(); + BranchingActivity oldBranchingActivity = entry.getBranchingActivity(); + entry.setBranchingActivity((BranchingActivity) newActivities.get(LearningDesign.addOffset(oldBranchingActivity.getActivityUIID(), uiidOffset))); + Group oldGroup = entry.getGroup(); + if ( oldGroup != null ) { + Grouping oldGrouping = oldGroup.getGrouping(); + Grouping newGrouping = newGroupings.get(LearningDesign.addOffset(oldGrouping.getGroupingUIID(), uiidOffset)); + if ( newGrouping != null ) { + entry.setGroup(newGrouping.getGroup(LearningDesign.addOffset(oldGroup.getGroupUIID(), uiidOffset))); + } + } + } + } } } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenBranchingActivity.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenBranchingActivity.java,v diff -u -r1.7 -r1.8 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenBranchingActivity.java 9 Dec 2007 09:55:22 -0000 1.7 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenBranchingActivity.java 16 Jun 2008 02:49:49 -0000 1.8 @@ -136,6 +136,14 @@ ChosenBranchingActivity newBranchingActivity = new ChosenBranchingActivity(); copyBranchingFields(newBranchingActivity); copyToNewComplexActivity(newBranchingActivity, uiidOffset); + + // Any grouping attached to a teacher chosen branching was either a runtime grouping + // because we are running a runtime copy of a design, or some rubbish left from a bug in authoring. + // We won't actually want this group, so remove references to it and they will be set up + // again when a lesson is started. + newBranchingActivity.setGrouping(null); + newBranchingActivity.setGroupingUIID(null); + newBranchingActivity.setApplyGrouping(false); return newBranchingActivity; } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolBranchingActivity.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolBranchingActivity.java,v diff -u -r1.9 -r1.10 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolBranchingActivity.java 8 Jun 2008 05:20:22 -0000 1.9 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolBranchingActivity.java 16 Jun 2008 02:49:49 -0000 1.10 @@ -133,14 +133,23 @@ } /** - * Makes a copy of the BranchingActivity for authoring, preview and monitoring enviornment + * Makes a copy of the BranchingActivity for authoring, preview and monitoring environment * @return BranchingActivity Returns a deep-copy of the originalActivity */ public Activity createCopy(int uiidOffset){ ToolBranchingActivity newBranchingActivity = new ToolBranchingActivity(); copyBranchingFields(newBranchingActivity); copyToNewComplexActivity(newBranchingActivity, uiidOffset); + + // Any grouping attached to a teacher chosen branching was either a runtime grouping + // because we are running a runtime copy of a design, or some rubbish left from a bug in authoring. + // We won't actually want this group, so remove references to it and they will be set up + // again when a lesson is started. + newBranchingActivity.setGrouping(null); + newBranchingActivity.setGroupingUIID(null); + newBranchingActivity.setApplyGrouping(false); + return newBranchingActivity; }