Search in sources :

Example 11 with TemplateDeclaration

use of uk.ac.ed.ph.jqtiplus.node.item.template.declaration.TemplateDeclaration in project OpenOLAT by OpenOLAT.

the class AssessmentRenderFunctions method isTemplateDeclarationAMathVariable.

public static final boolean isTemplateDeclarationAMathVariable(AssessmentItem assessmentItem, String identifierString) {
    Identifier identifier = Identifier.assumedLegal(identifierString);
    TemplateDeclaration templateDeclaration = assessmentItem.getTemplateDeclaration(identifier);
    return templateDeclaration == null ? false : templateDeclaration.getMathVariable();
}
Also used : Identifier(uk.ac.ed.ph.jqtiplus.types.Identifier) TemplateDeclaration(uk.ac.ed.ph.jqtiplus.node.item.template.declaration.TemplateDeclaration)

Example 12 with TemplateDeclaration

use of uk.ac.ed.ph.jqtiplus.node.item.template.declaration.TemplateDeclaration in project OpenOLAT by OpenOLAT.

the class AssessmentItemChecker method checkSetCorrectResponse.

/**
 * responseDeclaration -> float
 *
 * templateVraiable -> integer
 *
 * setCorrectResponse
 *   -> variable -> integer doesn't match float -> issue
 * @param item
 * @return
 */
private static boolean checkSetCorrectResponse(AssessmentItem item) {
    boolean allOk = true;
    List<SetCorrectResponse> setCorrectResponses = QueryUtils.search(SetCorrectResponse.class, item);
    for (SetCorrectResponse setCorrectResponse : setCorrectResponses) {
        Identifier responseIdentifier = setCorrectResponse.getIdentifier();
        ResponseDeclaration responseDeclaration = item.getResponseDeclaration(responseIdentifier);
        BaseType baseType = responseDeclaration.getBaseType();
        Expression expression = setCorrectResponse.getExpression();
        if (expression instanceof Variable) {
            Variable variable = (Variable) expression;
            ComplexReferenceIdentifier cpxVariableIdentifier = variable.getIdentifier();
            Identifier variableIdentifier = Identifier.assumedLegal(cpxVariableIdentifier.toString());
            TemplateDeclaration templateDeclaration = item.getTemplateDeclaration(variableIdentifier);
            if (templateDeclaration != null && !templateDeclaration.hasBaseType(baseType)) {
                templateDeclaration.setBaseType(baseType);
                allOk &= false;
            }
        }
    }
    return allOk;
}
Also used : ComplexReferenceIdentifier(uk.ac.ed.ph.jqtiplus.types.ComplexReferenceIdentifier) SetCorrectResponse(uk.ac.ed.ph.jqtiplus.node.item.template.processing.SetCorrectResponse) Identifier(uk.ac.ed.ph.jqtiplus.types.Identifier) ComplexReferenceIdentifier(uk.ac.ed.ph.jqtiplus.types.ComplexReferenceIdentifier) Variable(uk.ac.ed.ph.jqtiplus.node.expression.general.Variable) BaseType(uk.ac.ed.ph.jqtiplus.value.BaseType) Expression(uk.ac.ed.ph.jqtiplus.node.expression.Expression) TemplateDeclaration(uk.ac.ed.ph.jqtiplus.node.item.template.declaration.TemplateDeclaration) ResponseDeclaration(uk.ac.ed.ph.jqtiplus.node.item.response.declaration.ResponseDeclaration)

Example 13 with TemplateDeclaration

use of uk.ac.ed.ph.jqtiplus.node.item.template.declaration.TemplateDeclaration in project openolat by klemens.

the class AssessmentItemCheckerTest method checkAndCorrect_notTemplateDeclaration.

@Test
public void checkAndCorrect_notTemplateDeclaration() throws URISyntaxException {
    URL itemUrl = OnyxToAssessmentItemBuilderTest.class.getResource("resources/ims/template_image.xml");
    AssessmentItem assessmentItem = loadAssessmentItem(itemUrl);
    boolean ok = AssessmentItemChecker.checkAndCorrect(assessmentItem);
    Assert.assertTrue(ok);
    TemplateDeclaration templateDeclaration = assessmentItem.getTemplateDeclaration(Identifier.assumedLegal("SOLUTION1"));
    Assert.assertNull(templateDeclaration);
}
Also used : ResolvedAssessmentItem(uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentItem) AssessmentItem(uk.ac.ed.ph.jqtiplus.node.item.AssessmentItem) TemplateDeclaration(uk.ac.ed.ph.jqtiplus.node.item.template.declaration.TemplateDeclaration) URL(java.net.URL) Test(org.junit.Test)

Example 14 with TemplateDeclaration

use of uk.ac.ed.ph.jqtiplus.node.item.template.declaration.TemplateDeclaration in project openolat by klemens.

the class AssessmentRenderFunctions method isTemplateDeclarationAMathVariable.

public static final boolean isTemplateDeclarationAMathVariable(AssessmentItem assessmentItem, String identifierString) {
    Identifier identifier = Identifier.assumedLegal(identifierString);
    TemplateDeclaration templateDeclaration = assessmentItem.getTemplateDeclaration(identifier);
    return templateDeclaration == null ? false : templateDeclaration.getMathVariable();
}
Also used : Identifier(uk.ac.ed.ph.jqtiplus.types.Identifier) TemplateDeclaration(uk.ac.ed.ph.jqtiplus.node.item.template.declaration.TemplateDeclaration)

Example 15 with TemplateDeclaration

use of uk.ac.ed.ph.jqtiplus.node.item.template.declaration.TemplateDeclaration in project openolat by klemens.

the class AssessmentTestComponentRenderer method renderPrintedVariable.

@Override
protected void renderPrintedVariable(AssessmentRenderer renderer, StringOutput sb, AssessmentObjectComponent component, ResolvedAssessmentItem resolvedAssessmentItem, ItemSessionState itemSessionState, PrintedVariable printedVar) {
    AssessmentTestComponent testCmp = (AssessmentTestComponent) component;
    Identifier identifier = printedVar.getIdentifier();
    sb.append("<span class='printedVariable'>");
    if (itemSessionState == null) {
        Value outcomeValue = testCmp.getTestSessionController().getTestSessionState().getOutcomeValue(identifier);
        if (outcomeValue != null) {
            OutcomeDeclaration outcomeDeclaration = testCmp.getAssessmentTest().getOutcomeDeclaration(identifier);
            renderPrintedVariable(renderer, sb, printedVar, outcomeDeclaration, outcomeValue);
        }
    } else {
        Value templateValue = itemSessionState.getTemplateValues().get(identifier);
        Value outcomeValue = itemSessionState.getOutcomeValues().get(identifier);
        if (outcomeValue != null) {
            OutcomeDeclaration outcomeDeclaration = resolvedAssessmentItem.getRootNodeLookup().extractIfSuccessful().getOutcomeDeclaration(identifier);
            renderPrintedVariable(renderer, sb, printedVar, outcomeDeclaration, outcomeValue);
        } else if (templateValue != null) {
            TemplateDeclaration templateDeclaration = resolvedAssessmentItem.getRootNodeLookup().extractIfSuccessful().getTemplateDeclaration(identifier);
            renderPrintedVariable(renderer, sb, printedVar, templateDeclaration, templateValue);
        } else {
            sb.append("(variable ").append(identifier.toString()).append(" was not found)");
        }
    }
    sb.append("</span>");
}
Also used : Identifier(uk.ac.ed.ph.jqtiplus.types.Identifier) FloatValue(uk.ac.ed.ph.jqtiplus.value.FloatValue) Value(uk.ac.ed.ph.jqtiplus.value.Value) TemplateDeclaration(uk.ac.ed.ph.jqtiplus.node.item.template.declaration.TemplateDeclaration) OutcomeDeclaration(uk.ac.ed.ph.jqtiplus.node.outcome.declaration.OutcomeDeclaration)

Aggregations

TemplateDeclaration (uk.ac.ed.ph.jqtiplus.node.item.template.declaration.TemplateDeclaration)16 URL (java.net.URL)8 Test (org.junit.Test)8 AssessmentItem (uk.ac.ed.ph.jqtiplus.node.item.AssessmentItem)8 ResolvedAssessmentItem (uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentItem)8 Identifier (uk.ac.ed.ph.jqtiplus.types.Identifier)8 OutcomeDeclaration (uk.ac.ed.ph.jqtiplus.node.outcome.declaration.OutcomeDeclaration)4 Value (uk.ac.ed.ph.jqtiplus.value.Value)4 Expression (uk.ac.ed.ph.jqtiplus.node.expression.Expression)2 Variable (uk.ac.ed.ph.jqtiplus.node.expression.general.Variable)2 ResponseDeclaration (uk.ac.ed.ph.jqtiplus.node.item.response.declaration.ResponseDeclaration)2 SetCorrectResponse (uk.ac.ed.ph.jqtiplus.node.item.template.processing.SetCorrectResponse)2 ComplexReferenceIdentifier (uk.ac.ed.ph.jqtiplus.types.ComplexReferenceIdentifier)2 BaseType (uk.ac.ed.ph.jqtiplus.value.BaseType)2 FloatValue (uk.ac.ed.ph.jqtiplus.value.FloatValue)2