Index: lams_build/lib/lams/lams-central.jar =================================================================== diff -u -rc9aead8dc4d1f820cff644f7973adf5072a1bcf7 -r9bd21433617c6dbccfacfb09752344c640570966 Binary files differ Index: lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java =================================================================== diff -u -rc135649b64e98c9233da20bdcfb7689598116314 -r9bd21433617c6dbccfacfb09752344c640570966 --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java (.../AuthoringService.java) (revision c135649b64e98c9233da20bdcfb7689598116314) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java (.../AuthoringService.java) (revision 9bd21433617c6dbccfacfb09752344c640570966) @@ -563,10 +563,10 @@ processor.parseLearningDesign(); - ArrayList activities = processor.getLastReadOnlyActivity(); + Activity lastReadOnlyActivity = processor.getLastReadOnlyActivity(); // add new System Gate after last read-only Activity - addSystemGateAfterActivity(activities, design); + addSystemGateAfterActivity(lastReadOnlyActivity, design); setLessonLock(design, false); @@ -616,20 +616,19 @@ processor.parseLearningDesign(); - ArrayList activities = processor.getLastReadOnlyActivity(); + Activity lastReadOnlyActivity = processor.getLastReadOnlyActivity(); // open and release waiting list on system gate GateActivity gate = null; - if (activities != null) { - if (!activities.isEmpty() && activities.get(0).isGateActivity()) { - gate = (GateActivity) activities.get(0); - } + if (lastReadOnlyActivity != null && lastReadOnlyActivity.isGateActivity() + && ((GateActivity) lastReadOnlyActivity).isSystemGate()) { + gate = (GateActivity) lastReadOnlyActivity; } if (gate != null) { // remove inputted system gate - design = removeTempSystemGate(gate, design); + design = removeTempSystemGate(gate.getActivityId(), design.getLearningDesignId()); } // LDEV-1899 only mark learners uncompleted if a change was @@ -663,12 +662,12 @@ * * This will leave a "hole" in the learner progress, but the progress engine can take care of that. * - * @param gate - * @param design * @return Learning Design with removed System Gate */ - @Override - public LearningDesign removeTempSystemGate(GateActivity gate, LearningDesign design) { + private LearningDesign removeTempSystemGate(Long gateId, Long learningDesignId) { + LearningDesign design = learningDesignDAO.getLearningDesignById(learningDesignId); + GateActivity gate = (GateActivity) activityDAO.getActivityByActivityId(gateId); + // get transitions Transition toTransition = gate.getTransitionTo(); Transition fromTransition = gate.getTransitionFrom(); @@ -694,6 +693,8 @@ // remove temp system gate design.getActivities().remove(gate); + gate.setTransitionFrom(null); + gate.setTransitionTo(null); // increment design version field design.setDesignVersion(design.getDesignVersion() + 1); @@ -710,7 +711,7 @@ * @param activities * @param design */ - public void addSystemGateAfterActivity(ArrayList activities, LearningDesign design) { + public void addSystemGateAfterActivity(Activity activity, LearningDesign design) { GateActivity gate = null; Integer syncType = new Integer(Activity.SYSTEM_GATE_ACTIVITY_TYPE); @@ -720,7 +721,6 @@ String title = "System Gate"; SystemTool systemTool = systemToolDAO.getSystemToolByID(SystemTool.SYSTEM_GATE); - Activity activity = activities.isEmpty() ? null : (Activity) activities.get(0); try { /* create new System Gate Activity */ gate = (GateActivity) Activity.getActivityInstance(syncType.intValue()); @@ -789,8 +789,8 @@ newTransition.setToUIID(gate.getActivityUIID()); newTransition.setLearningDesign(design); - activity.setTransitionFrom(fromTransition); - gate.setTransitionTo(fromTransition); + activity.setTransitionFrom(newTransition); + gate.setTransitionTo(newTransition); Integer x1 = activity.getTransitionTo() != null ? activity.getTransitionTo().getFromActivity() .getXcoord() : 0; /* set x/y position for Gate */ @@ -899,7 +899,7 @@ for (Iterator i = activities.iterator(); i.hasNext();) { Activity activity = (Activity) i.next(); - if (! activity.isInitialised()) { + if (!activity.isInitialised()) { // this is a new activity - need to set up the content, do any // scheduling, etc // always have to copy the tool content, even though it may Index: lams_central/src/java/org/lamsfoundation/lams/authoring/service/EditOnFlyProcessor.java =================================================================== diff -u -r4f68a533e24967e0185132c5e361a8a054f43941 -r9bd21433617c6dbccfacfb09752344c640570966 --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/EditOnFlyProcessor.java (.../EditOnFlyProcessor.java) (revision 4f68a533e24967e0185132c5e361a8a054f43941) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/EditOnFlyProcessor.java (.../EditOnFlyProcessor.java) (revision 9bd21433617c6dbccfacfb09752344c640570966) @@ -24,9 +24,6 @@ package org.lamsfoundation.lams.authoring.service; -import java.util.ArrayList; - -import org.apache.commons.collections.ArrayStack; import org.apache.log4j.Logger; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.ComplexActivity; @@ -40,60 +37,43 @@ private static Logger log = Logger.getLogger(EditOnFlyProcessor.class); - ArrayList mainActivityList; - ArrayList currentActivityList; - ArrayStack activityListStack; + private Activity lastReadOnlyActivity = null; - /** - */ - public EditOnFlyProcessor(LearningDesign design, IActivityDAO activityDAO) { - super(design, activityDAO); - this.mainActivityList = new ArrayList(); - this.activityListStack = new ArrayStack(5); - this.currentActivityList = mainActivityList; - } + public EditOnFlyProcessor(LearningDesign design, IActivityDAO activityDAO) { + super(design, activityDAO); + } - /** Prepares to process children */ - public boolean startComplexActivity(ComplexActivity activity) throws LearningDesignProcessorException { - // Create a new current activity list, putting the old current one on the stack. - activityListStack.push(currentActivityList); - currentActivityList = new ArrayList(); - return true; - } + @Override + public boolean startComplexActivity(ComplexActivity activity) throws LearningDesignProcessorException { + return true; + } - /** Creates an ActivityPortfolio and sets up the list of its children. Doesn't create an entry if there are no children. */ - public void endComplexActivity(ComplexActivity activity) throws LearningDesignProcessorException { - - currentActivityList = (ArrayList) activityListStack.pop(); - - if(!activity.isActivityReadOnly()) - return; - - if ( activity != null ) { - if(!currentActivityList.isEmpty()) currentActivityList.remove(currentActivityList.size()-1); - currentActivityList.add(activity); - } + @Override + public void endComplexActivity(ComplexActivity activity) throws LearningDesignProcessorException { + if (activity.isActivityReadOnly()) { + lastReadOnlyActivity = activity; } + } - public void startSimpleActivity(SimpleActivity activity) throws LearningDesignProcessorException { - // everything done by endSimpleActivity - } + @Override + public void startSimpleActivity(SimpleActivity activity) throws LearningDesignProcessorException { + // everything done by endSimpleActivity + } - /** Creates an ActivityPortfolio. */ - public void endSimpleActivity(SimpleActivity activity) throws LearningDesignProcessorException { - if(!activity.isActivityReadOnly()) - return; - - if(activity != null) { - if(!currentActivityList.isEmpty()) currentActivityList.remove(currentActivityList.size()-1); - currentActivityList.add(activity); - } - + /** Creates an ActivityPortfolio. */ + @Override + public void endSimpleActivity(SimpleActivity activity) throws LearningDesignProcessorException { + if (activity.isActivityReadOnly()) { + lastReadOnlyActivity = activity; } - - /** Get the last activities in the sequence which are read-only, may contain more than one Activity due to branching paths */ - public ArrayList getLastReadOnlyActivity() { - return mainActivityList; - } + } + + /** + * Get the last activities in the sequence which are read-only, may contain more than one Activity due to branching + * paths + */ + public Activity getLastReadOnlyActivity() { + return lastReadOnlyActivity; + } } Index: lams_central/src/java/org/lamsfoundation/lams/authoring/service/IAuthoringService.java =================================================================== diff -u -r2b85a10098233e40a7d126e29a1b251669c91277 -r9bd21433617c6dbccfacfb09752344c640570966 --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/IAuthoringService.java (.../IAuthoringService.java) (revision 2b85a10098233e40a7d126e29a1b251669c91277) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/IAuthoringService.java (.../IAuthoringService.java) (revision 9bd21433617c6dbccfacfb09752344c640570966) @@ -359,12 +359,6 @@ /** * - * @param gate - */ - public LearningDesign removeTempSystemGate(GateActivity gate, LearningDesign design); - - /** - * * @param design * @return * @throws LearningDesignException Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/model/TaskListItem.java =================================================================== diff -u -r341a816804f6b2b61a5f180479b56d8fd0d1ea29 -r9bd21433617c6dbccfacfb09752344c640570966 --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/model/TaskListItem.java (.../TaskListItem.java) (revision 341a816804f6b2b61a5f180479b56d8fd0d1ea29) +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/model/TaskListItem.java (.../TaskListItem.java) (revision 9bd21433617c6dbccfacfb09752344c640570966) @@ -222,7 +222,7 @@ /** * @hibernate.many-to-one - * cascade="none" + * cascade="save-update" * column="create_by" * * @return Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/model/TaskListItemAttachment.java =================================================================== diff -u -rf976c3bd40613835d2b5ac91a1eee6748afbe2c7 -r9bd21433617c6dbccfacfb09752344c640570966 --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/model/TaskListItemAttachment.java (.../TaskListItemAttachment.java) (revision f976c3bd40613835d2b5ac91a1eee6748afbe2c7) +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/model/TaskListItemAttachment.java (.../TaskListItemAttachment.java) (revision 9bd21433617c6dbccfacfb09752344c640570966) @@ -173,7 +173,7 @@ /** * @hibernate.many-to-one column="create_by" - * cascade="none" + * cascade="save-update" * @return */ public TaskListUser getCreateBy() { Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/model/TaskListItemComment.java =================================================================== diff -u -r341a816804f6b2b61a5f180479b56d8fd0d1ea29 -r9bd21433617c6dbccfacfb09752344c640570966 --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/model/TaskListItemComment.java (.../TaskListItemComment.java) (revision 341a816804f6b2b61a5f180479b56d8fd0d1ea29) +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/model/TaskListItemComment.java (.../TaskListItemComment.java) (revision 9bd21433617c6dbccfacfb09752344c640570966) @@ -112,7 +112,7 @@ } /** * @hibernate.many-to-one column="create_by" - * cascade="none" + * cascade="save-update" * @return */ public TaskListUser getCreateBy() { Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/model/TaskListItemVisitLog.java =================================================================== diff -u -r875f56cb6917d1a52bed0545f2933c3b55497a02 -r9bd21433617c6dbccfacfb09752344c640570966 --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/model/TaskListItemVisitLog.java (.../TaskListItemVisitLog.java) (revision 875f56cb6917d1a52bed0545f2933c3b55497a02) +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/model/TaskListItemVisitLog.java (.../TaskListItemVisitLog.java) (revision 9bd21433617c6dbccfacfb09752344c640570966) @@ -75,7 +75,7 @@ } /** * @hibernate.many-to-one column="user_uid" - * cascade="none" + * cascade="save-update" * @return */ public TaskListUser getUser() {