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.79 -r1.80 --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java 29 Jan 2009 04:01:06 -0000 1.79 +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java 10 Feb 2009 01:52:21 -0000 1.80 @@ -1208,11 +1208,6 @@ newLearningDesign.getActivities().clear(); } - if(originalLearningDesign.getFloatingActivity() != null && newLearningDesign.getFloatingActivity() != null) { - // remove the Floating Activity in current design - activities.remove(originalLearningDesign.getFloatingActivity()); - } - newLearningDesign.getActivities().addAll(activities); // On very rare occasions, we've had Hibernate try to save the branching @@ -1258,7 +1253,9 @@ newActivity.setParentActivity(parentActivity); newActivity.setParentUIID(parentActivity.getActivityUIID()); } - newActivities.put(newActivity.getActivityUIID(), newActivity); + + if(!(newActivity.isFloatingActivity() && newLearningDesign.getFloatingActivity() != null)) + newActivities.put(newActivity.getActivityUIID(), newActivity); if (newActivity.isToolActivity()) { copyActivityToolContent(newActivity, newLearningDesign.getCopyTypeID(), originalLearningDesignId, customCSV); @@ -1274,14 +1271,20 @@ // Transfer the floating activities from the main design to the one that is to be imported. // Number of activities may overflow the max limit for the container - to be handled in flash // when design is opened. - Activity refParentActivity = (childActivity.isFloating() && newLearningDesign.getFloatingActivity() != null) - ? newLearningDesign.getFloatingActivity() - : newActivity; - // TODO: fix order id for transfer of floating activities when contained in both designs. - if(childActivity.isFloating() && newLearningDesign.getFloatingActivity() != null) - childActivity.setOrderId(((FloatingActivity) refParentActivity).getActivities().size()+childActivity.getOrderId()+1); - processActivity(childActivity, newLearningDesign, newActivities, newGroupings, - refParentActivity, originalLearningDesignId, uiidOffset, customCSV); + FloatingActivity fParentActivity = null; + Activity refParentActivity = null; + + if(childActivity.isFloating() && newLearningDesign.getFloatingActivity() != null) + fParentActivity = newLearningDesign.getFloatingActivity(); + else + refParentActivity = newActivity; + + if(childActivity.isFloating() && fParentActivity != null) + childActivity.setOrderId(fParentActivity.getActivities().size()+childActivity.getOrderId()+1); + + Activity pActivity = (fParentActivity != null) ? (Activity) fParentActivity : refParentActivity; + processActivity(childActivity, newLearningDesign, newActivities, newGroupings, + pActivity, originalLearningDesignId, uiidOffset, customCSV); } } Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/LearningDesign.hbm.xml =================================================================== RCS file: /usr/local/cvsroot/lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/LearningDesign.hbm.xml,v diff -u -r1.19 -r1.20 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/LearningDesign.hbm.xml 13 Jan 2009 07:00:31 -0000 1.19 +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/LearningDesign.hbm.xml 10 Feb 2009 01:52:21 -0000 1.20 @@ -191,7 +191,7 @@ - + @hibernate.column name="floating_activity_id" Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesign.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesign.java,v diff -u -r1.35 -r1.36 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesign.java 13 Jan 2009 07:00:31 -0000 1.35 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesign.java 10 Feb 2009 01:52:21 -0000 1.36 @@ -81,7 +81,7 @@ private Activity firstActivity; /** nullable persistent field */ - private Activity floatingActivity; + private FloatingActivity floatingActivity; /** nullable persistent field */ private Integer maxID; @@ -170,7 +170,7 @@ String description, String title, Activity firstActivity, - Activity floatingActivity, + FloatingActivity floatingActivity, Integer maxID, Boolean validDesign, Boolean readOnly, @@ -495,14 +495,14 @@ } return newFirstActivity; } - public Activity calculateFloatingActivity(){ - Activity newFloatingActivity = null; + public FloatingActivity calculateFloatingActivity(){ + FloatingActivity newFloatingActivity = null; HashSet parentActivities = this.getParentActivities(); Iterator parentIterator = parentActivities.iterator(); while(parentIterator.hasNext()){ Activity activity = (Activity)parentIterator.next(); if(activity.isFloatingActivity()){ - newFloatingActivity = activity; + newFloatingActivity = (FloatingActivity) activity; break; } } @@ -583,11 +583,11 @@ this.competences = competences; } - public void setFloatingActivity(Activity activity) { + public void setFloatingActivity(FloatingActivity activity) { floatingActivity = activity; } - public Activity getFloatingActivity() { + public FloatingActivity getFloatingActivity() { return floatingActivity; }