@Override protected String itemToQtiString(final Identifier item) { return item.toString(); } }
public TestPlanNodeKey(final Identifier identifier, final int abstractPartGlobalIndex, final int instanceNumber) { this.identifier = identifier; this.abstractPartGlobalIndex = abstractPartGlobalIndex; this.instanceNumber = instanceNumber; this.stringRepresentation = identifier.toString() + ":" + abstractPartGlobalIndex + ":" + instanceNumber; }
@Override public String toQtiString() { return identifierValue.toString(); } }
@Override public String toDomAttributeValue(final Identifier value) { return value.toString(); }
/** * Creates a new floatOrVariableRef holding the given variable reference */ public FloatOrVariableRef(final Identifier variableReferenceIdentifier) { Assert.notNull(variableReferenceIdentifier, "variableReferenceIdentifier"); this.constantFloatValue = null; this.variableReferenceValue = variableReferenceIdentifier; this.serializedValue = variableReferenceIdentifier.toString(); }
/** * Creates a new integerOrVariableRef holding the given variable reference */ public IntegerOrVariableRef(final Identifier variableReferenceIdentifier) { Assert.notNull(variableReferenceIdentifier, "variableReferenceIdentifier"); this.constantIntegerValue = null; this.variableReferenceValue = variableReferenceIdentifier; this.serializedValue = variableReferenceIdentifier.toString(); }
public StringOrVariableRef(final Identifier variableReferenceIdentifier) { Assert.notNull(variableReferenceIdentifier, "variableReferenceIdentifier"); this.constantStringValue = null; this.variableReferenceValue = variableReferenceIdentifier; this.serializedValue = variableReferenceIdentifier.toString(); }
public QtiInvalidLookupException(final Identifier identifier) { this(ComplexReferenceIdentifier.assumedLegal(identifier.toString())); }
static void appendValues(final Element parentElement, final String elementName, final Map<Identifier, Value> valueMap) { for (final Entry<Identifier, Value> entry : valueMap.entrySet()) { final Identifier identifier = entry.getKey(); final Value value = entry.getValue(); final Element valueElement = appendElement(parentElement, elementName); valueElement.setAttribute("identifier", identifier.toString()); appendValueToElement(valueElement, value); } }
public static String formatTestPlanNodeKey(final TestPlanNodeKey testPlanNodeKey) { final Identifier identifier = testPlanNodeKey.getIdentifier(); final int instanceNumber = testPlanNodeKey.getInstanceNumber(); final StringBuilder resultBuilder = new StringBuilder(identifier.toString()); if (instanceNumber>1) { resultBuilder.append(" (Instance ") .append(instanceNumber) .append(")"); } return resultBuilder.toString(); }
@Override public void validateBasic(final ValidationContext context) { super.validateBasic(context); /* Spec suggests a maximum length for identnfiers. We don't enforce this, but will issue a validation warning */ if (value!=null && value.toString().length() > QtiConstants.IDENTIFIER_MAX_LENGTH_RECOMMENDATION) { context.fireAttributeValidationWarning(this, "Identifiers are recommended to be no more than " + QtiConstants.IDENTIFIER_MAX_LENGTH_RECOMMENDATION + " characters long"); } } }
/** * Gets a list of all the variables that can be read by a cas * implementation. * * @return readable variables */ public List<VariableDeclaration> getAllCASReadableVariableDeclarations() { final List<VariableDeclaration> declarations = new ArrayList<VariableDeclaration>(); for (final VariableDeclaration decl : getAllReadableVariableDeclarations()) { if (decl.getIdentifier().toString().matches(IDENTIFIER_REGEX_VALUE)) { declarations.add(decl); } } return declarations; }
@Override public void validateBasic(final ValidationContext context) { super.validateBasic(context); /* Spec suggests a maximum length for identnfiers. We don't enforce this, but will issue a validation warning */ if (value!=null) { for (final Identifier item : value) { if (item.toString().length() > 32) { context.fireAttributeValidationWarning(this, "The identifier " + item + " are recommended to be no more than " + QtiConstants.IDENTIFIER_MAX_LENGTH_RECOMMENDATION + " characters long"); } } } }
/** * Gets a list of all the variables assigned to by the CAS implementation. * * @return writable variables */ public List<VariableDeclaration> getAllCASWriteableVariableDeclarations() { final List<VariableDeclaration> declarations = new ArrayList<VariableDeclaration>(); for (final VariableDeclaration decl : getAllWriteableVariableDeclarations()) { final Identifier identifier = decl.getIdentifier(); if (identifier.toString().matches(IDENTIFIER_REGEX_VALUE) && !identifier.equals(QtiConstants.VARIABLE_DURATION_IDENTIFIER) && !identifier.equals(QtiConstants.VARIABLE_NUMBER_OF_ATTEMPTS_IDENTIFIER)) { declarations.add(decl); } } return declarations; }
@Override public final String computeXPathComponent() { final Identifier identifier = getIdentifier(); if (identifier != null) { return getQtiClassName() + "[@identifier=\"" + identifier.toString() + "\"]"; } return super.computeXPathComponent(); }
@Override public final String computeXPathComponent() { final Identifier identifier = getIdentifier(); if (identifier != null) { return getQtiClassName() + "[@identifier=\"" + identifier.toString() + "\"]"; } return super.computeXPathComponent(); }
@Override public final void validateThis(final ValidationContext context) { super.validateThis(context); /* First make sure that variable names are all acceptable */ for (final VariableDeclaration decl : getAllReadableVariableDeclarations()) { final String ident = decl.getIdentifier().toString(); if (!ident.matches(IDENTIFIER_REGEX_VALUE)) { context.fireValidationWarning(this, "Variable " + ident + " does not follow the naming convention stated in the MathAssess extensions specification"); } } /* Validate syntax attribute */ if (getSyntax() != null) { switch (getSyntax()) { case MAXIMA: break; default: context.fireValidationError(this, "Unsupported syntax type: " + getSyntax()); } } /* Get subclass to validate remaining attrs and/or children */ doAdditionalValidation(context); }
protected void passVariableToMaxima(final QtiMaximaProcess qtiMaximaProcess, final ItemProcessingContext context, final VariableDeclaration declaration) { final Value value = context.evaluateVariableValue(declaration); /* NB: Depending on when this is run, some values (e.g. response values) will not have been initialised, so value could be null */ if (value != null) { final ValueWrapper valueWrapper = GlueValueBinder.jqtiToCas(value); if (valueWrapper != null) { try { qtiMaximaProcess.passQtiVariableToMaxima(declaration.getIdentifier().toString(), valueWrapper); } catch (final RuntimeException e) { context.fireRuntimeError(this, "An unexpected problem occurred when attempting to pass the Variable " + declaration.getIdentifier() + " to Maxima"); } } else { context.fireRuntimeInfo(this, "Variable " + declaration.getIdentifier() + " is not of a type supported by the MathAssess extensions so has not been passed to Maxima"); } } }
private void recordOutcomeVariables(final CandidateSession candidateSession, final AbstractResult resultNode) { candidateSessionOutcomeDao.deleteForCandidateSession(candidateSession); for (final ItemVariable itemVariable : resultNode.getItemVariables()) { if (itemVariable instanceof OutcomeVariable || QtiConstants.VARIABLE_DURATION_IDENTIFIER.equals(itemVariable.getIdentifier())) { final CandidateSessionOutcome outcome = new CandidateSessionOutcome(); outcome.setCandidateSession(candidateSession); outcome.setOutcomeIdentifier(itemVariable.getIdentifier().toString()); outcome.setBaseType(itemVariable.getBaseType()); outcome.setCardinality(itemVariable.getCardinality()); outcome.setStringValue(stringifyQtiValue(itemVariable.getComputedValue())); candidateSessionOutcomeDao.persist(outcome); } } }