Search in sources :

Example 46 with Block

use of uk.ac.ed.ph.jqtiplus.node.content.basic.Block in project openolat by klemens.

the class UploadAssessmentItemBuilder method getQuestionBlocks.

/**
 * @return A copy of the list of blocks which make the question.
 * 		The list is a copy and modification will not be persisted.
 */
public List<Block> getQuestionBlocks() {
    List<Block> blocks = assessmentItem.getItemBody().getBlocks();
    List<Block> questionBlocks = new ArrayList<>(blocks.size());
    for (Block block : blocks) {
        if (block instanceof UploadInteraction) {
            break;
        } else {
            questionBlocks.add(block);
        }
    }
    return questionBlocks;
}
Also used : AssessmentItemFactory.appendUploadInteraction(org.olat.ims.qti21.model.xml.AssessmentItemFactory.appendUploadInteraction) UploadInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.UploadInteraction) ArrayList(java.util.ArrayList) Block(uk.ac.ed.ph.jqtiplus.node.content.basic.Block)

Example 47 with Block

use of uk.ac.ed.ph.jqtiplus.node.content.basic.Block in project openolat by klemens.

the class QTI21WordExport method renderAssessmentItem.

public static void renderAssessmentItem(AssessmentItem item, File itemFile, File mediaDir, OpenXMLDocument document, boolean withResponses, Translator translator, AssessmentHtmlBuilder htmlBuilder) {
    StringBuilder addText = new StringBuilder();
    QTI21QuestionType type = QTI21QuestionType.getType(item);
    String typeDescription = "";
    switch(type) {
        case sc:
            typeDescription = translator.translate("form.choice");
            break;
        case mc:
            typeDescription = translator.translate("form.choice");
            break;
        case fib:
            typeDescription = translator.translate("form.fib");
            break;
        case numerical:
            typeDescription = translator.translate("form.fib");
            break;
        case kprim:
            typeDescription = translator.translate("form.kprim");
            break;
        case hotspot:
            typeDescription = translator.translate("form.hotspot");
            break;
        case essay:
            typeDescription = translator.translate("form.essay");
            break;
        case upload:
            typeDescription = translator.translate("form.upload");
            break;
        case drawing:
            typeDescription = translator.translate("form.drawing");
            break;
        case match:
            typeDescription = translator.translate("form.match");
            break;
        default:
            typeDescription = null;
            break;
    }
    Double maxScore = QtiNodesExtractor.extractMaxScore(item);
    if (StringHelper.containsNonWhitespace(typeDescription) || maxScore != null) {
        if (StringHelper.containsNonWhitespace(typeDescription)) {
            addText.append("(").append(typeDescription).append(")");
        }
        if (maxScore != null) {
            addText.append(" - ").append(AssessmentHelper.getRoundedScore(maxScore));
        }
    }
    String title = item.getTitle();
    document.appendHeading1(title, addText.toString());
    List<Block> itemBodyBlocks = item.getItemBody().getBlocks();
    String html = htmlBuilder.blocksString(itemBodyBlocks);
    document.appendHtmlText(html, true, new QTI21AndHTMLToOpenXMLHandler(document, item, itemFile, mediaDir, withResponses, htmlBuilder, translator));
    if (withResponses && (type == QTI21QuestionType.essay || type == QTI21QuestionType.upload || type == QTI21QuestionType.drawing)) {
        renderCorrectSolutionForWord(item, document, translator, htmlBuilder);
    }
}
Also used : QTI21QuestionType(org.olat.ims.qti21.model.QTI21QuestionType) RubricBlock(uk.ac.ed.ph.jqtiplus.node.content.variable.RubricBlock) Block(uk.ac.ed.ph.jqtiplus.node.content.basic.Block)

Example 48 with Block

use of uk.ac.ed.ph.jqtiplus.node.content.basic.Block in project openolat by klemens.

the class DrawingAssessmentItemBuilder method extractExtendedTextInteraction.

private void extractExtendedTextInteraction() {
    try (StringOutput sb = new StringOutput()) {
        List<Block> blocks = assessmentItem.getItemBody().getBlocks();
        for (Block block : blocks) {
            if (block instanceof DrawingInteraction) {
                drawingInteraction = (DrawingInteraction) block;
                responseIdentifier = drawingInteraction.getResponseIdentifier();
                break;
            } else {
                serializeJqtiObject(block, sb);
            }
        }
        question = sb.toString();
    } catch (IOException e) {
        log.error("", e);
    }
}
Also used : Block(uk.ac.ed.ph.jqtiplus.node.content.basic.Block) StringOutput(org.olat.core.gui.render.StringOutput) IOException(java.io.IOException) AssessmentItemFactory.appendDrawingInteraction(org.olat.ims.qti21.model.xml.AssessmentItemFactory.appendDrawingInteraction) DrawingInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.DrawingInteraction)

Example 49 with Block

use of uk.ac.ed.ph.jqtiplus.node.content.basic.Block in project openolat by klemens.

the class EssayAssessmentItemBuilder method getQuestionBlocks.

/**
 * @return A copy of the list of blocks which make the question.
 * 		The list is a copy and modification will not be persisted.
 */
public List<Block> getQuestionBlocks() {
    List<Block> blocks = assessmentItem.getItemBody().getBlocks();
    List<Block> questionBlocks = new ArrayList<>(blocks.size());
    for (Block block : blocks) {
        if (block instanceof ExtendedTextInteraction) {
            break;
        } else {
            questionBlocks.add(block);
        }
    }
    return questionBlocks;
}
Also used : ArrayList(java.util.ArrayList) Block(uk.ac.ed.ph.jqtiplus.node.content.basic.Block) ExtendedTextInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.ExtendedTextInteraction) AssessmentItemFactory.appendExtendedTextInteraction(org.olat.ims.qti21.model.xml.AssessmentItemFactory.appendExtendedTextInteraction)

Example 50 with Block

use of uk.ac.ed.ph.jqtiplus.node.content.basic.Block in project openolat by klemens.

the class InteractionResultComponentRenderer method render.

@Override
public void render(Renderer renderer, StringOutput sb, Component source, URLBuilder ubu, Translator translator, RenderResult renderResult, String[] args) {
    InteractionResultComponent cmp = (InteractionResultComponent) source;
    Interaction interaction = cmp.getInteraction();
    ResolvedAssessmentItem resolvedAssessmentItem = cmp.getResolvedAssessmentItem();
    ItemSessionState itemSessionState = cmp.getItemSessionState();
    AssessmentRenderer assessmentRenderer = new AssessmentRenderer(renderer);
    if (cmp.isShowSolution()) {
        assessmentRenderer.setSolutionAllowed(true);
        assessmentRenderer.setSolutionMode(true);
    } else {
        assessmentRenderer.setReviewMode(true);
    }
    if (interaction instanceof Block) {
        renderBlock(assessmentRenderer, sb, cmp, resolvedAssessmentItem, itemSessionState, (Block) interaction, ubu, translator);
    } else if (interaction instanceof Flow) {
        renderFlow(assessmentRenderer, sb, cmp, resolvedAssessmentItem, itemSessionState, (Flow) interaction, ubu, translator);
    }
}
Also used : Interaction(uk.ac.ed.ph.jqtiplus.node.item.interaction.Interaction) ResolvedAssessmentItem(uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentItem) ItemSessionState(uk.ac.ed.ph.jqtiplus.state.ItemSessionState) Block(uk.ac.ed.ph.jqtiplus.node.content.basic.Block) Flow(uk.ac.ed.ph.jqtiplus.node.content.basic.Flow)

Aggregations

Block (uk.ac.ed.ph.jqtiplus.node.content.basic.Block)50 StringOutput (org.olat.core.gui.render.StringOutput)24 IOException (java.io.IOException)20 ArrayList (java.util.ArrayList)18 MatchInteraction (uk.ac.ed.ph.jqtiplus.node.item.interaction.MatchInteraction)12 ChoiceInteraction (uk.ac.ed.ph.jqtiplus.node.item.interaction.ChoiceInteraction)10 Interaction (uk.ac.ed.ph.jqtiplus.node.item.interaction.Interaction)8 StreamResult (javax.xml.transform.stream.StreamResult)6 ItemBody (uk.ac.ed.ph.jqtiplus.node.content.ItemBody)6 AssessmentItem (uk.ac.ed.ph.jqtiplus.node.item.AssessmentItem)6 DrawingInteraction (uk.ac.ed.ph.jqtiplus.node.item.interaction.DrawingInteraction)6 ExtendedTextInteraction (uk.ac.ed.ph.jqtiplus.node.item.interaction.ExtendedTextInteraction)6 HotspotInteraction (uk.ac.ed.ph.jqtiplus.node.item.interaction.HotspotInteraction)6 UploadInteraction (uk.ac.ed.ph.jqtiplus.node.item.interaction.UploadInteraction)6 Test (org.junit.Test)4 AssessmentItemFactory.appendExtendedTextInteraction (org.olat.ims.qti21.model.xml.AssessmentItemFactory.appendExtendedTextInteraction)4 AssessmentItemFactory.appendHotspotInteraction (org.olat.ims.qti21.model.xml.AssessmentItemFactory.appendHotspotInteraction)4 Flow (uk.ac.ed.ph.jqtiplus.node.content.basic.Flow)4 ResolvedAssessmentItem (uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentItem)4 ItemSessionState (uk.ac.ed.ph.jqtiplus.state.ItemSessionState)4