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);
}
}
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;
}
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;
}
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>");
}
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>");
}
}
}
}
Aggregations