diff --git a/src/main/java/org/olat/course/archiver/ExportOptionsController.java b/src/main/java/org/olat/course/archiver/ExportOptionsController.java index b9dcb5e1a7048a2de4e404e3da8c841fc5e032fa..4d1bec0521a663e18e1a8afacee5143b64e99329 100644 --- a/src/main/java/org/olat/course/archiver/ExportOptionsController.java +++ b/src/main/java/org/olat/course/archiver/ExportOptionsController.java @@ -64,7 +64,7 @@ public class ExportOptionsController extends FormBasicController { optionKeys = new String[]{ITEMCOLS, POSCOL, POINTCOL, TIMECOLS}; optionVals = new String[] { translate("form.itemcols"), - translate("form.poscol"), + translate("form.poscol.extra"), translate("form.pointcol"), translate("form.timecols") }; diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_de.properties index 17e89f5a48b35d1c4215e87f540c520a4ca78446..8aa83f1ae92bd60a2c289a455b9b065198462c3f 100644 --- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_de.properties @@ -115,4 +115,5 @@ table.action.select=Ausw\u00E4hlen table.header.node=Kursbaustein tool.name=Datenarchivierung wiki=Wikis -form.title=Optionen einstellen: \ No newline at end of file +form.title=Optionen einstellen: +form.poscol.extra=Gew\u00E4hlte Antwort(en) anzeigen (nur QTI 1.2) \ No newline at end of file diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_en.properties index 25132a299da4afa0f8a87312afb4ec0c2b139ab9..bb0583a443e485b1cd1180eb7016fcfc98282d0b 100644 --- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_en.properties @@ -115,4 +115,5 @@ table.action.select=Select table.header.node=Course element tool.name=Archive tool wiki=Wikis -form.title=Setup options: \ No newline at end of file +form.title=Setup options: +form.poscol.extra=Display selected answer(s) (QTI 1.2 only) \ No newline at end of file diff --git a/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java b/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java index 05e627a63983de9b43bcd26b9e545e05f1923d72..9ec8000b8c1ee6a6d61f74e8763ab9d27760fa98 100644 --- a/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java +++ b/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java @@ -270,7 +270,7 @@ public class IQSELFCourseNode extends AbstractAccessableCourseNode implements Se QTIExportManager qem = QTIExportManager.getInstance(); QTIExportFormatter qef = new QTIExportFormatterCSVType1(locale, "\t", "\"", "\r\n", false); ((QTIExportFormatterCSVType1)qef).setAnonymous(true); - if (options.getQtiExportItemFormatConfig() != null) { + if (options != null && options.getQtiExportItemFormatConfig() != null) { Map<Class<?>, QTIExportItemFormatConfig> itemConfigs = new HashMap<>(); Class<?>[] itemTypes = new Class<?>[] {QTIExportSCQItemFormatConfig.class, QTIExportMCQItemFormatConfig.class, QTIExportKPRIMItemFormatConfig.class, QTIExportFIBItemFormatConfig.class, QTIExportEssayItemFormatConfig.class}; diff --git a/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java b/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java index 03f21f29f3d1b1ff8a084a6609522d9d116f533c..0e65b70e3d01e2d7971aa296d57ed75b32e2d73a 100644 --- a/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java +++ b/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java @@ -684,7 +684,7 @@ public class IQTESTCourseNode extends AbstractAccessableCourseNode implements Pe String shortTitle = getShortTitle(); QTIExportManager qem = QTIExportManager.getInstance(); QTIExportFormatter qef = new QTIExportFormatterCSVType1(locale, "\t", "\"", "\r\n", false); - if (options.getQtiExportItemFormatConfig() != null) { + if (options != null && options.getQtiExportItemFormatConfig() != null) { Map<Class<?>, QTIExportItemFormatConfig> itemConfigs = new HashMap<>(); Class<?>[] itemTypes = new Class<?>[] {QTIExportSCQItemFormatConfig.class, QTIExportMCQItemFormatConfig.class, QTIExportKPRIMItemFormatConfig.class, QTIExportFIBItemFormatConfig.class, QTIExportEssayItemFormatConfig.class}; diff --git a/src/main/java/org/olat/course/nodes/iq/IQEditReplaceWizard.java b/src/main/java/org/olat/course/nodes/iq/IQEditReplaceWizard.java index 25e632a25d2ac35bdb4151e796e81683cc1a7975..fe5cd5148613f1f9f7814a17a8839206428d1a5f 100644 --- a/src/main/java/org/olat/course/nodes/iq/IQEditReplaceWizard.java +++ b/src/main/java/org/olat/course/nodes/iq/IQEditReplaceWizard.java @@ -63,7 +63,6 @@ import org.olat.ims.qti.export.QTIExportEssayItemFormatConfig; import org.olat.ims.qti.export.QTIExportFIBItemFormatConfig; import org.olat.ims.qti.export.QTIExportFormatter; import org.olat.ims.qti.export.QTIExportFormatterCSVType1; -import org.olat.ims.qti.export.QTIExportFormatterCSVType2; import org.olat.ims.qti.export.QTIExportFormatterCSVType3; import org.olat.ims.qti.export.QTIExportItemFormatConfig; import org.olat.ims.qti.export.QTIExportKPRIMItemFormatConfig; @@ -204,7 +203,8 @@ public class IQEditReplaceWizard extends WizardController { if (courseNode instanceof IQTESTCourseNode) { formatter = new QTIExportFormatterCSVType1(ureq.getLocale(), "\t", "\"", "\r\n", false); } else if (courseNode instanceof IQSELFCourseNode) { - formatter = new QTIExportFormatterCSVType2(ureq.getLocale(), null, "\t", "\"", "\r\n", false); + formatter = new QTIExportFormatterCSVType1(ureq.getLocale(),"\t", "\"", "\r\n", false); + ((QTIExportFormatterCSVType1)formatter).setAnonymous(true); } else { formatter = new QTIExportFormatterCSVType3(ureq.getLocale(), null, "\t", "\"", "\r\n", false); } diff --git a/src/main/java/org/olat/ims/qti/export/QTIArchiver.java b/src/main/java/org/olat/ims/qti/export/QTIArchiver.java index 0d3c20272eabe46eee74e62fa3c2e740f16d35ba..43e299edec7b705d6ecc86a799bcb91db610656c 100644 --- a/src/main/java/org/olat/ims/qti/export/QTIArchiver.java +++ b/src/main/java/org/olat/ims/qti/export/QTIArchiver.java @@ -327,7 +327,8 @@ public class QTIArchiver { if (courseNode instanceof IQTESTCourseNode){ frmtr = new QTIExportFormatterCSVType1(locale, se, em, ca, tagless); } else if (courseNode instanceof IQSELFCourseNode){ - frmtr = new QTIExportFormatterCSVType2(locale, null, se, em, ca, tagless); + frmtr = new QTIExportFormatterCSVType1(locale, se, em, ca, tagless); + ((QTIExportFormatterCSVType1)frmtr).setAnonymous(true); } else { // type == 3 frmtr = new QTIExportFormatterCSVType3(locale, null, se, em, ca, tagless); } diff --git a/src/main/java/org/olat/ims/qti/export/QTIExportFormatterCSVType1.java b/src/main/java/org/olat/ims/qti/export/QTIExportFormatterCSVType1.java index c78e12889acecd5763651da95430c8f7eb310362..24ea87f11e1298b5bf059bb835107cb6715ef2c3 100644 --- a/src/main/java/org/olat/ims/qti/export/QTIExportFormatterCSVType1.java +++ b/src/main/java/org/olat/ims/qti/export/QTIExportFormatterCSVType1.java @@ -162,12 +162,18 @@ public class QTIExportFormatterCSVType1 extends QTIExportFormatter { if (qeif.getExportItemConfig(item).hasTimeCols()) { // HeaderRow1 - hR1.append(sep + sep); + hR1.append(sep); + if (!isAnonymous) { + hR1.append(sep); + } + // HeaderRow2 - hR2.append(i); - hR2.append("_"); - hR2.append(translator.translate("item.start")); - hR2.append(sep); + if (!isAnonymous) { + hR2.append(i); + hR2.append("_"); + hR2.append(translator.translate("item.start")); + hR2.append(sep); + } hR2.append(i); hR2.append("_"); @@ -231,10 +237,11 @@ public class QTIExportFormatterCSVType1 extends QTIExportFormatter { sb.append(sep); // datatime - Date date = set.getLastModified(); - sb.append(Formatter.formatDatetime(date)); - sb.append(sep); - + if (!isAnonymous) { + Date date = set.getLastModified(); + sb.append(Formatter.formatDatetime(date)); + sb.append(sep); + } Long assessDuration = set.getDuration(); // since there are resultsets created before alter table adding the field duration if (assessDuration != null) { @@ -275,12 +282,14 @@ public class QTIExportFormatterCSVType1 extends QTIExportFormatter { } if (itemFormatConfig.hasTimeCols()) { // startdatetime - if (eItem.getTimeStamp().getTime() > 0) { - sb.append(Formatter.formatDatetime(eItem.getTimeStamp())); - } else { - sb.append("n/a"); + if (!isAnonymous) { + if (eItem.getTimeStamp().getTime() > 0) { + sb.append(Formatter.formatDatetime(eItem.getTimeStamp())); + } else { + sb.append("n/a"); + } + sb.append(sep); } - sb.append(sep); // column duration Long itemDuration = eItem.getDuration(); @@ -296,7 +305,12 @@ public class QTIExportFormatterCSVType1 extends QTIExportFormatter { // points if (itemFormatConfig.hasPointCol()) sb.append(sep); // startdatetime, column duration - if (itemFormatConfig.hasTimeCols()) sb.append(sep + sep); + if (itemFormatConfig.hasTimeCols()) { + sb.append(sep); + if (!isAnonymous) { + sb.append(sep); + } + } } } } @@ -465,7 +479,9 @@ public class QTIExportFormatterCSVType1 extends QTIExportFormatter { hr1Intro.append(sep); hr1Intro.append(sep); hr1Intro.append(sep); - hr1Intro.append(sep); + if (!isAnonymous) { + hr1Intro.append(sep); + } hr1Intro.append(sep); return hr1Intro.toString();// + sep + sep + sep + sep + sep + sep + sep + sep + sep; } @@ -513,9 +529,11 @@ public class QTIExportFormatterCSVType1 extends QTIExportFormatter { String ipAddress = translator.translate("column.header.ipaddress"); hr2Intro.append(ipAddress); hr2Intro.append(sep); - String date = translator.translate("column.header.date"); - hr2Intro.append(date); - hr2Intro.append(sep); + if (!isAnonymous) { + String date = translator.translate("column.header.date"); + hr2Intro.append(date); + hr2Intro.append(sep); + } String duration = translator.translate("column.header.duration"); hr2Intro.append(duration); hr2Intro.append(sep); diff --git a/src/main/java/org/olat/ims/qti/export/QTIExportFormatterCSVType2.java b/src/main/java/org/olat/ims/qti/export/QTIExportFormatterCSVType2.java deleted file mode 100644 index 57236395ac5226ef294a4216e4e023eeff0ac3ce..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/ims/qti/export/QTIExportFormatterCSVType2.java +++ /dev/null @@ -1,527 +0,0 @@ -/** -* OLAT - Online Learning and Training<br> -* http://www.olat.org -* <p> -* Licensed under the Apache License, Version 2.0 (the "License"); <br> -* you may not use this file except in compliance with the License.<br> -* You may obtain a copy of the License at -* <p> -* http://www.apache.org/licenses/LICENSE-2.0 -* <p> -* Unless required by applicable law or agreed to in writing,<br> -* software distributed under the License is distributed on an "AS IS" BASIS, <br> -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> -* See the License for the specific language governing permissions and <br> -* limitations under the License. -* <p> -* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br> -* University of Zurich, Switzerland. -* <hr> -* <a href="http://www.openolat.org"> -* OpenOLAT - Online Learning and Training</a><br> -* This file has been modified by the OpenOLAT community. Changes are licensed -* under the Apache 2.0 license as the original file. -*/ - -package org.olat.ims.qti.export; - -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -import org.apache.commons.lang.StringEscapeUtils; -import org.olat.core.logging.OLATRuntimeException; -import org.olat.core.util.Formatter; -import org.olat.core.util.filter.FilterFactory; -import org.olat.ims.qti.editor.beecom.parser.ItemParser; -import org.olat.ims.qti.export.helper.IdentityAnonymizerCallback; -import org.olat.ims.qti.export.helper.QTIItemObject; - -/** - * Initial Date: May 23, 2006 <br> - * - * @author Alexander Schneider - */ -public class QTIExportFormatterCSVType2 extends QTIExportFormatter { - private String fileNamePrefix = "SELF_"; - private int type = 2; - // Delimiters and file name suffix for the export file - private String sep; // fields separated by - private String emb; // fields embedded by - private String car; // carriage return - // Author can export the mattext without HTML tags - // especially used for the results export of matrix questions created by QANT - private boolean tagless; - - // CELFI#107 - private int cut = 30; - // CELFI#107 END - - protected int row_counter = 1; - protected int loop_counter = 0; - protected Long keyBefore = null; - - /** - * @param locale - * @param type - * @param anonymizerCallback - * @param delimiter - * @param Map - * qtiExportFormatConfig with (QTIExportItemXYZ.class,IQTIExportItemFormatConfig) - */ - - public QTIExportFormatterCSVType2(Locale locale, IdentityAnonymizerCallback anonymizerCallback, String sep, String emb, String car, boolean tagless) { - super(locale, anonymizerCallback); - this.sep = sep; - this.emb = emb; - this.car = car; - this.tagless = tagless; - } - - public void openReport() { - if (qtiItemObjectList == null) { throw new OLATRuntimeException(null, "Can not format report when qtiItemObjectList is null", null); } - - if (mapWithExportItemConfigs == null) { - // while deleting a selftest node the formatter has no config consiting of user input - setDefaultQTIItemConfigs(); - } - - QTIExportItemFactory qeif = new QTIExportItemFactory(mapWithExportItemConfigs); - - // // // Preparing HeaderRow 1 and HeaderRow2 - StringBuilder hR1 = new StringBuilder(); - StringBuilder hR2 = new StringBuilder(); - - int i = 1; - for (Iterator<QTIItemObject> iter = qtiItemObjectList.iterator(); iter.hasNext();) { - QTIItemObject item = iter.next(); - - if (displayItem(qeif.getExportItemConfig(item))) { - hR1.append(emb); - hR1.append(escape(item.getItemTitle())); - - // CELFI#107 - String question = item.getQuestionText(); - question = FilterFactory.getXSSFilter(-1).filter(question); - question = FilterFactory.getHtmlTagsFilter().filter(question); - - if (question.length() > cut) { - question = question.substring(0, cut) + "..."; - } - question = StringEscapeUtils.unescapeHtml(question); - hR1.append(": " + escape(question)); - // CELFI#107 END - - hR1.append(emb); - - if (qeif.getExportItemConfig(item).hasResponseCols()) { - List<String> responseColumnHeaders = item.getResponseColumnHeaders(); - for (Iterator<String> iterator = responseColumnHeaders.iterator(); iterator.hasNext();) { - // HeaderRow1 - hR1.append(sep); - // HeaderRow2 - String columnHeader = iterator.next(); - hR2.append(i); - hR2.append("_"); - hR2.append(columnHeader); - hR2.append(sep); - } - } - - if (qeif.getExportItemConfig(item).hasPositionsOfResponsesCol()) { - // HeaderRow1 - hR1.append(sep); - // HeaderRow2 - hR2.append(i); - hR2.append("_"); - hR2.append(translator.translate("item.positions")); - hR2.append(sep); - } - - if (qeif.getExportItemConfig(item).hasPointCol()) { - // HeaderRow1 - hR1.append(sep); - // HeaderRow2 - hR2.append(i); - hR2.append("_"); - hR2.append(translator.translate("item.score")); - hR2.append(sep); - } - - if (qeif.getExportItemConfig(item).hasTimeCols()) { - // HeaderRow1 - hR1.append(sep + sep); - // HeaderRow2 - hR2.append(i); - hR2.append("_"); - hR2.append(translator.translate("item.start")); - hR2.append(sep); - - hR2.append(i); - hR2.append("_"); - hR2.append(translator.translate("item.duration")); - hR2.append(sep); - } - i++; - } - } - // // // HeaderRow1Intro - sb.append(createHeaderRow1Intro()); - - // // // HeaderRow1 - sb.append(hR1.toString()); - sb.append(car); - - // // // HeaderRow2Intro - sb.append(createHeaderRow2Intro()); - - // // // HeaderRow2 - sb.append(hR2.toString()); - sb.append(car); - } - - public void openResultSet(QTIExportSet set) { - float assessPoints = set.getScore(); - - Long key = set.getIdentity().getKey(); - if (!key.equals(keyBefore)) { - loop_counter++; - keyBefore = key; - } - if (anonymizerCallback == null) sb.append(row_counter); - else sb.append(anonymizerCallback.getAnonymizedUserName(set.getIdentity())); - sb.append(sep); - sb.append(loop_counter); - sb.append(sep); - sb.append(assessPoints); - sb.append(sep); - - // datatime - Date date = set.getLastModified(); - sb.append(Formatter.formatDatetime(date)); - sb.append(sep); - - Long assessDuration = set.getDuration(); - // since there are resultsets created before alter table adding the field duration - if (assessDuration != null) { - sb.append(Math.round(assessDuration.longValue() / 1000)); - } else { - sb.append("n/a"); - } - sb.append(sep); - } - - public void visit(QTIExportItem eItem) { - List<String> responseColumns = eItem.getResponseColumns(); - QTIExportItemFormatConfig itemFormatConfig = eItem.getConfig(); - - if (displayItem(itemFormatConfig)) { - if (itemFormatConfig.hasResponseCols()) { - for (Iterator<String> iter = responseColumns.iterator(); iter.hasNext();) { - String responseColumn = iter.next(); - sb.append(emb); - sb.append(escape(responseColumn)); - sb.append(emb); - sb.append(sep); - } - } - - if (itemFormatConfig.hasPositionsOfResponsesCol()) { - sb.append(eItem.getPositionsOfResponses()); - sb.append(sep); - } - - if (eItem.hasResult()) { - if (itemFormatConfig.hasPointCol()) { - // points - sb.append(eItem.getScore()); - sb.append(sep); - } - if (itemFormatConfig.hasTimeCols()) { - // startdatetime - if (eItem.getTimeStamp().getTime() > 0) { - sb.append(Formatter.formatDatetime(eItem.getTimeStamp())); - } else { - sb.append("n/a"); - } - sb.append(sep); - - // column duration - Long itemDuration = eItem.getDuration(); - if (itemDuration != null) { - sb.append(itemDuration.longValue() / 1000); - } else { - sb.append("n/a"); - } - sb.append(sep); - } - } else { - // points - if (itemFormatConfig.hasPointCol()) sb.append(sep); - // startdatetime, column duration - if (itemFormatConfig.hasTimeCols()) sb.append(sep + sep); - } - } - } - - public void closeResultSet() { - sb.append(car); - row_counter++; - } - - public void closeReport() { - if (qtiItemObjectList == null) { throw new OLATRuntimeException(null, "Can not format report when qtiItemObjectList is null", null); } - String legend = translator.translate("legend"); - sb.append(car + car); - sb.append(legend); - sb.append(car + car); - int y = 1; - for (Iterator<QTIItemObject> iter = qtiItemObjectList.iterator(); iter.hasNext();) { - QTIItemObject element = iter.next(); - - sb.append(element.getItemIdent()); - sb.append(sep); - sb.append(emb); - sb.append(escape(element.getItemTitle())); - sb.append(emb); - sb.append(car); - - sb.append(sep + sep); - sb.append("minValue"); - sb.append(sep); - sb.append(element.getItemMinValue()); - sb.append(car); - - sb.append(sep + sep); - sb.append("maxValue"); - sb.append(sep); - sb.append(element.getItemMaxValue()); - sb.append(car); - - sb.append(sep + sep); - sb.append("cutValue"); - sb.append(sep); - sb.append(element.getItemCutValue()); - sb.append(car); - - // CELFI#107 - sb.append(sep + sep + sep + sep); - String question = element.getQuestionText(); - if (tagless) { - question = FilterFactory.getXSSFilter(-1).filter(question); - question = FilterFactory.getHtmlTagsFilter().filter(question); - } - question = StringEscapeUtils.unescapeHtml(question); - sb.append(question); - sb.append(car); - // CELFI#107 END - - List<String> responseLabelMaterials = element.getResponseLabelMaterials(); - - for (int i = 0; i < element.getResponseIdentifier().size(); i++) { - sb.append(sep + sep); - sb.append(y); - sb.append("_"); - sb.append(element.getItemType()); - sb.append(i + 1); - sb.append(sep); - sb.append(element.getResponseIdentifier().get(i)); - sb.append(sep); - - if (responseLabelMaterials != null) { - String s = responseLabelMaterials.get(i); - s = StringEscapeUtils.unescapeHtml(s); - if (tagless) { - s = s.replaceAll("\\<.*?\\>", ""); - } - sb.append(Formatter.stripTabsAndReturns(s)); - } - sb.append(car); - } - y++; - } - - sb.append(car + car); - sb.append("SCQ"); - sb.append(sep); - sb.append("Single Choice Question"); - sb.append(car); - sb.append("MCQ"); - sb.append(sep); - sb.append("Multiple Choice Question"); - sb.append(car); - sb.append("FIB"); - sb.append(sep); - sb.append("Fill in the blank"); - sb.append(car); - sb.append("ESS"); - sb.append(sep); - sb.append("Essay"); - sb.append(car); - sb.append("KPR"); - sb.append(sep); - sb.append("Kprim (K-Type)"); - - sb.append(car + car); - sb.append("R:"); - sb.append(sep); - sb.append("Radio button (SCQ)"); - sb.append(car); - sb.append("C:"); - sb.append(sep); - sb.append("Check box (MCQ or KPR)"); - sb.append(car); - sb.append("B:"); - sb.append(sep); - sb.append("Blank (FIB)"); - sb.append(car); - sb.append("A:"); - sb.append(sep); - sb.append("Area (ESS)"); - - sb.append(car + car); - sb.append("nx_Ry"); - sb.append(sep); - sb.append("Radio Button y of SCQ x, e.g. 1_R1"); - sb.append(car); - sb.append("x_Cy"); - sb.append(sep); - sb.append("Check Box y of MCQ x or two Radio Buttons y of KPR x, e.g. 3_C2"); - sb.append(car); - sb.append("x_By"); - sb.append(sep); - sb.append("Blank y of FIB x, e.g. 17_B2"); - sb.append(car); - sb.append("x_Ay"); - sb.append(sep); - sb.append("Area y of ESS x, e.g. 4_A1"); - - sb.append(car + car); - sb.append("Kprim:"); - sb.append(sep); - sb.append("'+' = yes"); - sb.append(sep); - sb.append("'-' = no"); - sb.append(sep); - sb.append("'.' = no answer"); - sb.append(sep); - } - - public String getReport() { - return sb.toString(); - } - - private String createHeaderRow1Intro() { - return sep + sep + sep + sep + sep; - } - - /** - * Creates header line for all types - * - * @param theType - * @return header line for download - */ - private String createHeaderRow2Intro() { - - StringBuilder hr2Intro = new StringBuilder(); - - // header for personalized download (iqtest) - String sequentialNumber = translator.translate("column.header.seqnum"); - - String num = translator.translate("column.header.number"); - String assessPoint = translator.translate("column.header.assesspoints"); - String date = translator.translate("column.header.date"); - String duration = translator.translate("column.header.duration"); - - hr2Intro.append(sequentialNumber); - hr2Intro.append(sep); - hr2Intro.append(num); - hr2Intro.append(sep); - hr2Intro.append(assessPoint); - hr2Intro.append(sep); - hr2Intro.append(date); - hr2Intro.append(sep); - hr2Intro.append(duration); - hr2Intro.append(sep); - return hr2Intro.toString(); - } - - public void setKeyBefore(Long keyBefore) { - this.keyBefore = keyBefore; - } - - public String getFileNamePrefix() { - return fileNamePrefix; - } - - /* - * (non-Javadoc) - * @see org.olat.ims.qti.export.QTIExportFormatter#getType() - */ - public int getType() { - return this.type; - } - - private boolean displayItem(QTIExportItemFormatConfig c) { - return !(!c.hasResponseCols() && !c.hasPointCol() && !c.hasTimeCols() && !c.hasPositionsOfResponsesCol()); - } - - private String escape(String s) { - // escape " with "" - strange but seems the way to go with csv files - return s.replaceAll(emb, emb + emb); - } - - private void setDefaultQTIItemConfigs() { - Map<Class<?>, QTIExportItemFormatConfig> itConfigs = new HashMap<>(); - - for (Iterator<QTIItemObject> iter = qtiItemObjectList.iterator(); iter.hasNext();) { - QTIItemObject item = iter.next(); - if (item.getItemIdent().startsWith(ItemParser.ITEM_PREFIX_SCQ)) { - if (itConfigs.get(QTIExportSCQItemFormatConfig.class) == null) { - QTIExportSCQItemFormatConfig confSCQ = new QTIExportSCQItemFormatConfig(true, false, false, false); - itConfigs.put(QTIExportSCQItemFormatConfig.class, confSCQ); - } - } else if (item.getItemIdent().startsWith(ItemParser.ITEM_PREFIX_MCQ)) { - if (itConfigs.get(QTIExportMCQItemFormatConfig.class) == null) { - QTIExportMCQItemFormatConfig confMCQ = new QTIExportMCQItemFormatConfig(true, false, false, false); - itConfigs.put(QTIExportMCQItemFormatConfig.class, confMCQ); - } - } else if (item.getItemIdent().startsWith(ItemParser.ITEM_PREFIX_KPRIM)) { - if (itConfigs.get(QTIExportKPRIMItemFormatConfig.class) == null) { - QTIExportKPRIMItemFormatConfig confKPRIM = new QTIExportKPRIMItemFormatConfig(true, false, false, false); - itConfigs.put(QTIExportKPRIMItemFormatConfig.class, confKPRIM); - } - } else if (item.getItemIdent().startsWith(ItemParser.ITEM_PREFIX_ESSAY)) { - if (itConfigs.get(QTIExportEssayItemFormatConfig.class) == null) { - QTIExportEssayItemFormatConfig confEssay = new QTIExportEssayItemFormatConfig(true, false); - itConfigs.put(QTIExportEssayItemFormatConfig.class, confEssay); - } - } else if (item.getItemIdent().startsWith(ItemParser.ITEM_PREFIX_FIB)) { - if (itConfigs.get(QTIExportFIBItemFormatConfig.class) == null) { - QTIExportFIBItemFormatConfig confFIB = new QTIExportFIBItemFormatConfig(true, false, false); - itConfigs.put(QTIExportFIBItemFormatConfig.class, confFIB); - } - } - // if cannot find the type via the ItemParser, look for the QTIItemObject type - else if (item.getItemType().equals(QTIItemObject.TYPE.A)) { - QTIExportEssayItemFormatConfig confEssay = new QTIExportEssayItemFormatConfig(true, false); - itConfigs.put(QTIExportEssayItemFormatConfig.class, confEssay); - } else if (item.getItemType().equals(QTIItemObject.TYPE.R)) { - QTIExportSCQItemFormatConfig confSCQ = new QTIExportSCQItemFormatConfig(true, false, false, false); - itConfigs.put(QTIExportSCQItemFormatConfig.class, confSCQ); - } else if (item.getItemType().equals(QTIItemObject.TYPE.C)) { - QTIExportMCQItemFormatConfig confMCQ = new QTIExportMCQItemFormatConfig(true, false, false, false); - itConfigs.put(QTIExportMCQItemFormatConfig.class, confMCQ); - } else if (item.getItemType().equals(QTIItemObject.TYPE.B)) { - QTIExportFIBItemFormatConfig confFIB = new QTIExportFIBItemFormatConfig(true, false, false); - itConfigs.put(QTIExportFIBItemFormatConfig.class, confFIB); - } else { - throw new OLATRuntimeException(null, "Can not resolve QTIItem type='" + item.getItemType() + "'", null); - } - } - mapWithExportItemConfigs = itConfigs; - } -}