Index: lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java =================================================================== diff -u -rd882a2bf9ec6f6f26d9103b7be0aebb95ff23d2c -rf4eb719e023dc891dc5fcf0dff63e0fe274e289e --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java (.../AuthoringService.java) (revision d882a2bf9ec6f6f26d9103b7be0aebb95ff23d2c) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java (.../AuthoringService.java) (revision f4eb719e023dc891dc5fcf0dff63e0fe274e289e) @@ -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 =================================================================== diff -u -r1fe0f4f546903187be6f35e4d5c027853da9408c -rf4eb719e023dc891dc5fcf0dff63e0fe274e289e --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/LearningDesign.hbm.xml (.../LearningDesign.hbm.xml) (revision 1fe0f4f546903187be6f35e4d5c027853da9408c) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/LearningDesign.hbm.xml (.../LearningDesign.hbm.xml) (revision f4eb719e023dc891dc5fcf0dff63e0fe274e289e) @@ -191,7 +191,7 @@ - + @hibernate.column name="floating_activity_id" Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesign.java =================================================================== diff -u -r1fe0f4f546903187be6f35e4d5c027853da9408c -rf4eb719e023dc891dc5fcf0dff63e0fe274e289e --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesign.java (.../LearningDesign.java) (revision 1fe0f4f546903187be6f35e4d5c027853da9408c) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesign.java (.../LearningDesign.java) (revision f4eb719e023dc891dc5fcf0dff63e0fe274e289e) @@ -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; }