use of uk.ac.ed.ph.jqtiplus.exception.QtiParseException in project openolat by klemens.
the class AssessmentObjectFormItem method extractStringResponseData.
protected Map<Identifier, StringResponseData> extractStringResponseData() {
final Map<Identifier, StringResponseData> responseMap = new HashMap<Identifier, StringResponseData>();
final Set<String> parameterNames = getRootForm().getRequestParameterSet();
for (final String name : parameterNames) {
if (name.startsWith("qtiworks_presented_")) {
final String responseIdentifierString = name.substring("qtiworks_presented_".length());
final Identifier responseIdentifier;
try {
responseIdentifier = Identifier.parseString(responseIdentifierString);
} catch (final QtiParseException e) {
// throw new BadResponseWebPayloadException("Bad response identifier encoded in parameter " + name, e);
throw new RuntimeException("Bad response identifier encoded in parameter " + name, e);
}
final String[] responseValues = getRootForm().getRequestParameterValues("qtiworks_response_" + responseIdentifierString);
final StringResponseData stringResponseData = new StringResponseData(responseValues);
responseMap.put(responseIdentifier, stringResponseData);
}
}
return responseMap;
}
use of uk.ac.ed.ph.jqtiplus.exception.QtiParseException in project OpenOLAT by OpenOLAT.
the class AbstractQtiWorksController method processResponse.
protected void processResponse(UserRequest ureq, FormItem source) {
Map<Identifier, ResponseInput> stringResponseMap = extractStringResponseData();
Map<Identifier, ResponseInput> fileResponseMap;
if (mainForm.isMultipartEnabled()) {
fileResponseMap = extractFileResponseData();
} else {
fileResponseMap = Collections.emptyMap();
}
if (source instanceof FormLink) {
FormLink button = (FormLink) source;
String cmd = button.getCmd();
if (cmd != null && cmd.startsWith("qtiworks_response_")) {
String responseIdentifierString = cmd.substring("qtiworks_response_".length());
String presentedFlag = "qtiworks_presented_".concat(responseIdentifierString);
if (mainForm.getRequestParameterSet().contains(presentedFlag)) {
Identifier responseIdentifier;
try {
responseIdentifier = getResponseIdentifierFromUniqueId(responseIdentifierString);
// Identifier.parseString(responseIdentifierString);
} catch (final QtiParseException e) {
throw new RuntimeException("Bad response identifier encoded in parameter " + cmd, e);
}
String[] responseValues;
if (button.getUserObject() instanceof EndAttemptInteraction) {
responseValues = new String[] { ((EndAttemptInteraction) button.getUserObject()).getTitle() };
} else {
responseValues = new String[] { "submit" };
}
StringInput stringResponseData = new StringInput(responseValues);
stringResponseMap.put(responseIdentifier, stringResponseData);
}
}
}
String candidateComment = extractComment();
fireResponse(ureq, source, stringResponseMap, fileResponseMap, candidateComment);
}
use of uk.ac.ed.ph.jqtiplus.exception.QtiParseException in project OpenOLAT by OpenOLAT.
the class AbstractQtiWorksController method extractStringResponseData.
protected Map<Identifier, ResponseInput> extractStringResponseData() {
final Map<Identifier, ResponseInput> responseMap = new HashMap<>();
final Set<String> parameterNames = mainForm.getRequestParameterSet();
for (final String name : parameterNames) {
if (name.startsWith("qtiworks_presented_")) {
final String responseIdentifierString = name.substring("qtiworks_presented_".length());
final Identifier responseIdentifier;
try {
responseIdentifier = getResponseIdentifierFromUniqueId(responseIdentifierString);
// responseIdentifier = Identifier.parseString(responseIdentifierString);
} catch (final QtiParseException e) {
// throw new BadResponseWebPayloadException("Bad response identifier encoded in parameter " + name, e);
throw new RuntimeException("Bad response identifier encoded in parameter " + name, e);
}
String[] responseBase64Values = mainForm.getRequestParameterValues("qtiworks_response_64_" + responseIdentifierString);
if (responseBase64Values != null && responseBase64Values.length == 1) {
// only used from drawing interaction as image/png
String responseData = responseBase64Values[0];
if (responseData.startsWith(PNG_BASE64_PREFIX)) {
byte[] file = Base64.decodeBase64(responseData.substring(PNG_BASE64_PREFIX.length(), responseData.length()));
final Base64Input stringResponseData = new Base64Input("image/png", file);
responseMap.put(responseIdentifier, stringResponseData);
}
} else {
final String[] responseValues = mainForm.getRequestParameterValues("qtiworks_response_" + responseIdentifierString);
if (responseValues != null && responseValues.length > 0) {
for (int i = responseValues.length; i-- > 0; ) {
responseValues[i] = FilterFactory.getXMLValidCharacterFilter().filter(responseValues[i]);
}
}
final StringInput stringResponseData = new StringInput(responseValues);
responseMap.put(responseIdentifier, stringResponseData);
}
}
}
return responseMap;
}
use of uk.ac.ed.ph.jqtiplus.exception.QtiParseException in project OpenOLAT by OpenOLAT.
the class AssessmentObjectFormItem method extractStringResponseData.
protected Map<Identifier, StringResponseData> extractStringResponseData() {
final Map<Identifier, StringResponseData> responseMap = new HashMap<Identifier, StringResponseData>();
final Set<String> parameterNames = getRootForm().getRequestParameterSet();
for (final String name : parameterNames) {
if (name.startsWith("qtiworks_presented_")) {
final String responseIdentifierString = name.substring("qtiworks_presented_".length());
final Identifier responseIdentifier;
try {
responseIdentifier = Identifier.parseString(responseIdentifierString);
} catch (final QtiParseException e) {
// throw new BadResponseWebPayloadException("Bad response identifier encoded in parameter " + name, e);
throw new RuntimeException("Bad response identifier encoded in parameter " + name, e);
}
final String[] responseValues = getRootForm().getRequestParameterValues("qtiworks_response_" + responseIdentifierString);
final StringResponseData stringResponseData = new StringResponseData(responseValues);
responseMap.put(responseIdentifier, stringResponseData);
}
}
return responseMap;
}
use of uk.ac.ed.ph.jqtiplus.exception.QtiParseException in project OpenOLAT by OpenOLAT.
the class AssessmentObjectFormItem method extractFileResponseData.
protected Map<Identifier, MultipartFileInfos> extractFileResponseData() {
Map<Identifier, MultipartFileInfos> fileResponseMap = new HashMap<Identifier, MultipartFileInfos>();
Set<String> parameterNames = new HashSet<>(getRootForm().getRequestMultipartFilesSet());
parameterNames.addAll(getRootForm().getRequestParameterSet());
for (String name : parameterNames) {
if (name.startsWith("qtiworks_uploadpresented_")) {
String responseIdentifierString = name.substring("qtiworks_uploadpresented_".length());
Identifier responseIdentifier;
try {
responseIdentifier = Identifier.parseString(responseIdentifierString);
} catch (final QtiParseException e) {
throw new RuntimeException("Bad response identifier encoded in parameter " + name, e);
}
String multipartName = "qtiworks_uploadresponse_" + responseIdentifierString;
MultipartFileInfos multipartFile = getRootForm().getRequestMultipartFileInfos(multipartName);
if (multipartFile == null) {
throw new RuntimeException("Expected to find multipart file with name " + multipartName);
}
fileResponseMap.put(responseIdentifier, multipartFile);
}
}
return fileResponseMap;
}
Aggregations