Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/AuthoringAction.java =================================================================== diff -u -rcd8c61889043c1314d651b9df0956d7e800436de -r6b7e0e618bdc94fb8982b8330afb7ab0cc83e1b6 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/AuthoringAction.java (.../AuthoringAction.java) (revision cd8c61889043c1314d651b9df0956d7e800436de) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/AuthoringAction.java (.../AuthoringAction.java) (revision 6b7e0e618bdc94fb8982b8330afb7ab0cc83e1b6) @@ -404,7 +404,7 @@ iter.remove(); } - // ********************************Handle topic******************* + // **************************** Handle topic ********************* Set topics = getTopics(sessionMap); iter = topics.iterator(); while (iter.hasNext()) { @@ -427,10 +427,17 @@ } } - // ********************************Handle conditions (also delete conditions that don't contain any topics)**** - Set conditionSet = new TreeSet(new TextSearchConditionComparator()); - Set existingConditionSet = getForumConditionSet(sessionMap); - conditionSet.addAll(existingConditionSet); + // ******************************** Handle conditions **************** + Set conditionSet = getForumConditionSet(sessionMap); + + // delete conditions that don't contain any topics + Iterator conditionIter = conditionSet.iterator(); + while (conditionIter.hasNext()) { + ForumCondition condition = conditionIter.next(); + if (condition.getTopics().isEmpty()) { + conditionIter.remove(); + } + } forum.setConditions(conditionSet); List delConditions = getDeletedForumConditionList(sessionMap); @@ -730,15 +737,10 @@ while (conditionIter.hasNext()) { ForumCondition condition = conditionIter.next(); - Iterator topicIter = condition.getTopics().iterator(); - while (topicIter.hasNext()) { - if (topicIter.next() == item.getMessage()) { - topicIter.remove(); - } + Set topicList = condition.getTopics(); + if (topicList.contains(item.getMessage())) { + topicList.remove(item.getMessage()); } - if (condition.getTopics().isEmpty()) { - conditionIter.remove(); - } } } Index: lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/web/action/AuthoringAction.java =================================================================== diff -u -rf175fc5a246122d997ac9c10378defa54868be9d -r6b7e0e618bdc94fb8982b8330afb7ab0cc83e1b6 --- lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision f175fc5a246122d997ac9c10378defa54868be9d) +++ lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision 6b7e0e618bdc94fb8982b8330afb7ab0cc83e1b6) @@ -210,15 +210,10 @@ while (conditionIter.hasNext()) { SurveyCondition condition = conditionIter.next(); - Iterator questionIter = condition.getQuestions().iterator(); - while (questionIter.hasNext()) { - if (questionIter.next() == item) { - questionIter.remove(); - } + Set questions = condition.getQuestions(); + if (questions.contains(item)) { + questions.remove(item); } - if (condition.getQuestions().isEmpty()) { - conditionIter.remove(); - } } } @@ -613,8 +608,8 @@ // copy back surveyPO.setAttachments(attPOSet); + // ************************* Handle survey questions ******************* - // Handle survey items Set questionList = new LinkedHashSet(); SortedSet topics = getSurveyItemList(sessionMap); iter = topics.iterator(); @@ -627,7 +622,7 @@ } } surveyPO.setQuestions(questionList); - // delete instructino file from database. + // delete instruction file from database. List delSurveyItemList = getDeletedSurveyItemList(sessionMap); iter = delSurveyItemList.iterator(); while (iter.hasNext()) { @@ -638,23 +633,30 @@ } } - Set conditionSet = new TreeSet(new TextSearchConditionComparator()); - Set existingConditionSet = getSurveyConditionSet(sessionMap); - conditionSet.addAll(existingConditionSet); + // ******************************** Handle conditions **************** + Set conditionSet = getSurveyConditionSet(sessionMap); + + // delete conditions that don't contain any questions + Iterator conditionIter = conditionSet.iterator(); + while (conditionIter.hasNext()) { + SurveyCondition condition = conditionIter.next(); + if (condition.getQuestions().isEmpty()) { + conditionIter.remove(); + } + } surveyPO.setConditions(conditionSet); - - // ********************************************** - // finally persist surveyPO again - service.saveOrUpdateSurvey(surveyPO); - + List delConditionList = getDeletedSurveyConditionList(sessionMap); iter = delConditionList.iterator(); while (iter.hasNext()) { SurveyCondition condition = (SurveyCondition) iter.next(); iter.remove(); service.deleteCondition(condition); - } + } + // finally persist surveyPO again + service.saveOrUpdateSurvey(surveyPO); + // initialize attachmentList again attachmentList = getAttachmentList(sessionMap); attachmentList.addAll(survey.getAttachments());