Search in sources :

Example 6 with FloatValue

use of uk.ac.ed.ph.jqtiplus.value.FloatValue in project OpenOLAT by OpenOLAT.

the class AssessmentItemBuilder method extractMinScore.

private void extractMinScore() {
    OutcomeDeclaration outcomeDeclaration = assessmentItem.getOutcomeDeclaration(MINSCORE_IDENTIFIER);
    if (outcomeDeclaration != null) {
        DefaultValue defaultValue = outcomeDeclaration.getDefaultValue();
        if (defaultValue != null) {
            Value minScoreValue = defaultValue.evaluate();
            if (minScoreValue instanceof FloatValue) {
                Double minScore = new Double(((FloatValue) minScoreValue).doubleValue());
                minScoreBuilder = new ScoreBuilder(minScore, outcomeDeclaration);
            }
        }
    }
}
Also used : DefaultValue(uk.ac.ed.ph.jqtiplus.node.shared.declaration.DefaultValue) BaseValue(uk.ac.ed.ph.jqtiplus.node.expression.general.BaseValue) DefaultValue(uk.ac.ed.ph.jqtiplus.node.shared.declaration.DefaultValue) IdentifierValue(uk.ac.ed.ph.jqtiplus.value.IdentifierValue) FloatValue(uk.ac.ed.ph.jqtiplus.value.FloatValue) SetOutcomeValue(uk.ac.ed.ph.jqtiplus.node.item.response.processing.SetOutcomeValue) Value(uk.ac.ed.ph.jqtiplus.value.Value) FloatValue(uk.ac.ed.ph.jqtiplus.value.FloatValue) OutcomeDeclaration(uk.ac.ed.ph.jqtiplus.node.outcome.declaration.OutcomeDeclaration)

Example 7 with FloatValue

use of uk.ac.ed.ph.jqtiplus.value.FloatValue in project OpenOLAT by OpenOLAT.

the class AssessmentTestDisplayController method collectOutcomeVariablesForItemSession.

private void collectOutcomeVariablesForItemSession(ItemResult resultNode, AssessmentItemSession itemSession) {
    BigDecimal score = null;
    Boolean pass = null;
    for (final ItemVariable itemVariable : resultNode.getItemVariables()) {
        if (itemVariable instanceof OutcomeVariable) {
            OutcomeVariable outcomeVariable = (OutcomeVariable) itemVariable;
            Identifier identifier = outcomeVariable.getIdentifier();
            if (QTI21Constants.SCORE_IDENTIFIER.equals(identifier)) {
                Value value = itemVariable.getComputedValue();
                if (value instanceof FloatValue) {
                    score = new BigDecimal(((FloatValue) value).doubleValue());
                } else if (value instanceof IntegerValue) {
                    score = new BigDecimal(((IntegerValue) value).intValue());
                }
            } else if (QTI21Constants.PASS_IDENTIFIER.equals(identifier)) {
                Value value = itemVariable.getComputedValue();
                if (value instanceof BooleanValue) {
                    pass = ((BooleanValue) value).booleanValue();
                }
            }
        }
    }
    if (score != null) {
        itemSession.setScore(score);
    }
    if (pass != null) {
        itemSession.setPassed(pass);
    }
}
Also used : Identifier(uk.ac.ed.ph.jqtiplus.types.Identifier) IntegerValue(uk.ac.ed.ph.jqtiplus.value.IntegerValue) BooleanValue(uk.ac.ed.ph.jqtiplus.value.BooleanValue) Value(uk.ac.ed.ph.jqtiplus.value.Value) NumberValue(uk.ac.ed.ph.jqtiplus.value.NumberValue) FloatValue(uk.ac.ed.ph.jqtiplus.value.FloatValue) IntegerValue(uk.ac.ed.ph.jqtiplus.value.IntegerValue) BooleanValue(uk.ac.ed.ph.jqtiplus.value.BooleanValue) ItemVariable(uk.ac.ed.ph.jqtiplus.node.result.ItemVariable) FloatValue(uk.ac.ed.ph.jqtiplus.value.FloatValue) OutcomeVariable(uk.ac.ed.ph.jqtiplus.node.result.OutcomeVariable) BigDecimal(java.math.BigDecimal)

Example 8 with FloatValue

use of uk.ac.ed.ph.jqtiplus.value.FloatValue in project openolat by klemens.

the class FIBAssessmentItemBuilder method buildMainScoreRuleAllCorrectAnswers.

private void buildMainScoreRuleAllCorrectAnswers(List<ResponseRule> responseRules) {
    /*
		<responseCondition>
			<responseIf>
				<and>
					<match>
						<value>-1.0</value>
						<correct identifier="RESPONSE_1" />
					</match>
					<equal toleranceMode="relative" tolerance="0.1 0.1" includeLowerBound="true" includeUpperBound="true">
						<correct identifier="RESPONSE_2" />
						<variable identifier="RESPONSE_2" />
					</equal>
				</and>
				<setOutcomeValue identifier="SCORE">
					<sum>
						<variable identifier="SCORE" />
						<variable identifier="MAXSCORE" />
					</sum>
				</setOutcomeValue>
				<setOutcomeValue identifier="FEEDBACKBASIC">
					<baseValue baseType="identifier">
						incorrect
					</baseValue>
				</setOutcomeValue>
			</responseIf>
		</responseCondition>
		*/
    // add condition
    ResponseCondition rule = new ResponseCondition(assessmentItem.getResponseProcessing());
    responseRules.add(0, rule);
    {
        // match all
        ResponseIf responseElseIf = new ResponseIf(rule);
        rule.setResponseIf(responseElseIf);
        // rule.getResponseElseIfs().add(responseElseIf);
        And and = new And(responseElseIf);
        responseElseIf.setExpression(and);
        for (Map.Entry<String, AbstractEntry> textEntryEntry : responseIdentifierToTextEntry.entrySet()) {
            AbstractEntry abstractEntry = textEntryEntry.getValue();
            if (abstractEntry instanceof TextEntry) {
                Match match = new Match(and);
                and.getExpressions().add(match);
                TextEntry textEntry = (TextEntry) abstractEntry;
                BaseValue variable = new BaseValue(match);
                variable.setBaseTypeAttrValue(BaseType.FLOAT);
                variable.setSingleValue(new FloatValue(-1.0d));
                match.getExpressions().add(variable);
                MapResponse correct = new MapResponse(match);
                correct.setIdentifier(textEntry.getResponseIdentifier());
                match.getExpressions().add(correct);
            } else if (abstractEntry instanceof NumericalEntry) {
                NumericalEntry numericalEntry = (NumericalEntry) abstractEntry;
                Equal equal = new Equal(and);
                equal.setToleranceMode(numericalEntry.getToleranceMode());
                if (numericalEntry.getLowerTolerance() != null && numericalEntry.getUpperTolerance() != null) {
                    List<FloatOrVariableRef> tolerances = new ArrayList<>();
                    tolerances.add(new FloatOrVariableRef(numericalEntry.getLowerTolerance().doubleValue()));
                    tolerances.add(new FloatOrVariableRef(numericalEntry.getUpperTolerance().doubleValue()));
                    equal.setTolerances(tolerances);
                }
                equal.setIncludeLowerBound(Boolean.TRUE);
                equal.setIncludeUpperBound(Boolean.TRUE);
                and.getExpressions().add(equal);
                ComplexReferenceIdentifier responseIdentifier = ComplexReferenceIdentifier.assumedLegal(numericalEntry.getResponseIdentifier().toString());
                Correct correct = new Correct(equal);
                correct.setIdentifier(responseIdentifier);
                equal.getExpressions().add(correct);
                Variable variable = new Variable(equal);
                variable.setIdentifier(responseIdentifier);
                equal.getExpressions().add(variable);
            }
        }
        {
            // outcome max score -> score
            SetOutcomeValue scoreOutcomeValue = new SetOutcomeValue(responseElseIf);
            scoreOutcomeValue.setIdentifier(QTI21Constants.SCORE_IDENTIFIER);
            responseElseIf.getResponseRules().add(scoreOutcomeValue);
            Sum sum = new Sum(scoreOutcomeValue);
            scoreOutcomeValue.getExpressions().add(sum);
            Variable scoreVar = new Variable(sum);
            scoreVar.setIdentifier(QTI21Constants.SCORE_CLX_IDENTIFIER);
            sum.getExpressions().add(scoreVar);
            Variable maxScoreVar = new Variable(sum);
            maxScoreVar.setIdentifier(QTI21Constants.MAXSCORE_CLX_IDENTIFIER);
            sum.getExpressions().add(maxScoreVar);
        }
        {
            // outcome feedback
            SetOutcomeValue correctOutcomeValue = new SetOutcomeValue(responseElseIf);
            correctOutcomeValue.setIdentifier(QTI21Constants.FEEDBACKBASIC_IDENTIFIER);
            responseElseIf.getResponseRules().add(correctOutcomeValue);
            BaseValue correctValue = new BaseValue(correctOutcomeValue);
            correctValue.setBaseTypeAttrValue(BaseType.IDENTIFIER);
            correctValue.setSingleValue(QTI21Constants.CORRECT_IDENTIFIER_VALUE);
            correctOutcomeValue.setExpression(correctValue);
        }
    }
    {
        // else feedback incorrect
        ResponseElse responseElse = new ResponseElse(rule);
        rule.setResponseElse(responseElse);
        {
            // outcome feedback
            SetOutcomeValue correctOutcomeValue = new SetOutcomeValue(responseElse);
            correctOutcomeValue.setIdentifier(QTI21Constants.FEEDBACKBASIC_IDENTIFIER);
            responseElse.getResponseRules().add(correctOutcomeValue);
            BaseValue correctValue = new BaseValue(correctOutcomeValue);
            correctValue.setBaseTypeAttrValue(BaseType.IDENTIFIER);
            correctValue.setSingleValue(QTI21Constants.INCORRECT_IDENTIFIER_VALUE);
            correctOutcomeValue.setExpression(correctValue);
        }
    }
}
Also used : MapResponse(uk.ac.ed.ph.jqtiplus.node.expression.general.MapResponse) Variable(uk.ac.ed.ph.jqtiplus.node.expression.general.Variable) SetOutcomeValue(uk.ac.ed.ph.jqtiplus.node.item.response.processing.SetOutcomeValue) BaseValue(uk.ac.ed.ph.jqtiplus.node.expression.general.BaseValue) ArrayList(java.util.ArrayList) ResponseIf(uk.ac.ed.ph.jqtiplus.node.item.response.processing.ResponseIf) Sum(uk.ac.ed.ph.jqtiplus.node.expression.operator.Sum) Correct(uk.ac.ed.ph.jqtiplus.node.expression.general.Correct) Match(uk.ac.ed.ph.jqtiplus.node.expression.operator.Match) MapEntry(uk.ac.ed.ph.jqtiplus.node.item.response.declaration.MapEntry) ComplexReferenceIdentifier(uk.ac.ed.ph.jqtiplus.types.ComplexReferenceIdentifier) Equal(uk.ac.ed.ph.jqtiplus.node.expression.operator.Equal) And(uk.ac.ed.ph.jqtiplus.node.expression.operator.And) FloatOrVariableRef(uk.ac.ed.ph.jqtiplus.types.FloatOrVariableRef) ResponseElse(uk.ac.ed.ph.jqtiplus.node.item.response.processing.ResponseElse) FloatValue(uk.ac.ed.ph.jqtiplus.value.FloatValue) ResponseCondition(uk.ac.ed.ph.jqtiplus.node.item.response.processing.ResponseCondition)

Example 9 with FloatValue

use of uk.ac.ed.ph.jqtiplus.value.FloatValue in project openolat by klemens.

the class AssessmentTestFactory method updateDefaultValue.

public static void updateDefaultValue(OutcomeDeclaration outcomeDeclaration, Double defaultValue) {
    outcomeDeclaration.setBaseType(BaseType.FLOAT);
    DefaultValue defaultVal = outcomeDeclaration.getDefaultValue();
    defaultVal.getFieldValues().clear();
    FieldValue fieldValue = new FieldValue(defaultVal);
    FloatValue identifierValue = new FloatValue(defaultValue);
    fieldValue.setSingleValue(identifierValue);
    defaultVal.getFieldValues().add(fieldValue);
}
Also used : DefaultValue(uk.ac.ed.ph.jqtiplus.node.shared.declaration.DefaultValue) FieldValue(uk.ac.ed.ph.jqtiplus.node.shared.FieldValue) FloatValue(uk.ac.ed.ph.jqtiplus.value.FloatValue)

Example 10 with FloatValue

use of uk.ac.ed.ph.jqtiplus.value.FloatValue in project openolat by klemens.

the class AssessmentTestDisplayController method collectOutcomeVariablesForItemSession.

private void collectOutcomeVariablesForItemSession(ItemResult resultNode, AssessmentItemSession itemSession) {
    BigDecimal score = null;
    Boolean pass = null;
    for (final ItemVariable itemVariable : resultNode.getItemVariables()) {
        if (itemVariable instanceof OutcomeVariable) {
            OutcomeVariable outcomeVariable = (OutcomeVariable) itemVariable;
            Identifier identifier = outcomeVariable.getIdentifier();
            if (QTI21Constants.SCORE_IDENTIFIER.equals(identifier)) {
                Value value = itemVariable.getComputedValue();
                if (value instanceof FloatValue) {
                    score = new BigDecimal(((FloatValue) value).doubleValue());
                } else if (value instanceof IntegerValue) {
                    score = new BigDecimal(((IntegerValue) value).intValue());
                }
            } else if (QTI21Constants.PASS_IDENTIFIER.equals(identifier)) {
                Value value = itemVariable.getComputedValue();
                if (value instanceof BooleanValue) {
                    pass = ((BooleanValue) value).booleanValue();
                }
            }
        }
    }
    if (score != null) {
        itemSession.setScore(score);
    }
    if (pass != null) {
        itemSession.setPassed(pass);
    }
}
Also used : Identifier(uk.ac.ed.ph.jqtiplus.types.Identifier) IntegerValue(uk.ac.ed.ph.jqtiplus.value.IntegerValue) BooleanValue(uk.ac.ed.ph.jqtiplus.value.BooleanValue) Value(uk.ac.ed.ph.jqtiplus.value.Value) NumberValue(uk.ac.ed.ph.jqtiplus.value.NumberValue) FloatValue(uk.ac.ed.ph.jqtiplus.value.FloatValue) IntegerValue(uk.ac.ed.ph.jqtiplus.value.IntegerValue) BooleanValue(uk.ac.ed.ph.jqtiplus.value.BooleanValue) ItemVariable(uk.ac.ed.ph.jqtiplus.node.result.ItemVariable) FloatValue(uk.ac.ed.ph.jqtiplus.value.FloatValue) OutcomeVariable(uk.ac.ed.ph.jqtiplus.node.result.OutcomeVariable) BigDecimal(java.math.BigDecimal)

Aggregations

FloatValue (uk.ac.ed.ph.jqtiplus.value.FloatValue)36 BaseValue (uk.ac.ed.ph.jqtiplus.node.expression.general.BaseValue)16 OutcomeDeclaration (uk.ac.ed.ph.jqtiplus.node.outcome.declaration.OutcomeDeclaration)14 Value (uk.ac.ed.ph.jqtiplus.value.Value)14 FieldValue (uk.ac.ed.ph.jqtiplus.node.shared.FieldValue)12 DefaultValue (uk.ac.ed.ph.jqtiplus.node.shared.declaration.DefaultValue)12 SetOutcomeValue (uk.ac.ed.ph.jqtiplus.node.item.response.processing.SetOutcomeValue)10 IdentifierValue (uk.ac.ed.ph.jqtiplus.value.IdentifierValue)10 ArrayList (java.util.ArrayList)8 HashMap (java.util.HashMap)8 Map (java.util.Map)8 Identifier (uk.ac.ed.ph.jqtiplus.types.Identifier)8 File (java.io.File)6 FileOutputStream (java.io.FileOutputStream)6 IOException (java.io.IOException)6 URISyntaxException (java.net.URISyntaxException)6 Test (org.junit.Test)6 JqtiExtensionManager (uk.ac.ed.ph.jqtiplus.JqtiExtensionManager)6 Variable (uk.ac.ed.ph.jqtiplus.node.expression.general.Variable)6 Equal (uk.ac.ed.ph.jqtiplus.node.expression.operator.Equal)6