From a885f6dab730bbae4064e014c55f1c43c96a4d3e Mon Sep 17 00:00:00 2001 From: gnaegi <none@none> Date: Fri, 4 Apr 2014 09:28:32 +0200 Subject: [PATCH] OO-1032 implement user properties context for the QTI results download file --- .../export/QTIExportFormatterCSVType1.java | 91 +++++++++++-------- .../export/QTIExportFormatterCSVType2.java | 4 - .../export/QTIExportFormatterCSVType3.java | 6 -- .../export/_i18n/LocalStrings_de.properties | 2 +- .../export/_i18n/LocalStrings_en.properties | 2 +- .../_spring/userPropertiesContext.xml | 13 +++ 6 files changed, 68 insertions(+), 50 deletions(-) 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 9bf5738c324..c8a8bbc0461 100644 --- a/src/main/java/org/olat/ims/qti/export/QTIExportFormatterCSVType1.java +++ b/src/main/java/org/olat/ims/qti/export/QTIExportFormatterCSVType1.java @@ -34,13 +34,17 @@ import java.util.Locale; import java.util.Map; import org.apache.commons.lang.StringEscapeUtils; +import org.olat.core.id.User; import org.olat.core.id.context.BusinessControlFactory; import org.olat.core.id.context.ContextEntry; import org.olat.core.logging.OLATRuntimeException; import org.olat.core.util.Formatter; +import org.olat.core.util.StringHelper; import org.olat.core.util.filter.FilterFactory; import org.olat.ims.qti.editor.beecom.parser.ItemParser; import org.olat.ims.qti.export.helper.QTIItemObject; +import org.olat.user.UserManager; +import org.olat.user.propertyhandlers.UserPropertyHandler; /** * Initial Date: May 23, 2006 <br> @@ -62,7 +66,9 @@ public class QTIExportFormatterCSVType1 extends QTIExportFormatter { // CELFI#107 (Header question max lenght) private int cut = 30; - + // user properties + private List<UserPropertyHandler> userPropertyHandlers; + /** * @param locale * @param type @@ -79,6 +85,11 @@ public class QTIExportFormatterCSVType1 extends QTIExportFormatter { this.esc = esc; this.car = car; this.tagless = tagless; + // initialize user property handlers + UserManager um = UserManager.getInstance(); + this.userPropertyHandlers = um.getUserPropertyHandlersFor(this.getClass().getName(), true); + this.translator = um.getPropertyHandlerTranslator(this.translator); + } public void openReport() { @@ -185,30 +196,33 @@ public class QTIExportFormatterCSVType1 extends QTIExportFormatter { } public void openResultSet(QTIExportSet set) { - - String firstName = set.getFirstName(); - String lastName = set.getLastName(); - ContextEntry ce = BusinessControlFactory.getInstance().createContextEntry(set.getIdentity()); - String login = BusinessControlFactory.getInstance().getAsURIString(Collections.singletonList(ce), false); - String instUsrIdent = set.getInstitutionalUserIdentifier(); - if (instUsrIdent == null) { - instUsrIdent = translator.translate("column.field.notavailable"); - } - float assessPoints = set.getScore(); - boolean isPassed = set.getIsPassed(); - + // header for personalized download (iqtest) sb.append(row_counter); sb.append(sep); - sb.append(lastName); - sb.append(sep); - sb.append(firstName); - sb.append(sep); - sb.append(login); - sb.append(sep); - sb.append(instUsrIdent); + + // add configured user properties + User user = set.getIdentity().getUser(); + for (UserPropertyHandler userPropertyHandler : this.userPropertyHandlers) { + if (userPropertyHandler == null) { + continue; + } + String property = userPropertyHandler.getUserProperty(user, translator.getLocale()); + if (!StringHelper.containsNonWhitespace(property)) { + property = translator.translate("column.field.notavailable"); + } + sb.append(property); + sb.append(sep); + } + + // add other user and session information + ContextEntry ce = BusinessControlFactory.getInstance().createContextEntry(set.getIdentity()); + String homepage = BusinessControlFactory.getInstance().getAsURIString(Collections.singletonList(ce), false); + sb.append(homepage); sb.append(sep); + float assessPoints = set.getScore(); sb.append(assessPoints); sb.append(sep); + boolean isPassed = set.getIsPassed(); sb.append(isPassed); sb.append(sep); sb.append(set.getIp()); @@ -449,35 +463,36 @@ public class QTIExportFormatterCSVType1 extends QTIExportFormatter { // header for personalized download (iqtest) String sequentialNumber = translator.translate("column.header.seqnum"); - - String lastName = translator.translate("column.header.name"); - String firstName = translator.translate("column.header.vorname"); - String login = translator.translate("column.header.login"); - String instUsrIdent = translator.translate("column.header.instUsrIdent"); - String assessPoint = translator.translate("column.header.assesspoints"); - String passed = translator.translate("column.header.passed"); - String ipAddress = translator.translate("column.header.ipaddress"); - String date = translator.translate("column.header.date"); - String duration = translator.translate("column.header.duration"); - hr2Intro.append(sequentialNumber); hr2Intro.append(sep); - hr2Intro.append(lastName); - hr2Intro.append(sep); - hr2Intro.append(firstName); - hr2Intro.append(sep); - hr2Intro.append(login); - hr2Intro.append(sep); - hr2Intro.append(instUsrIdent); + + // add configured user properties + for (UserPropertyHandler userPropertyHandler : this.userPropertyHandlers) { + if (userPropertyHandler == null) { + continue; + } + String header = translator.translate(userPropertyHandler.i18nFormElementLabelKey()); + hr2Intro.append(header); + hr2Intro.append(sep); + } + + // add other user and session information + String homepage = translator.translate("column.header.homepage"); + hr2Intro.append(homepage); hr2Intro.append(sep); + String assessPoint = translator.translate("column.header.assesspoints"); hr2Intro.append(assessPoint); hr2Intro.append(sep); + String passed = translator.translate("column.header.passed"); hr2Intro.append(passed); hr2Intro.append(sep); + 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); + 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 index fdbf68f78ea..07c3b2333ab 100644 --- a/src/main/java/org/olat/ims/qti/export/QTIExportFormatterCSVType2.java +++ b/src/main/java/org/olat/ims/qti/export/QTIExportFormatterCSVType2.java @@ -186,10 +186,6 @@ public class QTIExportFormatterCSVType2 extends QTIExportFormatter { } public void openResultSet(QTIExportSet set) { - String instUsrIdent = set.getInstitutionalUserIdentifier(); - if (instUsrIdent == null) { - instUsrIdent = translator.translate("column.field.notavailable"); - } float assessPoints = set.getScore(); Long key = set.getIdentity().getKey(); diff --git a/src/main/java/org/olat/ims/qti/export/QTIExportFormatterCSVType3.java b/src/main/java/org/olat/ims/qti/export/QTIExportFormatterCSVType3.java index 698d03274d3..d0da3f85b8a 100644 --- a/src/main/java/org/olat/ims/qti/export/QTIExportFormatterCSVType3.java +++ b/src/main/java/org/olat/ims/qti/export/QTIExportFormatterCSVType3.java @@ -179,12 +179,6 @@ public class QTIExportFormatterCSVType3 extends QTIExportFormatter{ } public void openResultSet(QTIExportSet set) { - - String instUsrIdent = set.getInstitutionalUserIdentifier(); - if (instUsrIdent == null){ - instUsrIdent = translator.translate("column.field.notavailable"); - } - if (anonymizerCallback == null) sb.append(row_counter); else diff --git a/src/main/java/org/olat/ims/qti/export/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/ims/qti/export/_i18n/LocalStrings_de.properties index 216dfadb6d0..3f0621175b5 100644 --- a/src/main/java/org/olat/ims/qti/export/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/ims/qti/export/_i18n/LocalStrings_de.properties @@ -31,7 +31,7 @@ column.header.details=Details column.header.duration=Gesamtdauer (s) column.header.instUsrIdent=Institutionsnummer column.header.ipaddress=IP-Adresse -column.header.login=Benutzername +column.header.homepage=Homepage column.header.name=Name column.header.number=Probanddecknummer column.header.passed=Bestanden diff --git a/src/main/java/org/olat/ims/qti/export/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/ims/qti/export/_i18n/LocalStrings_en.properties index 7fcdddc7d87..50f2173e743 100644 --- a/src/main/java/org/olat/ims/qti/export/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/ims/qti/export/_i18n/LocalStrings_en.properties @@ -31,7 +31,7 @@ column.header.details=Details column.header.duration=Total time (s) column.header.instUsrIdent=Institution identifier column.header.ipaddress=IP address -column.header.login=User name +column.header.homepage=Home page column.header.name=Name column.header.number=Test person's number column.header.passed=Passed diff --git a/src/main/java/org/olat/user/propertyhandlers/_spring/userPropertiesContext.xml b/src/main/java/org/olat/user/propertyhandlers/_spring/userPropertiesContext.xml index ab037a59136..5033fbf2696 100644 --- a/src/main/java/org/olat/user/propertyhandlers/_spring/userPropertiesContext.xml +++ b/src/main/java/org/olat/user/propertyhandlers/_spring/userPropertiesContext.xml @@ -274,6 +274,19 @@ </property> </bean> </entry> + + <entry key="org.olat.ims.qti.export.QTIExportFormatterCSVType1"> + <bean class="org.olat.user.propertyhandlers.UserPropertyUsageContext"> + <property name="description" value="Columns in download file of QTI assessment results in courses" /> + <property name="propertyHandlers"> + <list> + <ref bean="userPropertyFirstName" /> + <ref bean="userPropertyLastName" /> + <ref bean="userPropertyInstitutionalUserIdentifier" /> + </list> + </property> + </bean> + </entry> <entry key="org.olat.admin.user.UsermanagerUserSearchForm"> <bean class="org.olat.user.propertyhandlers.UserPropertyUsageContext"> -- GitLab