Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/AuthoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/AuthoringAction.java,v diff -u -r1.77 -r1.78 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/AuthoringAction.java 19 Nov 2010 22:25:58 -0000 1.77 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/AuthoringAction.java 25 Nov 2010 09:20:07 -0000 1.78 @@ -429,21 +429,29 @@ forumService.deleteTopic(dto.getMessage().getUid()); } } - + // ******************************** Handle conditions **************** - Set conditionSet = getForumConditionSet(sessionMap); - + Set conditions = getForumConditionSet(sessionMap); + List delConditions = getDeletedForumConditionList(sessionMap); + // delete conditions that don't contain any topics - Iterator conditionIter = conditionSet.iterator(); + Iterator conditionIter = conditions.iterator(); while (conditionIter.hasNext()) { ForumCondition condition = conditionIter.next(); if (condition.getTopics().isEmpty()) { conditionIter.remove(); + delConditions.add(condition); + + // reorder remaining conditions + for (ForumCondition otherCondition : conditions) { + if (otherCondition.getOrderId() > condition.getOrderId()) { + otherCondition.setOrderId(otherCondition.getOrderId() - 1); + } + } } } - forum.setConditions(conditionSet); - - List delConditions = getDeletedForumConditionList(sessionMap); + forum.setConditions(conditions); + iter = delConditions.iterator(); while (iter.hasNext()) { ForumCondition condition = (ForumCondition) iter.next(); Index: lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/web/action/AuthoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/web/action/AuthoringAction.java,v diff -u -r1.23 -r1.24 --- lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/web/action/AuthoringAction.java 5 Apr 2010 17:27:40 -0000 1.23 +++ lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/web/action/AuthoringAction.java 25 Nov 2010 09:20:22 -0000 1.24 @@ -634,20 +634,29 @@ } // ******************************** Handle conditions **************** - Set conditionSet = getSurveyConditionSet(sessionMap); + Set conditions = getSurveyConditionSet(sessionMap); + List delConditions = getDeletedSurveyConditionList(sessionMap); // delete conditions that don't contain any questions - Iterator conditionIter = conditionSet.iterator(); + Iterator conditionIter = conditions.iterator(); while (conditionIter.hasNext()) { SurveyCondition condition = conditionIter.next(); if (condition.getQuestions().isEmpty()) { conditionIter.remove(); + delConditions.add(condition); + + //reorder remaining conditions + for (SurveyCondition otherCondition : conditions) { + if (otherCondition.getOrderId() > condition.getOrderId()) { + otherCondition.setOrderId(otherCondition.getOrderId() - 1); + } + } } } - surveyPO.setConditions(conditionSet); - - List delConditionList = getDeletedSurveyConditionList(sessionMap); - iter = delConditionList.iterator(); + surveyPO.setConditions(conditions); + + //permanently remove conditions from DB + iter = delConditions.iterator(); while (iter.hasNext()) { SurveyCondition condition = (SurveyCondition) iter.next(); iter.remove(); Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/web/action/AuthoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/web/action/AuthoringAction.java,v diff -u -r1.16 -r1.17 --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/web/action/AuthoringAction.java 29 Jan 2009 21:54:34 -0000 1.16 +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/web/action/AuthoringAction.java 25 Nov 2010 09:20:16 -0000 1.17 @@ -397,12 +397,10 @@ service.deleteTaskListAttachment(delAtt.getUid()); }// end remove from persist value } - // copy back taskListPO.setAttachments(attPOSet); + // ************************* Handle taskList items ******************* - - // Handle taskList items Set itemList = new LinkedHashSet(); SortedSet items = getTaskListItemList(sessionMap); for (TaskListItem item : items) { @@ -414,22 +412,30 @@ } taskListPO.setTaskListItems(itemList); - // Handle taskList conditions. Also delete conditions that don't contain any taskLIstItems. - SortedSet conditionList = getTaskListConditionList(sessionMap); - SortedSet conditionListWithoutEmptyElements = new TreeSet(conditionList); - List delTaskListConditionList = getDeletedTaskListConditionList(sessionMap); - for (TaskListCondition condition : conditionList) { + // ************************* Handle taskList conditions ******************* + SortedSet conditions = getTaskListConditionList(sessionMap); + SortedSet conditionListWithoutEmptyElements = new TreeSet(conditions); + List delConditions = getDeletedTaskListConditionList(sessionMap); + + for (TaskListCondition condition : conditions) { if (condition.getTaskListItems().size() == 0) { conditionListWithoutEmptyElements.remove(condition); - delTaskListConditionList.add(condition); + delConditions.add(condition); + + //reorder remaining conditions + for (TaskListCondition otherCondition : conditionListWithoutEmptyElements) { + if (otherCondition.getSequenceId() > condition.getSequenceId()) { + otherCondition.setSequenceId(otherCondition.getSequenceId() - 1); + } + } } } - conditionList.clear(); - conditionList.addAll(conditionListWithoutEmptyElements); - taskListPO.setConditions(conditionList); + conditions.clear(); + conditions.addAll(conditionListWithoutEmptyElements); + taskListPO.setConditions(conditions); // delete TaskListConditions from database. - iter = delTaskListConditionList.iterator(); + iter = delConditions.iterator(); while (iter.hasNext()) { TaskListCondition condition = (TaskListCondition) iter.next(); iter.remove(); @@ -442,8 +448,8 @@ // delete TaskListItems from database. This should be done after // TaskListConditions have been deleted from the database. This is due // to prevent errors with foreign keys. - List delTaskListItemList = getDeletedTaskListItemList(sessionMap); - iter = delTaskListItemList.iterator(); + List delTaskListItems = getDeletedTaskListItemList(sessionMap); + iter = delTaskListItems.iterator(); while (iter.hasNext()) { TaskListItem item = (TaskListItem) iter.next(); iter.remove();