Index: samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/delivery/DeliveryActionListener.java =================================================================== --- samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/delivery/DeliveryActionListener.java (revision 104330) +++ samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/delivery/DeliveryActionListener.java (working copy) @@ -91,6 +91,7 @@ import org.sakaiproject.tool.assessment.util.FormatException; import org.sakaiproject.util.FormattedText; import org.sakaiproject.util.ResourceLoader; +import org.sakaiproject.tool.assessment.util.TextFormat; /** *

Title: Samigo

@@ -1623,6 +1624,23 @@ bean.setAnswers(newAnswers); // Change the answers to just text } + public boolean checkFIBmatching(String answer, String studentAnswer, String casesensitive){ + boolean matchresult = false; + GradingService gradingService = new GradingService(); + + String correctAnswer = TextFormat.convertPlaintextToFormattedTextNoHighUnicode(log, answer); + if ("true".equalsIgnoreCase(casesensitive)) { + if (studentAnswer != null) + matchresult = gradingService.fibmatch(correctAnswer, studentAnswer, true); + } // if case sensitive + else { + // case insensitive , if casesensitive is false, or null, or "". + if (studentAnswer != null) + matchresult = gradingService.fibmatch(correctAnswer, studentAnswer, false); + } // else , case insensitive + + return matchresult; + } public void populateFib(ItemDataIfc item, ItemContentsBean bean) { // Only one text in FIB @@ -1630,6 +1648,7 @@ ArrayList fibs = new ArrayList(); String alltext = text.getText(); ArrayList texts = extractFIBFINTextArray(alltext); + String casesensitive = item.getItemMetaDataByLabel(ItemMetaDataIfc.CASE_SENSITIVE_FOR_FIB); int i = 0; Iterator iter = text.getAnswerArraySorted().iterator(); while (iter.hasNext()) @@ -1675,11 +1694,13 @@ if (data.getAnswerText() != null && data.getAnswerText().equalsIgnoreCase(nextT)) */ - if (data.getAutoScore() != null && - data.getAutoScore().floatValue() > 0.0) - { - fbean.setIsCorrect(true); - } + boolean matchresult = checkFIBmatching(nextT, data.getAnswerText(), casesensitive); + if(matchresult){ + fbean.setIsCorrect(true); + break; + } + else + fbean.setIsCorrect(false); // need to check if case sensitive, mutual exclusive. } }