/** * Parses the given Identifier String, making sure it follows the required syntax. * <p> * Use this factory method for user-supplied identifiers. * * @throws QtiParseException if value is not a valid identifier */ public static ComplexReferenceIdentifier parseString(final String value) { verifyIdentifier(value); return new ComplexReferenceIdentifier(value); }
@Override public ComplexReferenceIdentifier parseDomAttributeValue(final String domAttributeValue) { return ComplexReferenceIdentifier.parseString(domAttributeValue); }
@Override public String toDomAttributeValue(final ComplexReferenceIdentifier value) { return value.toString(); } }
@Override public final VariableDeclaration isValidLocalVariableReference(final ComplexReferenceIdentifier variableReferenceIdentifier) { if (variableReferenceIdentifier.isDotted()) { return null; } return isValidLocalVariableReference(Identifier.assumedLegal(variableReferenceIdentifier.toString())); }
/** * Creates an {@link ComplexReferenceIdentifier} from the given String, without checking its syntax. * This should ONLY be used for identifiers that are known to be valid, such as the ones * defined in the QTI specification. */ public static ComplexReferenceIdentifier assumedLegal(final String value) { return new ComplexReferenceIdentifier(value); }
public QtiInvalidLookupException(final Identifier identifier) { this(ComplexReferenceIdentifier.assumedLegal(identifier.toString())); }
@Override public final VariableDeclaration checkLocalVariableReference(final QtiNode owner, final ComplexReferenceIdentifier variableReferenceIdentifier) { if (variableReferenceIdentifier.isDotted()) { fireValidationWarning(owner, "Variable references containing period (.) characters cannot be used here"); return null; } return checkLocalVariableReference(owner, Identifier.assumedLegal(variableReferenceIdentifier.toString())); }
@Override protected final Value evaluateValidSelf(final ProcessingContext context, final Value[] childValues, final int depth) { logger.debug("{}Evaluation of expression {} on variable {} started.", new Object[] { formatIndent(depth), getQtiClassName(), getIdentifier() }); final ComplexReferenceIdentifier referenceIdentifier = getIdentifier(); Value result; if (context.isSubjectItem()) { /* Variable reference within item */ final ItemProcessingContext itemProcessingContext = (ItemProcessingContext) context; result = evaluateInThisItem(itemProcessingContext, Identifier.assumedLegal(referenceIdentifier.toString())); } else { /* Variable reference in test */ final TestProcessingContext testProcessingContext = (TestProcessingContext) context; result = testProcessingContext.dereferenceVariable(this, referenceIdentifier, this); } return result; }
final String[] components = variableReferenceIdentifier.toString().split("\\."); if (components.length==1) {