Search in sources :

Example 21 with Expression

use of uk.ac.ed.ph.jqtiplus.node.expression.Expression in project openolat by klemens.

the class TestFeedbackBuilder method findFeedbackRuleInExpression.

private boolean findFeedbackRuleInExpression(Expression expression, Identifier feedbackIdentifier) {
    if (expression instanceof BaseValue) {
        BaseValue bValue = (BaseValue) expression;
        SingleValue sValue = bValue.getSingleValue();
        if (sValue instanceof IdentifierValue) {
            IdentifierValue iValue = (IdentifierValue) sValue;
            if (feedbackIdentifier.equals(iValue.identifierValue())) {
                return true;
            }
        }
    } else {
        List<Expression> childExpressions = expression.getExpressions();
        for (Expression childExpression : childExpressions) {
            if (findFeedbackRuleInExpression(childExpression, feedbackIdentifier)) {
                return true;
            }
        }
    }
    return false;
}
Also used : SingleValue(uk.ac.ed.ph.jqtiplus.value.SingleValue) Expression(uk.ac.ed.ph.jqtiplus.node.expression.Expression) BaseValue(uk.ac.ed.ph.jqtiplus.node.expression.general.BaseValue) IdentifierValue(uk.ac.ed.ph.jqtiplus.value.IdentifierValue)

Example 22 with Expression

use of uk.ac.ed.ph.jqtiplus.node.expression.Expression in project openolat by klemens.

the class TestFeedbackBuilder method findFeedbackMatch.

private boolean findFeedbackMatch(OutcomeRule outcomeRule, boolean pass, ComplexReferenceIdentifier id) {
    if (outcomeRule instanceof OutcomeCondition) {
        OutcomeCondition outcomeCondition = (OutcomeCondition) outcomeRule;
        OutcomeIf outcomeIf = outcomeCondition.getOutcomeIf();
        if (outcomeIf != null && outcomeIf.getExpressions().size() == 1) {
            Expression mustBeAnd = outcomeIf.getExpressions().get(0);
            if (mustBeAnd instanceof And && mustBeAnd.getExpressions().size() == 1) {
                Expression mustBeMatch = mustBeAnd.getExpressions().get(0);
                if (mustBeMatch instanceof Match && mustBeMatch.getExpressions().size() == 2) {
                    return findFeedbackMatch((Match) mustBeMatch, pass, id);
                }
            }
        }
    }
    return false;
}
Also used : Expression(uk.ac.ed.ph.jqtiplus.node.expression.Expression) OutcomeIf(uk.ac.ed.ph.jqtiplus.node.test.outcome.processing.OutcomeIf) And(uk.ac.ed.ph.jqtiplus.node.expression.operator.And) OutcomeCondition(uk.ac.ed.ph.jqtiplus.node.test.outcome.processing.OutcomeCondition) Match(uk.ac.ed.ph.jqtiplus.node.expression.operator.Match)

Aggregations

Expression (uk.ac.ed.ph.jqtiplus.node.expression.Expression)22 BaseValue (uk.ac.ed.ph.jqtiplus.node.expression.general.BaseValue)8 And (uk.ac.ed.ph.jqtiplus.node.expression.operator.And)8 ResponseIf (uk.ac.ed.ph.jqtiplus.node.item.response.processing.ResponseIf)8 ResponseCondition (uk.ac.ed.ph.jqtiplus.node.item.response.processing.ResponseCondition)6 SetOutcomeValue (uk.ac.ed.ph.jqtiplus.node.item.response.processing.SetOutcomeValue)6 ComplexReferenceIdentifier (uk.ac.ed.ph.jqtiplus.types.ComplexReferenceIdentifier)6 SingleValue (uk.ac.ed.ph.jqtiplus.value.SingleValue)6 AssessmentItemFactory.findBaseValueInExpression (org.olat.ims.qti21.model.xml.AssessmentItemFactory.findBaseValueInExpression)4 Variable (uk.ac.ed.ph.jqtiplus.node.expression.general.Variable)4 ResponseRule (uk.ac.ed.ph.jqtiplus.node.item.response.processing.ResponseRule)4 FloatValue (uk.ac.ed.ph.jqtiplus.value.FloatValue)4 IdentifierValue (uk.ac.ed.ph.jqtiplus.value.IdentifierValue)4 ArrayList (java.util.ArrayList)2 Correct (uk.ac.ed.ph.jqtiplus.node.expression.general.Correct)2 Equal (uk.ac.ed.ph.jqtiplus.node.expression.operator.Equal)2 Match (uk.ac.ed.ph.jqtiplus.node.expression.operator.Match)2 CorrectResponse (uk.ac.ed.ph.jqtiplus.node.item.CorrectResponse)2 ResponseDeclaration (uk.ac.ed.ph.jqtiplus.node.item.response.declaration.ResponseDeclaration)2 TemplateDeclaration (uk.ac.ed.ph.jqtiplus.node.item.template.declaration.TemplateDeclaration)2