Index: lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/model/SurveyCondition.java =================================================================== diff -u -rd52e38e168a77a2c8b0e58dfdde7d1e73fcfda31 -r2ca5d9e347702923ee70401c12e4bf0a684712b2 --- lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/model/SurveyCondition.java (.../SurveyCondition.java) (revision d52e38e168a77a2c8b0e58dfdde7d1e73fcfda31) +++ lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/model/SurveyCondition.java (.../SurveyCondition.java) (revision 2ca5d9e347702923ee70401c12e4bf0a684712b2) @@ -85,6 +85,17 @@ // the condition "knows" it's an array of strings, i.e. user's answers String[] answers = (String[]) value.getValue(); result = true; + + for (int i=0; i<=answers.length; i++) { + String textToMatch = answers[i]; + + result &= matches(textToMatch); + // if at least one answer does not satisfy the condition, there is no need to look further + if (!result) { + break; + } + } + /* for (SurveyQuestion question : questions) { String textToMatch = answers[question.getSequenceId() - 1]; @@ -93,7 +104,8 @@ if (!result) { break; } - } + }*/ + } else { throw new ToolOutputFormatException("Survey tool produced a non-complex tool output."); } Index: lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/service/SurveyOutputFactory.java =================================================================== diff -u -r4b2d7c8c460d31ff41a04475aad6a152d0b22424 -r2ca5d9e347702923ee70401c12e4bf0a684712b2 --- lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/service/SurveyOutputFactory.java (.../SurveyOutputFactory.java) (revision 4b2d7c8c460d31ff41a04475aad6a152d0b22424) +++ lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/service/SurveyOutputFactory.java (.../SurveyOutputFactory.java) (revision 2ca5d9e347702923ee70401c12e4bf0a684712b2) @@ -127,9 +127,11 @@ if (isTextSearchConditionName(name)) { // user answers are loaded from the DB and array of strings is created - Survey survey = surveyService.getSurveyBySessionId(toolSessionId); - Set questions = survey.getQuestions(); - String[] textAnswers = new String[questions.size()]; + //Survey survey = surveyService.getSurveyBySessionId(toolSessionId); + //Set questions = survey.getQuestions(); + //String[] textAnswers = new String[questions.size()]; + String[] textAnswers = null; + List answersList = new ArrayList(); SurveyUser user = surveyService.getUserByIDAndSession(learnerId, toolSessionId); List answerDTOs = surveyService.getQuestionAnswers(toolSessionId, user.getUid()); if (answerDTOs != null && !answerDTOs.isEmpty()) { @@ -138,10 +140,11 @@ if (surveyAnswer != null) { // check for optional questions SurveyQuestion question = surveyAnswer.getSurveyQuestion(); if (question.getType() == SurveyConstants.QUESTION_TYPE_TEXT_ENTRY) - textAnswers[question.getSequenceId() - 1] = surveyAnswer.getAnswerText(); + answersList.add(surveyAnswer.getAnswerText()); } } } + textAnswers = (String[]) answersList.toArray(new String [answersList.size()]); return new ToolOutput(name, getI18NText(SurveyConstants.TEXT_SEARCH_DEFINITION_NAME, true), textAnswers, false); }