Search in sources :

Example 21 with Block

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

the class AlienItemAnalyzer method checkItemBody.

/**
 * Check if there are text after the interaction
 */
private void checkItemBody(Report report) {
    if (report.getType() == QTI21QuestionType.sc || report.getType() == QTI21QuestionType.mc || report.getType() == QTI21QuestionType.kprim || report.getType() == QTI21QuestionType.match || report.getType() == QTI21QuestionType.matchdraganddrop || report.getType() == QTI21QuestionType.hotspot || report.getType() == QTI21QuestionType.essay || report.getType() == QTI21QuestionType.upload) {
        ItemBody itemBody = item.getItemBody();
        List<Block> blocks = itemBody.getBlocks();
        Block lastBlock = blocks.get(blocks.size() - 1);
        if (!(lastBlock instanceof Interaction)) {
            report.addWarning(ReportWarningEnum.textAfterInteraction);
        }
    }
}
Also used : ItemBody(uk.ac.ed.ph.jqtiplus.node.content.ItemBody) Interaction(uk.ac.ed.ph.jqtiplus.node.item.interaction.Interaction) MatchInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.MatchInteraction) Block(uk.ac.ed.ph.jqtiplus.node.content.basic.Block)

Example 22 with Block

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

the class AssessmentObjectComponentRenderer method renderBlock.

public void renderBlock(AssessmentRenderer renderer, StringOutput sb, AssessmentObjectComponent component, ResolvedAssessmentItem resolvedAssessmentItem, ItemSessionState itemSessionState, Block block, URLBuilder ubu, Translator translator) {
    switch(block.getQtiClassName()) {
        case AssociateInteraction.QTI_CLASS_NAME:
        case ChoiceInteraction.QTI_CLASS_NAME:
        case DrawingInteraction.QTI_CLASS_NAME:
        case ExtendedTextInteraction.QTI_CLASS_NAME:
        case GapMatchInteraction.QTI_CLASS_NAME:
        case GraphicAssociateInteraction.QTI_CLASS_NAME:
        case GraphicGapMatchInteraction.QTI_CLASS_NAME:
        case GraphicOrderInteraction.QTI_CLASS_NAME:
        case HotspotInteraction.QTI_CLASS_NAME:
        case SelectPointInteraction.QTI_CLASS_NAME:
        case HottextInteraction.QTI_CLASS_NAME:
        case MatchInteraction.QTI_CLASS_NAME:
        case MediaInteraction.QTI_CLASS_NAME:
        case OrderInteraction.QTI_CLASS_NAME:
        case PositionObjectInteraction.QTI_CLASS_NAME:
        case SliderInteraction.QTI_CLASS_NAME:
        case UploadInteraction.QTI_CLASS_NAME:
            {
                renderInteraction(renderer, sb, (FlowInteraction) block, resolvedAssessmentItem, itemSessionState, component, ubu, translator);
                break;
            }
        case CustomInteraction.QTI_CLASS_NAME:
            {
                renderCustomInteraction(renderer, sb, (CustomInteraction<?>) block, resolvedAssessmentItem, itemSessionState, component, ubu, translator);
                break;
            }
        case PositionObjectStage.QTI_CLASS_NAME:
            {
                renderPositionObjectStage(renderer, sb, (PositionObjectStage) block, resolvedAssessmentItem, itemSessionState, component, ubu, translator);
                break;
            }
        // never rendered
        case TemplateBlock.QTI_CLASS_NAME:
            break;
        case InfoControl.QTI_CLASS_NAME:
            {
                renderInfoControl(renderer, sb, component, resolvedAssessmentItem, itemSessionState, (InfoControl) block, ubu, translator);
                break;
            }
        case FeedbackBlock.QTI_CLASS_NAME:
            {
                FeedbackBlock feedbackBlock = (FeedbackBlock) block;
                if (component.isFeedback(feedbackBlock, itemSessionState)) {
                    sb.append("<div class='o_info feedbackBlock '").append(getAtClass(feedbackBlock)).append(">");
                    feedbackBlock.getBlocks().forEach((child) -> renderBlock(renderer, sb, component, resolvedAssessmentItem, itemSessionState, child, ubu, translator));
                    sb.append("</div>");
                }
                break;
            }
        // never rendered automatically
        case RubricBlock.QTI_CLASS_NAME:
            break;
        case Math.QTI_CLASS_NAME:
            {
                renderMath(renderer, sb, component, resolvedAssessmentItem, itemSessionState, (Math) block);
                break;
            }
        case Div.QTI_CLASS_NAME:
            renderStartHtmlTag(sb, component, resolvedAssessmentItem, block, null);
            ((Div) block).getFlows().forEach((flow) -> renderFlow(renderer, sb, component, resolvedAssessmentItem, itemSessionState, flow, ubu, translator));
            renderEndTag(sb, block);
            break;
        case Ul.QTI_CLASS_NAME:
            renderStartHtmlTag(sb, component, resolvedAssessmentItem, block, null);
            ((Ul) block).getLis().forEach((li) -> renderLi(renderer, sb, component, resolvedAssessmentItem, itemSessionState, li, ubu, translator));
            renderEndTag(sb, block);
            break;
        case Ol.QTI_CLASS_NAME:
            renderStartHtmlTag(sb, component, resolvedAssessmentItem, block, null);
            ((Ol) block).getLis().forEach((li) -> renderLi(renderer, sb, component, resolvedAssessmentItem, itemSessionState, li, ubu, translator));
            renderEndTag(sb, block);
            break;
        case Dl.QTI_CLASS_NAME:
            renderStartHtmlTag(sb, component, resolvedAssessmentItem, block, null);
            ((Dl) block).getDlElements().forEach((dlElement) -> renderDlElement(renderer, sb, component, resolvedAssessmentItem, itemSessionState, dlElement, ubu, translator));
            renderEndTag(sb, block);
            break;
        case Table.QTI_CLASS_NAME:
            renderTable(renderer, sb, component, resolvedAssessmentItem, itemSessionState, (Table) block, ubu, translator);
            break;
        case Object.QTI_CLASS_NAME:
            System.out.println("1");
            break;
        default:
            {
                renderStartHtmlTag(sb, component, resolvedAssessmentItem, block, null);
                if (block instanceof AtomicBlock) {
                    AtomicBlock atomicBlock = (AtomicBlock) block;
                    atomicBlock.getInlines().forEach((child) -> renderInline(renderer, sb, component, resolvedAssessmentItem, itemSessionState, child, ubu, translator));
                } else if (block instanceof SimpleBlock) {
                    SimpleBlock simpleBlock = (SimpleBlock) block;
                    simpleBlock.getBlocks().forEach((child) -> renderBlock(renderer, sb, component, resolvedAssessmentItem, itemSessionState, child, ubu, translator));
                }
                renderEndTag(sb, block);
            }
    }
}
Also used : Util(org.olat.core.util.Util) AtomicBlock(uk.ac.ed.ph.jqtiplus.node.content.basic.AtomicBlock) AssessmentRenderFunctions.extractMathsContentPmathml(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.extractMathsContentPmathml) Colgroup(uk.ac.ed.ph.jqtiplus.node.content.xhtml.table.Colgroup) AssessmentRenderFunctions.getAtClass(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.getAtClass) AssessmentRenderFunctions.getOutcomeValue(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.getOutcomeValue) StreamResult(javax.xml.transform.stream.StreamResult) RubricBlock(uk.ac.ed.ph.jqtiplus.node.content.variable.RubricBlock) CoreSpringFactory(org.olat.core.CoreSpringFactory) IntegerAttribute(uk.ac.ed.ph.jqtiplus.attribute.value.IntegerAttribute) Context(org.apache.velocity.context.Context) Flow(uk.ac.ed.ph.jqtiplus.node.content.basic.Flow) DrawingInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.DrawingInteraction) AssessmentRenderFunctions.isInvalidResponse(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.isInvalidResponse) QTI21Module(org.olat.ims.qti21.QTI21Module) InfoControl(uk.ac.ed.ph.jqtiplus.node.content.InfoControl) TableCell(uk.ac.ed.ph.jqtiplus.node.content.xhtml.table.TableCell) OLog(org.olat.core.logging.OLog) AssessmentRenderFunctions.extractRecordFieldValue(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.extractRecordFieldValue) Translator(org.olat.core.gui.translator.Translator) FormJSHelper(org.olat.core.gui.components.form.flexible.impl.FormJSHelper) Tfoot(uk.ac.ed.ph.jqtiplus.node.content.xhtml.table.Tfoot) AssessmentRenderFunctions.getCardinalitySize(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.getCardinalitySize) TextRun(uk.ac.ed.ph.jqtiplus.node.content.basic.TextRun) Reader(java.io.Reader) Value(uk.ac.ed.ph.jqtiplus.value.Value) VelocityContext(org.apache.velocity.VelocityContext) QTI21Service(org.olat.ims.qti21.QTI21Service) EndAttemptInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.EndAttemptInteraction) AssessmentRenderFunctions.getHtmlAttributeValue(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.getHtmlAttributeValue) StringOutputPool(org.olat.core.gui.render.StringOutputPool) FormLink(org.olat.core.gui.components.form.flexible.elements.FormLink) TemplateBlock(uk.ac.ed.ph.jqtiplus.node.content.template.TemplateBlock) XsltStylesheetManager(uk.ac.ed.ph.jqtiplus.xmlutils.xslt.XsltStylesheetManager) ForeignAttribute(uk.ac.ed.ph.jqtiplus.attribute.ForeignAttribute) GraphicOrderInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.GraphicOrderInteraction) Block(uk.ac.ed.ph.jqtiplus.node.content.basic.Block) Hottext(uk.ac.ed.ph.jqtiplus.node.item.interaction.content.Hottext) VariableDeclaration(uk.ac.ed.ph.jqtiplus.node.shared.VariableDeclaration) AssessmentRenderFunctions.checkJavaScript(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.checkJavaScript) TextEntryInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.TextEntryInteraction) QueryUtils(uk.ac.ed.ph.jqtiplus.utils.QueryUtils) AssessmentRenderFunctions.isTemplateDeclarationAMathVariable(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.isTemplateDeclarationAMathVariable) ResolvedAssessmentItem(uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentItem) QTI21Constants(org.olat.ims.qti21.QTI21Constants) StringMultipleAttribute(uk.ac.ed.ph.jqtiplus.attribute.value.StringMultipleAttribute) ItemSessionState(uk.ac.ed.ph.jqtiplus.state.ItemSessionState) FlowInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.FlowInteraction) MathEntryInteraction(uk.ac.ed.ph.qtiworks.mathassess.MathEntryInteraction) Attribute(uk.ac.ed.ph.jqtiplus.attribute.Attribute) Table(uk.ac.ed.ph.jqtiplus.node.content.xhtml.table.Table) ArrayList(java.util.ArrayList) XMLReader(org.xml.sax.XMLReader) Gap(uk.ac.ed.ph.jqtiplus.node.item.interaction.content.Gap) Cardinality(uk.ac.ed.ph.jqtiplus.value.Cardinality) AssessmentRenderFunctions.renderOrderedCardinalityValue(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.renderOrderedCardinalityValue) ExtendedTextInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.ExtendedTextInteraction) OrderInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.OrderInteraction) StringHelper(org.olat.core.util.StringHelper) RenderResult(org.olat.core.gui.render.RenderResult) Img(uk.ac.ed.ph.jqtiplus.node.content.xhtml.image.Img) AssessmentRenderFunctions.isMultipleCardinalityValue(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.isMultipleCardinalityValue) PrintedVariable(uk.ac.ed.ph.jqtiplus.node.content.variable.PrintedVariable) AssessmentItem(uk.ac.ed.ph.jqtiplus.node.item.AssessmentItem) AssessmentRenderFunctions.isVisible(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.isVisible) AssessmentRenderFunctions.renderSingleCardinalityValue(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.renderSingleCardinalityValue) Inline(uk.ac.ed.ph.jqtiplus.node.content.basic.Inline) Br(uk.ac.ed.ph.jqtiplus.node.content.xhtml.text.Br) Interaction(uk.ac.ed.ph.jqtiplus.node.item.interaction.Interaction) IOException(java.io.IOException) ForeignElement(uk.ac.ed.ph.jqtiplus.node.ForeignElement) CodeHelper(org.olat.core.util.CodeHelper) AssessmentRenderFunctions.renderMultipleCardinalityValue(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.renderMultipleCardinalityValue) StringReader(java.io.StringReader) SimpleBlock(uk.ac.ed.ph.jqtiplus.node.content.basic.SimpleBlock) AssessmentRenderFunctions.isBadResponse(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.isBadResponse) NavigationMode(uk.ac.ed.ph.jqtiplus.node.test.NavigationMode) TransformerHandler(javax.xml.transform.sax.TransformerHandler) AssessmentRenderFunctions.exists(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.exists) AssessmentRenderFunctions.valueContains(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.valueContains) AssessmentRenderFunctions.extractSingleCardinalityResponseInput(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.extractSingleCardinalityResponseInput) URLBuilder(org.olat.core.gui.render.URLBuilder) TestPart(uk.ac.ed.ph.jqtiplus.node.test.TestPart) HottextInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.HottextInteraction) Form(org.olat.core.gui.components.form.flexible.impl.Form) GraphicAssociateInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.GraphicAssociateInteraction) Identifier(uk.ac.ed.ph.jqtiplus.types.Identifier) AssessmentRenderFunctions.extractResponseInputAt(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.extractResponseInputAt) AssessmentRenderFunctions.contentAsString(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.contentAsString) XmlUtilities(org.olat.ims.qti21.XmlUtilities) A(uk.ac.ed.ph.jqtiplus.node.content.xhtml.hypertext.A) CustomInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.CustomInteraction) Object(uk.ac.ed.ph.jqtiplus.node.content.xhtml.object.Object) IdentifierValue(uk.ac.ed.ph.jqtiplus.value.IdentifierValue) AssessmentRenderFunctions.getTemplateValue(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.getTemplateValue) FormUIFactory(org.olat.core.gui.components.form.flexible.FormUIFactory) InlineChoiceInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.InlineChoiceInteraction) StringOutput(org.olat.core.gui.render.StringOutput) AssessmentRenderFunctions.extractIterableElement(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.extractIterableElement) Renderer(org.olat.core.gui.render.Renderer) SimpleInline(uk.ac.ed.ph.jqtiplus.node.content.basic.SimpleInline) URI(java.net.URI) AssessmentRenderFunctions.renderRecordCardinalityValue(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.renderRecordCardinalityValue) AssessmentItemFactory(org.olat.ims.qti21.model.xml.AssessmentItemFactory) Col(uk.ac.ed.ph.jqtiplus.node.content.xhtml.table.Col) HotspotInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.HotspotInteraction) ResponseDeclaration(uk.ac.ed.ph.jqtiplus.node.item.response.declaration.ResponseDeclaration) UploadInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.UploadInteraction) AssociateInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.AssociateInteraction) AssessmentRenderFunctions.getResponseValue(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.getResponseValue) AssessmentRenderFunctions.isNullValue(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.isNullValue) ChoiceInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.ChoiceInteraction) AssessmentRenderFunctions.isSingleCardinalityValue(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.isSingleCardinalityValue) FeedbackInline(uk.ac.ed.ph.jqtiplus.node.content.variable.FeedbackInline) Thead(uk.ac.ed.ph.jqtiplus.node.content.xhtml.table.Thead) List(java.util.List) MatchInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.MatchInteraction) TextOrVariable(uk.ac.ed.ph.jqtiplus.node.content.variable.TextOrVariable) PositionObjectStage(uk.ac.ed.ph.jqtiplus.node.item.interaction.content.PositionObjectStage) BaseType(uk.ac.ed.ph.jqtiplus.value.BaseType) DefaultComponentRenderer(org.olat.core.gui.components.DefaultComponentRenderer) Ol(uk.ac.ed.ph.jqtiplus.node.content.xhtml.list.Ol) ModalFeedback(uk.ac.ed.ph.jqtiplus.node.item.ModalFeedback) Settings(org.olat.core.helpers.Settings) TestSessionController(uk.ac.ed.ph.jqtiplus.running.TestSessionController) QtiNode(uk.ac.ed.ph.jqtiplus.node.QtiNode) TemplateInline(uk.ac.ed.ph.jqtiplus.node.content.template.TemplateInline) AssessmentRenderFunctions.isRecordCardinalityValue(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.isRecordCardinalityValue) ResponseData(uk.ac.ed.ph.jqtiplus.types.ResponseData) FormItem(org.olat.core.gui.components.form.flexible.FormItem) Math(uk.ac.ed.ph.jqtiplus.node.content.mathml.Math) SelectPointInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.SelectPointInteraction) Span(uk.ac.ed.ph.jqtiplus.node.content.xhtml.text.Span) AssessmentRenderFunctions.isOrderedCardinalityValue(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.isOrderedCardinalityValue) AssessmentRenderFunctions.isMathsContentValue(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.isMathsContentValue) SliderInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.SliderInteraction) DlElement(uk.ac.ed.ph.jqtiplus.node.content.xhtml.list.DlElement) VelocityHelper(org.olat.core.gui.render.velocity.VelocityHelper) Li(uk.ac.ed.ph.jqtiplus.node.content.xhtml.list.Li) Tr(uk.ac.ed.ph.jqtiplus.node.content.xhtml.table.Tr) AssessmentRenderFunctions.getResponseDeclaration(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.getResponseDeclaration) InputSource(org.xml.sax.InputSource) Dd(uk.ac.ed.ph.jqtiplus.node.content.xhtml.list.Dd) Link(org.olat.core.gui.components.link.Link) PositionObjectInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.PositionObjectInteraction) Dl(uk.ac.ed.ph.jqtiplus.node.content.xhtml.list.Dl) FeedbackBlock(uk.ac.ed.ph.jqtiplus.node.content.variable.FeedbackBlock) SingleValue(uk.ac.ed.ph.jqtiplus.value.SingleValue) AttributeList(uk.ac.ed.ph.jqtiplus.attribute.AttributeList) Div(uk.ac.ed.ph.jqtiplus.node.content.xhtml.text.Div) Dt(uk.ac.ed.ph.jqtiplus.node.content.xhtml.list.Dt) Tbody(uk.ac.ed.ph.jqtiplus.node.content.xhtml.table.Tbody) GraphicGapMatchInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.GraphicGapMatchInteraction) MediaInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.MediaInteraction) GapMatchInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.GapMatchInteraction) AssessmentRenderFunctions.getResponseInput(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.getResponseInput) Tracing(org.olat.core.logging.Tracing) Ul(uk.ac.ed.ph.jqtiplus.node.content.xhtml.list.Ul) StringEscapeUtils(org.apache.commons.lang.StringEscapeUtils) SimpleBlock(uk.ac.ed.ph.jqtiplus.node.content.basic.SimpleBlock) InfoControl(uk.ac.ed.ph.jqtiplus.node.content.InfoControl) FeedbackBlock(uk.ac.ed.ph.jqtiplus.node.content.variable.FeedbackBlock) AtomicBlock(uk.ac.ed.ph.jqtiplus.node.content.basic.AtomicBlock) CustomInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.CustomInteraction) FlowInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.FlowInteraction) Math(uk.ac.ed.ph.jqtiplus.node.content.mathml.Math) PositionObjectStage(uk.ac.ed.ph.jqtiplus.node.item.interaction.content.PositionObjectStage)

Example 23 with Block

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

the class HotspotAssessmentItemBuilder 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 HotspotInteraction) {
            break;
        } else {
            questionBlocks.add(block);
        }
    }
    return questionBlocks;
}
Also used : HotspotInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.HotspotInteraction) AssessmentItemFactory.appendHotspotInteraction(org.olat.ims.qti21.model.xml.AssessmentItemFactory.appendHotspotInteraction) ArrayList(java.util.ArrayList) Block(uk.ac.ed.ph.jqtiplus.node.content.basic.Block)

Example 24 with Block

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

the class KPrimAssessmentItemBuilder 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 MatchInteraction) {
            break;
        } else {
            questionBlocks.add(block);
        }
    }
    return questionBlocks;
}
Also used : MatchInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.MatchInteraction) ArrayList(java.util.ArrayList) Block(uk.ac.ed.ph.jqtiplus.node.content.basic.Block)

Example 25 with Block

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

the class KPrimAssessmentItemBuilder method extractMatchInteraction.

private void extractMatchInteraction() {
    try (StringOutput sb = new StringOutput()) {
        List<Block> blocks = assessmentItem.getItemBody().getBlocks();
        for (Block block : blocks) {
            if (block instanceof MatchInteraction) {
                matchInteraction = (MatchInteraction) block;
                responseIdentifier = matchInteraction.getResponseIdentifier();
                shuffle = matchInteraction.getShuffle();
                cssClass = matchInteraction.getClassAttr();
                break;
            } else {
                serializeJqtiObject(block, sb);
            }
        }
        question = sb.toString();
    } catch (IOException e) {
        log.error("", e);
    }
}
Also used : MatchInteraction(uk.ac.ed.ph.jqtiplus.node.item.interaction.MatchInteraction) Block(uk.ac.ed.ph.jqtiplus.node.content.basic.Block) StringOutput(org.olat.core.gui.render.StringOutput) IOException(java.io.IOException)

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