use of org.olat.ims.qti.editor.beecom.objects.EssayResponse in project OpenOLAT by OpenOLAT.
the class ItemNode method createMemento.
public Memento createMemento() {
Question question = item.getQuestion();
// special case switches as question types are encoded into integers!!
boolean isFIB = question.getType() == Question.TYPE_FIB;
boolean isESSAY = question.getType() == Question.TYPE_ESSAY;
// Item metadata
QtiNodeMemento qnm = new QtiNodeMemento();
Map<String, Object> qtiState = new HashMap<>();
qtiState.put("ID", item.getIdent());
qtiState.put("TITLE", item.getTitle());
qtiState.put("OBJECTIVES", item.getObjectives());
// question and responses
qtiState.put("QUESTION.ID", question.getIdent());
qtiState.put("QUESTION.HINTTEXT", question.getHintText());
Material questMaterial = question.getQuestion();
qtiState.put("QUESTION.MATERIAL.ASTEXT", questMaterial.renderAsText());
List<String> ids = new ArrayList<String>();
List<String> asTexts = new ArrayList<String>();
List<String> feedbacks = new ArrayList<String>();
List<Response> responses = question.getResponses();
for (Iterator<Response> iter = responses.iterator(); iter.hasNext(); ) {
Response resp = iter.next();
if (isFIB) {
if (FIBResponse.TYPE_BLANK.equals(((FIBResponse) resp).getType())) {
asTexts.add(formatFIBResponseAsText((FIBResponse) resp));
ids.add(resp.getIdent());
feedbacks.add(QTIEditHelper.getFeedbackOlatRespText(item, resp.getIdent()));
}
} else if (isESSAY) {
asTexts.add(formatESSAYResponseAsText((EssayResponse) resp));
ids.add(resp.getIdent());
feedbacks.add(QTIEditHelper.getFeedbackOlatRespText(item, resp.getIdent()));
} else {
// not a FIB or ESSAY response
asTexts.add(resp.getContent().renderAsText());
ids.add(resp.getIdent());
feedbacks.add(QTIEditHelper.getFeedbackOlatRespText(item, resp.getIdent()));
}
}
qtiState.put("QUESTION.RESPONSES.IDS", ids);
qtiState.put("QUESTION.RESPONSES.ASTEXT", asTexts);
qtiState.put("QUESTION.RESPONSES.FEEDBACK", feedbacks);
// feedback
qtiState.put("FEEDBACK.MASTERY", QTIEditHelper.getFeedbackMasteryText(item));
qtiState.put("FEEDBACK.FAIL", QTIEditHelper.getFeedbackFailText(item));
Control control = QTIEditHelper.getControl(item);
qtiState.put("FEEDBACK.ENABLED", control.getFeedback() == 1 ? Boolean.TRUE : Boolean.FALSE);
//
qnm.setQtiState(qtiState);
//
return qnm;
}
use of org.olat.ims.qti.editor.beecom.objects.EssayResponse in project OpenOLAT by OpenOLAT.
the class QTI12To21Converter method convertEssay.
private AssessmentItemBuilder convertEssay(Item item) {
EssayAssessmentItemBuilder itemBuilder = new EssayAssessmentItemBuilder("Essay", qtiSerializer);
convertItemBasics(item, itemBuilder);
EssayQuestion question = (EssayQuestion) item.getQuestion();
EssayResponse response = question.getEssayResponse();
int cols = response.getColumns();
int rows = response.getRows();
itemBuilder.setExpectedLength(cols * rows);
itemBuilder.setExpectedLines(rows);
double score = question.getMaxValue();
itemBuilder.setMinScore(0.0d);
itemBuilder.setMaxScore(score);
return itemBuilder;
}
use of org.olat.ims.qti.editor.beecom.objects.EssayResponse in project openolat by klemens.
the class QTIEditHelper method createEssayItem.
/**
* Creates a new essay item
* @param trans
* @return New essay item.
*/
public static Item createEssayItem(Translator trans) {
// create item
Item newItem = new Item();
newItem.setIdent(EDITOR_IDENT + ":" + ITEM_TYPE_ESSAY + ":" + String.valueOf(CodeHelper.getRAMUniqueID()));
newItem.setTitle(trans.translate("editor.newquestion"));
newItem.setLabel("");
// conrols
Control control = new Control();
List<Control> controls = new ArrayList<Control>();
controls.add(control);
newItem.setItemcontrols(controls);
QTIEditHelper.setFeedbackMastery(newItem, "");
QTIEditHelper.setFeedbackFail(newItem, "");
EssayQuestion essayquestion = new EssayQuestion();
essayquestion.getQuestion().getElements().add(new Mattext(trans.translate("editor.newquestiontext")));
essayquestion.setSingleCorrect(true);
essayquestion.setSingleCorrectScore(1);
EssayResponse response = new EssayResponse();
Material mat = new Material();
mat.add(new Mattext(trans.translate("editor.newtextelement")));
response.setContent(mat);
essayquestion.getResponses().add(response);
newItem.setQuestion(essayquestion);
return newItem;
}
Aggregations