Search in sources :

Example 61 with Value

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

the class AssessmentTestDisplayController method processOutcomeVariables.

private void processOutcomeVariables(TestResult resultNode, TestPlanInfos testPlanInfos, boolean submit) {
    Float score = null;
    Boolean pass = null;
    double completion = testPlanInfos.getCompletion();
    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 NumberValue) {
                    score = (float) ((NumberValue) value).doubleValue();
                }
            } else if (QTI21Constants.PASS_IDENTIFIER.equals(identifier)) {
                Value value = itemVariable.getComputedValue();
                if (value instanceof BooleanValue) {
                    pass = ((BooleanValue) value).booleanValue();
                }
            }
        }
    }
    if (submit) {
        outcomesListener.submit(score, pass, completion, candidateSession.getKey());
    } else if (candidateSession != null && candidateSession.getFinishTime() == null) {
        // don't change the outcome if the test is finished
        outcomesListener.updateOutcomes(score, pass, completion);
    }
}
Also used : Identifier(uk.ac.ed.ph.jqtiplus.types.Identifier) NumberValue(uk.ac.ed.ph.jqtiplus.value.NumberValue) 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) OutcomeVariable(uk.ac.ed.ph.jqtiplus.node.result.OutcomeVariable)

Example 62 with Value

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

the class AssessmentRenderFunctions method isVisible.

// <xsl:sequence select="boolean($element[$overrideTemplate
// or not(@templateIdentifier)
// or (qw:value-contains(qw:get-template-value(@templateIdentifier), @identifier) and not(@showHide='hide'))])"/>
public static boolean isVisible(Choice choice, ItemSessionState iSessionState) {
    if (choice.getTemplateIdentifier() == null)
        return true;
    Value templateValue = iSessionState.getTemplateValue(choice.getTemplateIdentifier());
    boolean visible = templateValue instanceof IdentifierValue && ((IdentifierValue) templateValue).identifierValue().equals(choice.getIdentifier()) && choice.getVisibilityMode() != VisibilityMode.HIDE_IF_MATCH;
    return visible;
}
Also used : DurationValue(uk.ac.ed.ph.jqtiplus.value.DurationValue) IdentifierValue(uk.ac.ed.ph.jqtiplus.value.IdentifierValue) FloatValue(uk.ac.ed.ph.jqtiplus.value.FloatValue) ListValue(uk.ac.ed.ph.jqtiplus.value.ListValue) MultipleValue(uk.ac.ed.ph.jqtiplus.value.MultipleValue) Value(uk.ac.ed.ph.jqtiplus.value.Value) IntegerValue(uk.ac.ed.ph.jqtiplus.value.IntegerValue) RecordValue(uk.ac.ed.ph.jqtiplus.value.RecordValue) OrderedValue(uk.ac.ed.ph.jqtiplus.value.OrderedValue) BooleanValue(uk.ac.ed.ph.jqtiplus.value.BooleanValue) SingleValue(uk.ac.ed.ph.jqtiplus.value.SingleValue) StringValue(uk.ac.ed.ph.jqtiplus.value.StringValue) NullValue(uk.ac.ed.ph.jqtiplus.value.NullValue) FileValue(uk.ac.ed.ph.jqtiplus.value.FileValue) IdentifierValue(uk.ac.ed.ph.jqtiplus.value.IdentifierValue)

Example 63 with Value

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

the class AssessmentRenderFunctions method getResponseValueAsBase64.

public static String getResponseValueAsBase64(AssessmentItem assessmentItem, AssessmentTestSession candidateSession, ItemSessionState itemSessionState, Identifier identifier, boolean solutionMode) {
    Value val = getResponseValue(assessmentItem, itemSessionState, identifier, solutionMode);
    String encodedString = null;
    if (val instanceof FileValue) {
        FileValue fileValue = (FileValue) val;
        File myStore = CoreSpringFactory.getImpl(AssessmentTestSessionDAO.class).getSessionStorage(candidateSession);
        File submissionDir = new File(myStore, "submissions");
        File submittedFile = new File(submissionDir, fileValue.getFileName());
        try (InputStream inStream = new FileInputStream(submittedFile)) {
            byte[] binaryData = IOUtils.toByteArray(inStream);
            encodedString = new String(Base64.encodeBase64(binaryData), "UTF8");
        } catch (Exception e) {
            log.error("", e);
        }
    }
    return encodedString;
}
Also used : FileValue(uk.ac.ed.ph.jqtiplus.value.FileValue) AssessmentTestSessionDAO(org.olat.ims.qti21.manager.AssessmentTestSessionDAO) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) DurationValue(uk.ac.ed.ph.jqtiplus.value.DurationValue) IdentifierValue(uk.ac.ed.ph.jqtiplus.value.IdentifierValue) FloatValue(uk.ac.ed.ph.jqtiplus.value.FloatValue) ListValue(uk.ac.ed.ph.jqtiplus.value.ListValue) MultipleValue(uk.ac.ed.ph.jqtiplus.value.MultipleValue) Value(uk.ac.ed.ph.jqtiplus.value.Value) IntegerValue(uk.ac.ed.ph.jqtiplus.value.IntegerValue) RecordValue(uk.ac.ed.ph.jqtiplus.value.RecordValue) OrderedValue(uk.ac.ed.ph.jqtiplus.value.OrderedValue) BooleanValue(uk.ac.ed.ph.jqtiplus.value.BooleanValue) SingleValue(uk.ac.ed.ph.jqtiplus.value.SingleValue) StringValue(uk.ac.ed.ph.jqtiplus.value.StringValue) NullValue(uk.ac.ed.ph.jqtiplus.value.NullValue) FileValue(uk.ac.ed.ph.jqtiplus.value.FileValue) File(java.io.File) FileInputStream(java.io.FileInputStream)

Example 64 with Value

use of uk.ac.ed.ph.jqtiplus.value.Value 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)

Example 65 with Value

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

the class AssessmentTestComponentRenderer method renderMaxScoreItem.

protected void renderMaxScoreItem(StringOutput sb, AssessmentTestComponent component, ItemSessionState itemSessionState, Translator translator) {
    if (component.isMaxScoreAssessmentItem()) {
        Value val = itemSessionState.getOutcomeValue(QTI21Constants.MAXSCORE_IDENTIFIER);
        if (val != null && val instanceof FloatValue) {
            double dVal = ((FloatValue) val).doubleValue();
            if (dVal > 0.0d) {
                String sVal;
                if (dVal < 2.0) {
                    sVal = translator.translate("assessment.item.point", new String[] { AssessmentHelper.getRoundedScore(dVal) });
                } else {
                    sVal = translator.translate("assessment.item.points", new String[] { AssessmentHelper.getRoundedScore(dVal) });
                }
                sb.append("<span class='o_qti_item_max_score'>").append(sVal).append("</span>");
            }
        }
    }
}
Also used : FloatValue(uk.ac.ed.ph.jqtiplus.value.FloatValue) Value(uk.ac.ed.ph.jqtiplus.value.Value) FloatValue(uk.ac.ed.ph.jqtiplus.value.FloatValue) AssessmentRenderFunctions.contentAsString(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.contentAsString)

Aggregations

Value (uk.ac.ed.ph.jqtiplus.value.Value)70 IdentifierValue (uk.ac.ed.ph.jqtiplus.value.IdentifierValue)46 Identifier (uk.ac.ed.ph.jqtiplus.types.Identifier)34 IntegerValue (uk.ac.ed.ph.jqtiplus.value.IntegerValue)32 SingleValue (uk.ac.ed.ph.jqtiplus.value.SingleValue)32 FloatValue (uk.ac.ed.ph.jqtiplus.value.FloatValue)30 MultipleValue (uk.ac.ed.ph.jqtiplus.value.MultipleValue)28 OrderedValue (uk.ac.ed.ph.jqtiplus.value.OrderedValue)24 NullValue (uk.ac.ed.ph.jqtiplus.value.NullValue)18 ResponseDeclaration (uk.ac.ed.ph.jqtiplus.node.item.response.declaration.ResponseDeclaration)16 FieldValue (uk.ac.ed.ph.jqtiplus.node.shared.FieldValue)16 BooleanValue (uk.ac.ed.ph.jqtiplus.value.BooleanValue)16 CorrectResponse (uk.ac.ed.ph.jqtiplus.node.item.CorrectResponse)14 ArrayList (java.util.ArrayList)12 DirectedPairValue (uk.ac.ed.ph.jqtiplus.value.DirectedPairValue)12 Test (org.junit.Test)11 RecordValue (uk.ac.ed.ph.jqtiplus.value.RecordValue)10 File (java.io.File)8 IOException (java.io.IOException)8 AssessmentRenderFunctions.contentAsString (org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.contentAsString)8