*** ./tool/src/java/org/sakaiproject/tool/assessment/facade/AssessmentGradingFacadeQueries.java Sun Oct 9 19:52:25 2005 --- /Users/hedrick/AssessmentGradingFacadeQueries.java Sun Oct 9 23:39:28 2005 *************** *** 471,476 **** --- 506,543 ---- return answer.getScore().floatValue(); } + public boolean checkAnswer(String correct, String user) + { + // System.out.println("correct: " + correct + " user: " + user); + if (correct.startsWith("%F%")) { + //System.out.println("correct prefix"); + String []numbers = correct.substring(3).split(","); + if (numbers.length == 2) { + // System.out.println("correct length"); + try { + double center = Double.parseDouble(numbers[0]); + double tolerance = Double.parseDouble(numbers[1]); + // System.out.println("got 2 numbers"); + try { + double answer = Double.parseDouble(user); + // System.out.println("got answer" + answer + ":" + center + ":" + tolerance); + if (answer >= (center - tolerance) && + answer <= (center + tolerance)) + return true; + else + return false; + } catch (Exception e) { + // bad format for user input, fail + return false; + } + } catch (Exception e) { + // bad format for answer, treat it as text + } + } + } + return correct.equalsIgnoreCase(user); + } + public float getFIBScore(ItemGradingIfc data) { String answertext = data.getPublishedAnswer().getText(); *************** *** 482,488 **** { String answer = st.nextToken().trim(); if (data.getAnswerText() != null && ! data.getAnswerText().trim().equalsIgnoreCase(answer)) totalScore += data.getPublishedAnswer().getScore().floatValue(); } } --- 549,555 ---- { String answer = st.nextToken().trim(); if (data.getAnswerText() != null && ! checkAnswer(answer, data.getAnswerText().trim())) totalScore += data.getPublishedAnswer().getScore().floatValue(); } } *** ./tool/src/java/org/sakaiproject/tool/assessment/ui/listener/delivery/DeliveryActionListener.java Sun Oct 9 19:52:28 2005 --- /Users/hedrick/DeliveryActionListener.java Sun Oct 9 23:38:48 2005 *************** *** 1293,1298 **** --- 1293,1331 ---- bean.setAnswers(newAnswers); // Change the answers to just text } + public boolean checkFIBAnswer(String correct, String user) + { + // System.out.println("deliveryactioncorrect: " + correct + " user: " + user); + if (correct.startsWith("%F%")) { + // System.out.println("correct prefix"); + String []numbers = correct.substring(3).split(","); + if (numbers.length == 2) { + // System.out.println("correct length"); + try { + double center = Double.parseDouble(numbers[0]); + double tolerance = Double.parseDouble(numbers[1]); + // System.out.println("got 2 numbers"); + try { + double answer = Double.parseDouble(user); + // System.out.println("got answer" + answer + ":" + center + ":" + tolerance); + if (answer >= (center - tolerance) && + answer <= (center + tolerance)) + return true; + else + return false; + } catch (Exception e) { + // bad format for user input, fail + return false; + } + } catch (Exception e) { + // bad format for answer, treat it as text + } + } + } + return correct.equalsIgnoreCase(user); + } + + public void populateFib(ItemDataIfc item, ItemContentsBean bean) { // Only one text in FIB *************** *** 1336,1342 **** { String nextT = st2.nextToken(); if (data.getAnswerText() != null && ! data.getAnswerText().equalsIgnoreCase(nextT)) { fbean.setIsCorrect(true); } --- 1369,1375 ---- { String nextT = st2.nextToken(); if (data.getAnswerText() != null && ! checkFIBAnswer(nextT, data.getAnswerText().trim())) { fbean.setIsCorrect(true); }