Search in sources :

Example 96 with Identifier

use of uk.ac.ed.ph.jqtiplus.types.Identifier in project openolat by klemens.

the class MatchScoreController method sync.

private List<MatchWrapper> sync(SimpleMatchSet matchSet, List<MatchWrapper> wrappers) {
    Map<Identifier, MatchWrapper> currentMapping = wrappers.stream().collect(Collectors.toMap(w -> w.getChoiceIdentifier(), w -> w));
    List<MatchWrapper> newWrappers = new ArrayList<>();
    List<SimpleAssociableChoice> choices = matchSet.getSimpleAssociableChoices();
    for (SimpleAssociableChoice choice : choices) {
        if (currentMapping.containsKey(choice.getIdentifier())) {
            newWrappers.add(currentMapping.get(choice.getIdentifier()));
        } else {
            newWrappers.add(createMatchWrapper(choice));
        }
    }
    return newWrappers;
}
Also used : Util(org.olat.core.util.Util) FormEvent(org.olat.core.gui.components.form.flexible.impl.FormEvent) AssessmentItemEvent(org.olat.ims.qti21.ui.editor.events.AssessmentItemEvent) Identifier(uk.ac.ed.ph.jqtiplus.types.Identifier) HashMap(java.util.HashMap) SingleSelection(org.olat.core.gui.components.form.flexible.elements.SingleSelection) FormItem(org.olat.core.gui.components.form.flexible.FormItem) ArrayList(java.util.ArrayList) SimpleMatchSet(uk.ac.ed.ph.jqtiplus.node.item.interaction.choice.SimpleMatchSet) FormItemContainer(org.olat.core.gui.components.form.flexible.FormItemContainer) ScoreBuilder(org.olat.ims.qti21.model.xml.ScoreBuilder) Map(java.util.Map) StringHelper(org.olat.core.util.StringHelper) URI(java.net.URI) AssessmentTestEditorController(org.olat.ims.qti21.ui.editor.AssessmentTestEditorController) WindowControl(org.olat.core.gui.control.WindowControl) ResourcesMapper(org.olat.ims.qti21.ui.ResourcesMapper) AssessmentItemRef(uk.ac.ed.ph.jqtiplus.node.test.AssessmentItemRef) SimpleAssociableChoice(uk.ac.ed.ph.jqtiplus.node.item.interaction.choice.SimpleAssociableChoice) FlowFormItem(org.olat.ims.qti21.ui.components.FlowFormItem) Collectors(java.util.stream.Collectors) Controller(org.olat.core.gui.control.Controller) CodeHelper(org.olat.core.util.CodeHelper) File(java.io.File) TextElement(org.olat.core.gui.components.form.flexible.elements.TextElement) AssessmentHtmlBuilder(org.olat.ims.qti21.model.xml.AssessmentHtmlBuilder) MatchAssessmentItemBuilder(org.olat.ims.qti21.model.xml.interactions.MatchAssessmentItemBuilder) List(java.util.List) AssessmentItemBuilder(org.olat.ims.qti21.model.xml.AssessmentItemBuilder) DirectedPairValue(uk.ac.ed.ph.jqtiplus.value.DirectedPairValue) AssessmentHelper(org.olat.course.assessment.AssessmentHelper) SyncAssessmentItem(org.olat.ims.qti21.ui.editor.SyncAssessmentItem) UserRequest(org.olat.core.gui.UserRequest) ScoreEvaluation(org.olat.ims.qti21.model.xml.interactions.SimpleChoiceAssessmentItemBuilder.ScoreEvaluation) FormLayoutContainer(org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer) SimpleAssociableChoice(uk.ac.ed.ph.jqtiplus.node.item.interaction.choice.SimpleAssociableChoice) Identifier(uk.ac.ed.ph.jqtiplus.types.Identifier) ArrayList(java.util.ArrayList)

Example 97 with Identifier

use of uk.ac.ed.ph.jqtiplus.types.Identifier in project openolat by klemens.

the class MultipleChoiceEditorController method formOK.

@Override
protected void formOK(UserRequest ureq) {
    if (readOnly)
        return;
    // title
    itemBuilder.setTitle(titleEl.getValue());
    // question
    String questionText = textEl.getRawValue();
    itemBuilder.setQuestion(questionText);
    if (!restrictedEdit) {
        // correct response
        String[] correctAnswers = ureq.getHttpReq().getParameterValues("correct");
        List<Identifier> correctAnswerList = new ArrayList<>();
        if (correctAnswers != null) {
            for (String correctAnswer : correctAnswers) {
                correctAnswerList.add(Identifier.parseString(correctAnswer));
            }
        }
        itemBuilder.setCorrectAnswers(correctAnswerList);
        // shuffle
        itemBuilder.setShuffle(shuffleEl.isOneSelected() && shuffleEl.isSelected(0));
        // orientation
        itemBuilder.setOrientation(Orientation.valueOf(orientationEl.getSelectedKey()));
        // alignment
        if (alignmentEl.isOneSelected() && alignmentEl.isSelected(1)) {
            itemBuilder.addClass(QTI21Constants.CHOICE_ALIGN_RIGHT);
        } else {
            itemBuilder.removeClass(QTI21Constants.CHOICE_ALIGN_RIGHT);
        }
    }
    // replace simple choices
    List<SimpleChoice> choiceList = new ArrayList<>();
    for (SimpleChoiceWrapper choiceWrapper : choiceWrappers) {
        SimpleChoice choice = choiceWrapper.getSimpleChoice();
        // text
        String answer = choiceWrapper.getAnswer().getRawValue();
        itemBuilder.getHtmlHelper().appendHtml(choice, answer);
        choiceList.add(choice);
    }
    itemBuilder.setSimpleChoices(choiceList);
    fireEvent(ureq, new AssessmentItemEvent(AssessmentItemEvent.ASSESSMENT_ITEM_CHANGED, itemBuilder.getAssessmentItem(), QTI21QuestionType.sc));
}
Also used : SimpleChoice(uk.ac.ed.ph.jqtiplus.node.item.interaction.choice.SimpleChoice) Identifier(uk.ac.ed.ph.jqtiplus.types.Identifier) ArrayList(java.util.ArrayList) AssessmentItemEvent(org.olat.ims.qti21.ui.editor.events.AssessmentItemEvent)

Example 98 with Identifier

use of uk.ac.ed.ph.jqtiplus.types.Identifier in project openolat by klemens.

the class TrueFalseEditorController method commitAssociations.

private void commitAssociations(UserRequest ureq) {
    if (restrictedEdit)
        return;
    temporaryAssociations.clear();
    itemBuilder.clearAssociations();
    for (SourceWrapper sourceWrapper : sourceWrappers) {
        String[] targetParamIds = ureq.getHttpReq().getParameterValues(sourceWrapper.getIdentifierString());
        if (targetParamIds != null && targetParamIds.length == 1) {
            Identifier sourceChoiceId = sourceWrapper.getIdentifier();
            Identifier targetChoiceId = Identifier.assumedLegal(targetParamIds[0]);
            itemBuilder.addAssociation(sourceChoiceId, targetChoiceId);
        }
    }
}
Also used : Identifier(uk.ac.ed.ph.jqtiplus.types.Identifier)

Example 99 with Identifier

use of uk.ac.ed.ph.jqtiplus.types.Identifier in project openolat by klemens.

the class HotspotChoiceScoreController method sync.

@Override
public void sync(UserRequest ureq, AssessmentItemBuilder assessmentItemBuilder) {
    if (itemBuilder == assessmentItemBuilder) {
        Set<Identifier> choiceIdentifiers = new HashSet<>();
        for (HotspotChoice choice : itemBuilder.getHotspotChoices()) {
            HotspotChoiceWrapper wrapper = getHotspotChoiceWrapper(choice);
            if (wrapper == null) {
                wrappers.add(createHotspotChoiceWrapper(choice));
            }
            choiceIdentifiers.add(choice.getIdentifier());
        }
        for (Iterator<HotspotChoiceWrapper> wrapperIt = wrappers.iterator(); wrapperIt.hasNext(); ) {
            HotspotChoiceWrapper wrapper = wrapperIt.next();
            if (!choiceIdentifiers.contains(wrapper.getChoice().getIdentifier())) {
                wrapperIt.remove();
            }
        }
        updateBackground();
    }
}
Also used : Identifier(uk.ac.ed.ph.jqtiplus.types.Identifier) HotspotChoice(uk.ac.ed.ph.jqtiplus.node.item.interaction.graphic.HotspotChoice) HashSet(java.util.HashSet)

Example 100 with Identifier

use of uk.ac.ed.ph.jqtiplus.types.Identifier in project openolat by klemens.

the class KPrimEditorController method formOK.

@Override
protected void formOK(UserRequest ureq) {
    if (readOnly)
        return;
    // title
    itemBuilder.setTitle(titleEl.getValue());
    // question
    String questionText = textEl.getRawValue();
    itemBuilder.setQuestion(questionText);
    // shuffle
    if (!restrictedEdit) {
        itemBuilder.setShuffle(shuffleEl.isOneSelected() && shuffleEl.isSelected(0));
        // alignment
        if (alignmentEl.isOneSelected() && alignmentEl.isSelected(1)) {
            itemBuilder.addClass(QTI21Constants.CHOICE_ALIGN_RIGHT);
        } else {
            itemBuilder.removeClass(QTI21Constants.CHOICE_ALIGN_RIGHT);
        }
    }
    // update kprims
    for (KprimWrapper choiceWrapper : choiceWrappers) {
        SimpleAssociableChoice choice = choiceWrapper.getSimpleChoice();
        String answer = choiceWrapper.getAnswer().getRawValue();
        itemBuilder.getHtmlHelper().appendHtml(choice, answer);
    }
    // set associations
    if (!restrictedEdit) {
        List<SimpleAssociableChoice> choices = new ArrayList<>();
        for (KprimWrapper choiceWrapper : choiceWrappers) {
            SimpleAssociableChoice choice = choiceWrapper.getSimpleChoice();
            Identifier choiceIdentifier = choice.getIdentifier();
            String association = ureq.getHttpReq().getParameter(choiceIdentifier.toString());
            if ("correct".equals(association)) {
                itemBuilder.setAssociation(choiceIdentifier, QTI21Constants.CORRECT_IDENTIFIER);
            } else if ("wrong".equals(association)) {
                itemBuilder.setAssociation(choiceIdentifier, QTI21Constants.WRONG_IDENTIFIER);
            }
            choices.add(choice);
        }
        itemBuilder.setKprimChoices(choices);
    }
    fireEvent(ureq, new AssessmentItemEvent(AssessmentItemEvent.ASSESSMENT_ITEM_CHANGED, itemBuilder.getAssessmentItem(), QTI21QuestionType.kprim));
}
Also used : SimpleAssociableChoice(uk.ac.ed.ph.jqtiplus.node.item.interaction.choice.SimpleAssociableChoice) Identifier(uk.ac.ed.ph.jqtiplus.types.Identifier) ArrayList(java.util.ArrayList) AssessmentItemEvent(org.olat.ims.qti21.ui.editor.events.AssessmentItemEvent)

Aggregations

Identifier (uk.ac.ed.ph.jqtiplus.types.Identifier)208 ResponseDeclaration (uk.ac.ed.ph.jqtiplus.node.item.response.declaration.ResponseDeclaration)62 ArrayList (java.util.ArrayList)53 HashMap (java.util.HashMap)52 SingleValue (uk.ac.ed.ph.jqtiplus.value.SingleValue)46 ComplexReferenceIdentifier (uk.ac.ed.ph.jqtiplus.types.ComplexReferenceIdentifier)42 Value (uk.ac.ed.ph.jqtiplus.value.Value)42 AssessmentItem (uk.ac.ed.ph.jqtiplus.node.item.AssessmentItem)40 Map (java.util.Map)32 SimpleAssociableChoice (uk.ac.ed.ph.jqtiplus.node.item.interaction.choice.SimpleAssociableChoice)24 DirectedPairValue (uk.ac.ed.ph.jqtiplus.value.DirectedPairValue)24 IdentifierValue (uk.ac.ed.ph.jqtiplus.value.IdentifierValue)24 ItemBody (uk.ac.ed.ph.jqtiplus.node.content.ItemBody)22 CorrectResponse (uk.ac.ed.ph.jqtiplus.node.item.CorrectResponse)22 ResponseProcessing (uk.ac.ed.ph.jqtiplus.node.item.response.processing.ResponseProcessing)22 ItemSessionState (uk.ac.ed.ph.jqtiplus.state.ItemSessionState)22 List (java.util.List)20 ChoiceInteraction (uk.ac.ed.ph.jqtiplus.node.item.interaction.ChoiceInteraction)20 SimpleChoice (uk.ac.ed.ph.jqtiplus.node.item.interaction.choice.SimpleChoice)20 RecordValue (uk.ac.ed.ph.jqtiplus.value.RecordValue)20