Skip to content
Snippets Groups Projects
Commit a885f6da authored by gnaegi's avatar gnaegi
Browse files

OO-1032 implement user properties context for the QTI results download file

parent fad93e5d
No related branches found
No related tags found
No related merge requests found
...@@ -34,13 +34,17 @@ import java.util.Locale; ...@@ -34,13 +34,17 @@ import java.util.Locale;
import java.util.Map; import java.util.Map;
import org.apache.commons.lang.StringEscapeUtils; 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.BusinessControlFactory;
import org.olat.core.id.context.ContextEntry; import org.olat.core.id.context.ContextEntry;
import org.olat.core.logging.OLATRuntimeException; import org.olat.core.logging.OLATRuntimeException;
import org.olat.core.util.Formatter; import org.olat.core.util.Formatter;
import org.olat.core.util.StringHelper;
import org.olat.core.util.filter.FilterFactory; import org.olat.core.util.filter.FilterFactory;
import org.olat.ims.qti.editor.beecom.parser.ItemParser; import org.olat.ims.qti.editor.beecom.parser.ItemParser;
import org.olat.ims.qti.export.helper.QTIItemObject; 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> * Initial Date: May 23, 2006 <br>
...@@ -62,7 +66,9 @@ public class QTIExportFormatterCSVType1 extends QTIExportFormatter { ...@@ -62,7 +66,9 @@ public class QTIExportFormatterCSVType1 extends QTIExportFormatter {
// CELFI#107 (Header question max lenght) // CELFI#107 (Header question max lenght)
private int cut = 30; private int cut = 30;
// user properties
private List<UserPropertyHandler> userPropertyHandlers;
/** /**
* @param locale * @param locale
* @param type * @param type
...@@ -79,6 +85,11 @@ public class QTIExportFormatterCSVType1 extends QTIExportFormatter { ...@@ -79,6 +85,11 @@ public class QTIExportFormatterCSVType1 extends QTIExportFormatter {
this.esc = esc; this.esc = esc;
this.car = car; this.car = car;
this.tagless = tagless; 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() { public void openReport() {
...@@ -185,30 +196,33 @@ public class QTIExportFormatterCSVType1 extends QTIExportFormatter { ...@@ -185,30 +196,33 @@ public class QTIExportFormatterCSVType1 extends QTIExportFormatter {
} }
public void openResultSet(QTIExportSet set) { public void openResultSet(QTIExportSet set) {
// header for personalized download (iqtest)
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();
sb.append(row_counter); sb.append(row_counter);
sb.append(sep); sb.append(sep);
sb.append(lastName);
sb.append(sep); // add configured user properties
sb.append(firstName); User user = set.getIdentity().getUser();
sb.append(sep); for (UserPropertyHandler userPropertyHandler : this.userPropertyHandlers) {
sb.append(login); if (userPropertyHandler == null) {
sb.append(sep); continue;
sb.append(instUsrIdent); }
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); sb.append(sep);
float assessPoints = set.getScore();
sb.append(assessPoints); sb.append(assessPoints);
sb.append(sep); sb.append(sep);
boolean isPassed = set.getIsPassed();
sb.append(isPassed); sb.append(isPassed);
sb.append(sep); sb.append(sep);
sb.append(set.getIp()); sb.append(set.getIp());
...@@ -449,35 +463,36 @@ public class QTIExportFormatterCSVType1 extends QTIExportFormatter { ...@@ -449,35 +463,36 @@ public class QTIExportFormatterCSVType1 extends QTIExportFormatter {
// header for personalized download (iqtest) // header for personalized download (iqtest)
String sequentialNumber = translator.translate("column.header.seqnum"); 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(sequentialNumber);
hr2Intro.append(sep); hr2Intro.append(sep);
hr2Intro.append(lastName);
hr2Intro.append(sep); // add configured user properties
hr2Intro.append(firstName); for (UserPropertyHandler userPropertyHandler : this.userPropertyHandlers) {
hr2Intro.append(sep); if (userPropertyHandler == null) {
hr2Intro.append(login); continue;
hr2Intro.append(sep); }
hr2Intro.append(instUsrIdent); 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); hr2Intro.append(sep);
String assessPoint = translator.translate("column.header.assesspoints");
hr2Intro.append(assessPoint); hr2Intro.append(assessPoint);
hr2Intro.append(sep); hr2Intro.append(sep);
String passed = translator.translate("column.header.passed");
hr2Intro.append(passed); hr2Intro.append(passed);
hr2Intro.append(sep); hr2Intro.append(sep);
String ipAddress = translator.translate("column.header.ipaddress");
hr2Intro.append(ipAddress); hr2Intro.append(ipAddress);
hr2Intro.append(sep); hr2Intro.append(sep);
String date = translator.translate("column.header.date");
hr2Intro.append(date); hr2Intro.append(date);
hr2Intro.append(sep); hr2Intro.append(sep);
String duration = translator.translate("column.header.duration");
hr2Intro.append(duration); hr2Intro.append(duration);
hr2Intro.append(sep); hr2Intro.append(sep);
......
...@@ -186,10 +186,6 @@ public class QTIExportFormatterCSVType2 extends QTIExportFormatter { ...@@ -186,10 +186,6 @@ public class QTIExportFormatterCSVType2 extends QTIExportFormatter {
} }
public void openResultSet(QTIExportSet set) { public void openResultSet(QTIExportSet set) {
String instUsrIdent = set.getInstitutionalUserIdentifier();
if (instUsrIdent == null) {
instUsrIdent = translator.translate("column.field.notavailable");
}
float assessPoints = set.getScore(); float assessPoints = set.getScore();
Long key = set.getIdentity().getKey(); Long key = set.getIdentity().getKey();
......
...@@ -179,12 +179,6 @@ public class QTIExportFormatterCSVType3 extends QTIExportFormatter{ ...@@ -179,12 +179,6 @@ public class QTIExportFormatterCSVType3 extends QTIExportFormatter{
} }
public void openResultSet(QTIExportSet set) { public void openResultSet(QTIExportSet set) {
String instUsrIdent = set.getInstitutionalUserIdentifier();
if (instUsrIdent == null){
instUsrIdent = translator.translate("column.field.notavailable");
}
if (anonymizerCallback == null) if (anonymizerCallback == null)
sb.append(row_counter); sb.append(row_counter);
else else
......
...@@ -31,7 +31,7 @@ column.header.details=Details ...@@ -31,7 +31,7 @@ column.header.details=Details
column.header.duration=Gesamtdauer (s) column.header.duration=Gesamtdauer (s)
column.header.instUsrIdent=Institutionsnummer column.header.instUsrIdent=Institutionsnummer
column.header.ipaddress=IP-Adresse column.header.ipaddress=IP-Adresse
column.header.login=Benutzername column.header.homepage=Homepage
column.header.name=Name column.header.name=Name
column.header.number=Probanddecknummer column.header.number=Probanddecknummer
column.header.passed=Bestanden column.header.passed=Bestanden
......
...@@ -31,7 +31,7 @@ column.header.details=Details ...@@ -31,7 +31,7 @@ column.header.details=Details
column.header.duration=Total time (s) column.header.duration=Total time (s)
column.header.instUsrIdent=Institution identifier column.header.instUsrIdent=Institution identifier
column.header.ipaddress=IP address column.header.ipaddress=IP address
column.header.login=User name column.header.homepage=Home page
column.header.name=Name column.header.name=Name
column.header.number=Test person's number column.header.number=Test person's number
column.header.passed=Passed column.header.passed=Passed
......
...@@ -274,6 +274,19 @@ ...@@ -274,6 +274,19 @@
</property> </property>
</bean> </bean>
</entry> </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"> <entry key="org.olat.admin.user.UsermanagerUserSearchForm">
<bean class="org.olat.user.propertyhandlers.UserPropertyUsageContext"> <bean class="org.olat.user.propertyhandlers.UserPropertyUsageContext">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment