Search in sources :

Example 86 with QItemType

use of org.olat.modules.qpool.model.QItemType in project OpenOLAT by OpenOLAT.

the class QItemTypeDAO method createDefaultTypes.

protected void createDefaultTypes() {
    List<QItemType> types = getItemTypes();
    Set<String> typeKeys = new HashSet<String>();
    for (QItemType type : types) {
        typeKeys.add(type.getType().toLowerCase());
    }
    for (QuestionType defaultType : QuestionType.values()) {
        if (!typeKeys.contains(defaultType.name().toLowerCase())) {
            create(defaultType.name(), false);
        }
    }
    dbInstance.commitAndCloseSession();
}
Also used : QuestionType(org.olat.modules.qpool.QuestionType) QItemType(org.olat.modules.qpool.model.QItemType) HashSet(java.util.HashSet)

Example 87 with QItemType

use of org.olat.modules.qpool.model.QItemType in project OpenOLAT by OpenOLAT.

the class QTIImportProcessor method processItemMetadata.

private void processItemMetadata(QuestionItemImpl poolItem, ItemAndMetadata metadata) {
    // non heuristic set of question type
    int questionType = metadata.getQuestionType();
    if (questionType >= 0) {
        String typeStr;
        switch(questionType) {
            case Question.TYPE_MC:
                typeStr = QuestionType.MC.name();
                break;
            case Question.TYPE_SC:
                typeStr = QuestionType.SC.name();
                break;
            case Question.TYPE_FIB:
                typeStr = QuestionType.FIB.name();
                break;
            case Question.TYPE_ESSAY:
                typeStr = QuestionType.ESSAY.name();
                break;
            default:
                typeStr = null;
        }
        if (typeStr != null) {
            QItemType type = qItemTypeDao.loadByType(typeStr);
            if (type != null) {
                poolItem.setType(type);
            }
        }
    }
    String coverage = metadata.getCoverage();
    if (StringHelper.containsNonWhitespace(coverage)) {
        poolItem.setCoverage(coverage);
    }
    String language = metadata.getLanguage();
    if (StringHelper.containsNonWhitespace(language)) {
        poolItem.setLanguage(language);
    }
    String keywords = metadata.getKeywords();
    if (StringHelper.containsNonWhitespace(keywords)) {
        poolItem.setKeywords(keywords);
    }
    String taxonomyPath = metadata.getTaxonomyPath();
    if (StringHelper.containsNonWhitespace(taxonomyPath)) {
        QTIMetadataConverter converter = new QTIMetadataConverter(qItemTypeDao, qEduContextDao, qpoolService);
        TaxonomyLevel taxonomyLevel = converter.toTaxonomy(taxonomyPath);
        poolItem.setTaxonomyLevel(taxonomyLevel);
    }
    String level = metadata.getLevel();
    if (StringHelper.containsNonWhitespace(level)) {
        QTIMetadataConverter converter = new QTIMetadataConverter(qItemTypeDao, qEduContextDao, qpoolService);
        QEducationalContext educationalContext = converter.toEducationalContext(level);
        poolItem.setEducationalContext(educationalContext);
    }
    String time = metadata.getTypicalLearningTime();
    if (StringHelper.containsNonWhitespace(time)) {
        poolItem.setEducationalLearningTime(time);
    }
    String editor = metadata.getEditor();
    if (StringHelper.containsNonWhitespace(editor)) {
        poolItem.setEditor(editor);
    }
    String editorVersion = metadata.getEditorVersion();
    if (StringHelper.containsNonWhitespace(editorVersion)) {
        poolItem.setEditorVersion(editorVersion);
    }
    int numOfAnswerAlternatives = metadata.getNumOfAnswerAlternatives();
    if (numOfAnswerAlternatives > 0) {
        poolItem.setNumOfAnswerAlternatives(numOfAnswerAlternatives);
    }
    poolItem.setDifficulty(metadata.getDifficulty());
    poolItem.setDifferentiation(metadata.getDifferentiation());
    poolItem.setStdevDifficulty(metadata.getStdevDifficulty());
}
Also used : TaxonomyLevel(org.olat.modules.taxonomy.TaxonomyLevel) QEducationalContext(org.olat.modules.qpool.model.QEducationalContext) QItemType(org.olat.modules.qpool.model.QItemType)

Example 88 with QItemType

use of org.olat.modules.qpool.model.QItemType in project OpenOLAT by OpenOLAT.

the class QTIImportProcessor method processItem.

protected QuestionItemImpl processItem(Element itemEl, String comment, String originalItemFilename, String editor, String editorVersion, DocInfos docInfos, ItemAndMetadata metadata) {
    // filename
    String filename;
    String ident = getAttributeValue(itemEl, "ident");
    if (originalItemFilename != null) {
        filename = originalItemFilename;
    } else if (StringHelper.containsNonWhitespace(ident)) {
        filename = StringHelper.transformDisplayNameToFileSystemName(ident) + ".xml";
    } else {
        filename = "item.xml";
    }
    String dir = qpoolFileStorage.generateDir();
    // title
    String title = getAttributeValue(itemEl, "title");
    if (!StringHelper.containsNonWhitespace(title)) {
        title = ident;
    }
    if (!StringHelper.containsNonWhitespace(title)) {
        title = importedFilename;
    }
    QuestionItemImpl poolItem = questionItemDao.create(title, QTIConstants.QTI_12_FORMAT, dir, filename);
    // description
    poolItem.setDescription(comment);
    // language from default
    poolItem.setLanguage(defaultLocale.getLanguage());
    // question type first
    boolean ooFormat = processItemQuestionType(poolItem, ident, itemEl);
    if (StringHelper.containsNonWhitespace(editor)) {
        poolItem.setEditor(editor);
        poolItem.setEditorVersion(editorVersion);
    } else if (ooFormat) {
        poolItem.setEditor("OpenOLAT");
    }
    // if question type not found, can be overridden by the metadatas
    processItemMetadata(poolItem, itemEl);
    if (poolItem.getType() == null) {
        QItemType defType = qItemTypeDao.loadByType(QuestionType.UNKOWN.name());
        poolItem.setType(defType);
    }
    if (docInfos != null) {
        processSidecarMetadata(poolItem, docInfos);
    }
    if (metadata != null) {
        processItemMetadata(poolItem, metadata);
        createLicense(poolItem, metadata);
    }
    questionItemDao.persist(owner, poolItem);
    return poolItem;
}
Also used : QuestionItemImpl(org.olat.modules.qpool.model.QuestionItemImpl) QItemType(org.olat.modules.qpool.model.QItemType)

Example 89 with QItemType

use of org.olat.modules.qpool.model.QItemType in project OpenOLAT by OpenOLAT.

the class QItemTypesAdminController method formInnerEvent.

@Override
protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
    if (source == createType) {
        doEdit(ureq, null);
    } else if (source == tableEl) {
        if (event instanceof SelectionEvent) {
            SelectionEvent se = (SelectionEvent) event;
            if ("delete-type".equals(se.getCommand())) {
                QItemType row = model.getObject(se.getIndex());
                doConfirmDelete(ureq, row);
            } else if ("translate".equals(se.getCommand())) {
                QItemType row = model.getObject(se.getIndex());
                doOpenTranslationTool(ureq, row);
            }
        }
    }
    super.formInnerEvent(ureq, source, event);
}
Also used : SelectionEvent(org.olat.core.gui.components.form.flexible.impl.elements.table.SelectionEvent) QItemType(org.olat.modules.qpool.model.QItemType)

Example 90 with QItemType

use of org.olat.modules.qpool.model.QItemType in project openolat by klemens.

the class QItemTypesAdminController method formInnerEvent.

@Override
protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
    if (source == createType) {
        doEdit(ureq, null);
    } else if (source == tableEl) {
        if (event instanceof SelectionEvent) {
            SelectionEvent se = (SelectionEvent) event;
            if ("delete-type".equals(se.getCommand())) {
                QItemType row = model.getObject(se.getIndex());
                doConfirmDelete(ureq, row);
            } else if ("translate".equals(se.getCommand())) {
                QItemType row = model.getObject(se.getIndex());
                doOpenTranslationTool(ureq, row);
            }
        }
    }
    super.formInnerEvent(ureq, source, event);
}
Also used : SelectionEvent(org.olat.core.gui.components.form.flexible.impl.elements.table.SelectionEvent) QItemType(org.olat.modules.qpool.model.QItemType)

Aggregations

QItemType (org.olat.modules.qpool.model.QItemType)118 Test (org.junit.Test)94 QuestionItem (org.olat.modules.qpool.QuestionItem)82 Identity (org.olat.core.id.Identity)58 BusinessGroup (org.olat.group.BusinessGroup)22 QuestionItemView (org.olat.modules.qpool.QuestionItemView)18 Pool (org.olat.modules.qpool.Pool)12 QuestionItem2Pool (org.olat.modules.qpool.QuestionItem2Pool)12 QuestionItemCollection (org.olat.modules.qpool.QuestionItemCollection)12 QuestionItemImpl (org.olat.modules.qpool.model.QuestionItemImpl)10 URI (java.net.URI)8 ArrayList (java.util.ArrayList)8 HttpResponse (org.apache.http.HttpResponse)8 QuestionItemShort (org.olat.modules.qpool.QuestionItemShort)8 QEducationalContext (org.olat.modules.qpool.model.QEducationalContext)8 SearchQuestionItemParams (org.olat.modules.qpool.model.SearchQuestionItemParams)8 QuestionItemFull (org.olat.modules.qpool.QuestionItemFull)6 QuestionType (org.olat.modules.qpool.QuestionType)6 TaxonomyLevel (org.olat.modules.taxonomy.TaxonomyLevel)6 InputStream (java.io.InputStream)4