Skip to content
Snippets Groups Projects
Commit 2f5dbe56 authored by srosse's avatar srosse
Browse files

OO-3978: recalculate the passed value with manual scoring and cut value

parent 4a8b05ed
No related branches found
No related tags found
No related merge requests found
......@@ -66,7 +66,7 @@ public interface QTI21StatisticsManager {
* @param resSubPath
* @return
*/
public StatisticAssessment getAssessmentStatistics(QTI21StatisticSearchParams searchParams);
public StatisticAssessment getAssessmentStatistics(QTI21StatisticSearchParams searchParams, Double cutValue);
public StatisticsItem getAssessmentItemStatistics(String itemRefIdent, double maxScore, QTI21StatisticSearchParams searchParams);
......
......@@ -166,7 +166,7 @@ public class QTI21StatisticsManagerImpl implements QTI21StatisticsManager {
}
@Override
public StatisticAssessment getAssessmentStatistics(QTI21StatisticSearchParams searchParams) {
public StatisticAssessment getAssessmentStatistics(QTI21StatisticSearchParams searchParams, Double cutValue) {
StringBuilder sb = new StringBuilder();
sb.append("select asession.score, asession.manualScore, asession.passed, asession.duration from qtiassessmenttestsession asession ");
decorateRSet(sb, searchParams, true);
......@@ -188,6 +188,8 @@ public class QTI21StatisticsManagerImpl implements QTI21StatisticsManager {
double minDuration = Double.MAX_VALUE;
double maxDuration = 0d;
BigDecimal cutBigValue = cutValue == null ? null : BigDecimal.valueOf(cutValue.doubleValue());
int dataPos = 0;
boolean hasScore = false;
for(Object[] rawData:rawDatas) {
......@@ -208,6 +210,9 @@ public class QTI21StatisticsManagerImpl implements QTI21StatisticsManager {
}
Boolean passed = (Boolean)rawData[pos++];
if(cutBigValue != null && score != null) {
passed = score.compareTo(cutBigValue) >= 0;
}
if(passed != null) {
if(passed.booleanValue()) {
numOfPassed++;
......
......@@ -46,6 +46,7 @@ import org.olat.ims.qti21.QTI21Service;
import org.olat.ims.qti21.QTI21StatisticsManager;
import org.olat.ims.qti21.model.QTI21QuestionType;
import org.olat.ims.qti21.model.QTI21StatisticSearchParams;
import org.olat.ims.qti21.model.xml.QtiNodesExtractor;
import org.olat.repository.RepositoryEntry;
import uk.ac.ed.ph.jqtiplus.node.item.AssessmentItem;
......@@ -136,11 +137,17 @@ public class QTI21StatisticResourceResult implements StatisticResourceResult {
public StatisticAssessment getQTIStatisticAssessment() {
if(statisticAssessment == null) {
statisticAssessment = qtiStatisticsManager.getAssessmentStatistics(searchParams);
Double cutValue = getCutValue();
statisticAssessment = qtiStatisticsManager.getAssessmentStatistics(searchParams, cutValue);
}
return statisticAssessment;
}
public Double getCutValue() {
AssessmentTest assessmentTest = resolvedAssessmentTest.getRootNodeLookup().extractIfSuccessful();
return QtiNodesExtractor.extractCutValue(assessmentTest);
}
public File getAssessmentItemFile(AssessmentItemRef itemRef) {
URI itemUri = resolvedAssessmentTest.getSystemIdByItemRefMap().get(itemRef);
return new File(itemUri);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment