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 128452) +++ samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/delivery/DeliveryActionListener.java (working copy) @@ -1514,11 +1514,11 @@ } else if (item.getTypeId().equals(TypeIfc.FILL_IN_BLANK)) // fill in the blank { - populateFib(item, itemBean); + populateFib(item, itemBean, publishedAnswerHash); } else if (item.getTypeId().equals(TypeIfc.FILL_IN_NUMERIC)) //numeric response { - populateFin(item, itemBean); + populateFin(item, itemBean, publishedAnswerHash); } else if (item.getTypeId().equals(TypeIfc.ESSAY_QUESTION)) { @@ -1623,7 +1623,7 @@ bean.setAnswers(newAnswers); // Change the answers to just text } - public void populateFib(ItemDataIfc item, ItemContentsBean bean) + public void populateFib(ItemDataIfc item, ItemContentsBean bean, HashMap publishedAnswerHash) { // Only one text in FIB ItemTextIfc text = (ItemTextIfc) item.getItemTextArraySorted().toArray()[0]; @@ -1659,16 +1659,24 @@ { fbean.setItemGradingData(data); fbean.setResponse(FormattedText.convertFormattedTextToPlaintext(data.getAnswerText())); - fbean.setIsCorrect(false); if (answer.getText() == null) { answer.setText(""); } - if (data.getIsCorrect() != null && data.getIsCorrect().booleanValue()) - { - fbean.setIsCorrect(true); + if (data.getIsCorrect() == null) { + GradingService gs = new GradingService(); + HashMap> fibmap = new HashMap>(); + fbean.setIsCorrect(gs.getFIBResult(data, fibmap, item, publishedAnswerHash)); } + else { + if (data.getIsCorrect().booleanValue()) { + fbean.setIsCorrect(true); + } + else { + fbean.setIsCorrect(false); + } + } } } } @@ -1765,7 +1773,7 @@ } */ - public void populateFin(ItemDataIfc item, ItemContentsBean bean) + public void populateFin(ItemDataIfc item, ItemContentsBean bean, HashMap publishedAnswerHash) { // Only one text in FIN ItemTextIfc text = (ItemTextIfc) item.getItemTextArraySorted().toArray()[0]; @@ -1806,16 +1814,24 @@ fbean.setItemGradingData(data); fbean.setResponse(FormattedText.convertFormattedTextToPlaintext(data.getAnswerText())); - fbean.setIsCorrect(false); if (answer.getText() == null) { answer.setText(""); } - if (data.getIsCorrect() != null && data.getIsCorrect().booleanValue()) - { - fbean.setIsCorrect(true); + if (data.getIsCorrect() == null) { + GradingService gs = new GradingService(); + HashMap> fibmap = new HashMap>(); + fbean.setIsCorrect(gs.getFINResult(data, item, publishedAnswerHash)); } + else { + if (data.getIsCorrect().booleanValue()) { + fbean.setIsCorrect(true); + } + else { + fbean.setIsCorrect(false); + } + } } } } Index: samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/evaluation/QuestionScoreListener.java =================================================================== --- samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/evaluation/QuestionScoreListener.java (revision 128452) +++ samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/evaluation/QuestionScoreListener.java (working copy) @@ -27,6 +27,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.Map; +import java.util.Set; import javax.faces.event.AbortProcessingException; import javax.faces.event.ActionEvent; @@ -512,6 +513,7 @@ Iterator iter2 = answerList.iterator(); ArrayList itemGradingAttachmentList = new ArrayList(); + HashMap> fibmap = new HashMap>(); while (iter2.hasNext()) { ItemGradingData gdata = (ItemGradingData) iter2.next(); results.setItemGrading(gdata); @@ -658,20 +660,40 @@ //SAM-755-"checkmark" indicates right, add "X" to indicate wrong if (gdataAnswer != null) { + String checkmarkGif = ""; + String crossmarkGif = ""; + if (bean.getTypeId().equals("8") || bean.getTypeId().equals("11")) { - if (gdata.getIsCorrect() != null && gdata.getIsCorrect().booleanValue()) { - answerText = "" + answerText; - } - else { - answerText = "" + answerText; - } - } + if (gdata.getIsCorrect() == null) { + boolean result = false; + if (bean.getTypeId().equals("8")) { + result = delegate.getFIBResult(gdata, fibmap, item, publishedAnswerHash); + } + else { + result = delegate.getFINResult(gdata, item, publishedAnswerHash); + } + + if (result) { + answerText = checkmarkGif + answerText; + } else { + answerText = crossmarkGif + answerText; + } + } + else { + if (gdata.getIsCorrect().booleanValue()) { + answerText = checkmarkGif + answerText; + } + else { + answerText = crossmarkGif + answerText; + } + } + } else if(!bean.getTypeId().equals("3")){ if((gdataAnswer.getIsCorrect() != null && gdataAnswer.getIsCorrect()) || (gdataAnswer.getPartialCredit() != null && gdataAnswer.getPartialCredit() > 0)){ - answerText = "" + answerText; + answerText = checkmarkGif + answerText; }else if(gdataAnswer.getIsCorrect() != null && !gdataAnswer.getIsCorrect()){ - answerText = "" + answerText; + answerText = crossmarkGif + answerText; } } } Index: samigo-services/src/java/org/sakaiproject/tool/assessment/services/GradingService.java =================================================================== --- samigo-services/src/java/org/sakaiproject/tool/assessment/services/GradingService.java (revision 128441) +++ samigo-services/src/java/org/sakaiproject/tool/assessment/services/GradingService.java (working copy) @@ -1439,6 +1439,7 @@ public float getFINScore(ItemGradingIfc data, ItemDataIfc itemdata, HashMap publishedAnswerHash) throws FinFormatException { + data.setIsCorrect(Boolean.FALSE); float totalScore = (float) 0; boolean matchresult = getFINResult(data, itemdata, publishedAnswerHash); if (matchresult){ Index: samigo-hibernate/src/java/org/sakaiproject/tool/assessment/data/dao/grading/ItemGradingData.java =================================================================== --- samigo-hibernate/src/java/org/sakaiproject/tool/assessment/data/dao/grading/ItemGradingData.java (revision 128441) +++ samigo-hibernate/src/java/org/sakaiproject/tool/assessment/data/dao/grading/ItemGradingData.java (working copy) @@ -222,9 +222,6 @@ } public Boolean getIsCorrect() { - if (isCorrect == null) { - isCorrect = Boolean.FALSE; - } return isCorrect; }