use of org.olat.modules.qpool.QuestionItemAuditLogBuilder in project openolat by klemens.
the class QuestionListController method doOpenExcelImportQTI12.
private void doOpenExcelImportQTI12(UserRequest ureq) {
removeAsListenerAndDispose(excelImportWizard);
final ItemsPackage importPackage = new ItemsPackage();
Step additionalStep = null;
if (getSource().askEditable()) {
additionalStep = new EditableStep(ureq);
}
final org.olat.ims.qti.questionimport.ImportOptions options = new org.olat.ims.qti.questionimport.ImportOptions();
options.setShuffle(true);
Step start = new org.olat.ims.qti.questionimport.QImport_1_InputStep(ureq, importPackage, options, additionalStep);
StepRunnerCallback finish = new StepRunnerCallback() {
@Override
public Step execute(UserRequest uureq, WindowControl wControl, StepsRunContext runContext) {
List<ItemAndMetadata> itemsToImport = importPackage.getItems();
QTIQPoolServiceProvider spi = CoreSpringFactory.getImpl(QTIQPoolServiceProvider.class);
List<QuestionItem> importItems = spi.importBeecomItem(getIdentity(), itemsToImport, getLocale());
for (QuestionItem item : importItems) {
QuestionItemAuditLogBuilder builder = qpoolService.createAuditLogBuilder(getIdentity(), Action.CREATE_QUESTION_ITEM_BY_IMPORT);
builder.withAfter(item);
qpoolService.persist(builder.create());
}
boolean editable = true;
if (getSource().askEditable()) {
Object editableCtx = runContext.get("editable");
editable = (editableCtx instanceof Boolean) ? ((Boolean) editableCtx).booleanValue() : false;
}
qpoolService.index(importItems);
int postImported = getSource().postImport(importItems, editable);
if (postImported > 0) {
getItemsTable().reset();
}
return StepsMainRunController.DONE_MODIFIED;
}
};
excelImportWizard = new StepsMainRunController(ureq, getWindowControl(), start, finish, null, translate("import.excellike.12"), "o_sel_qpool_excel_import_wizard");
listenTo(excelImportWizard);
getWindowControl().pushAsModalDialog(excelImportWizard.getInitialComponent());
}
use of org.olat.modules.qpool.QuestionItemAuditLogBuilder in project openolat by klemens.
the class QuestionListController method doOpenExcelImportQTI21.
private void doOpenExcelImportQTI21(UserRequest ureq) {
removeAsListenerAndDispose(excelImportWizard);
Step additionalStep = null;
if (getSource().askEditable()) {
additionalStep = new EditableStep(ureq);
}
final AssessmentItemsPackage importPackage = new AssessmentItemsPackage();
final ImportOptions options = new ImportOptions();
options.setShuffle(true);
Step start = new QImport_1_InputStep(ureq, importPackage, options, additionalStep);
StepRunnerCallback finish = new StepRunnerCallback() {
@Override
public Step execute(UserRequest uureq, WindowControl wControl, StepsRunContext runContext) {
QTI21QPoolServiceProvider spi = CoreSpringFactory.getImpl(QTI21QPoolServiceProvider.class);
List<AssessmentItemAndMetadata> items = importPackage.getItems();
List<QuestionItem> importItems = new ArrayList<>();
for (AssessmentItemAndMetadata item : items) {
QuestionItem importedItem = spi.importExcelItem(getIdentity(), item, getLocale());
if (importedItem != null) {
importItems.add(importedItem);
}
}
for (QuestionItem item : importItems) {
QuestionItemAuditLogBuilder builder = qpoolService.createAuditLogBuilder(getIdentity(), Action.CREATE_QUESTION_ITEM_BY_IMPORT);
builder.withAfter(item);
qpoolService.persist(builder.create());
}
boolean editable = true;
if (getSource().askEditable()) {
Object editableCtx = runContext.get("editable");
editable = (editableCtx instanceof Boolean) ? ((Boolean) editableCtx).booleanValue() : false;
}
qpoolService.index(importItems);
int postImported = getSource().postImport(importItems, editable);
if (postImported > 0) {
getItemsTable().reset();
}
return StepsMainRunController.DONE_MODIFIED;
}
};
excelImportWizard = new StepsMainRunController(ureq, getWindowControl(), start, finish, null, translate("import.excellike.21"), "o_sel_qpool_excel_import_wizard");
listenTo(excelImportWizard);
getWindowControl().pushAsModalDialog(excelImportWizard.getInitialComponent());
}
use of org.olat.modules.qpool.QuestionItemAuditLogBuilder in project openolat by klemens.
the class QuestionListController method doImportResource.
private void doImportResource(UserRequest ureq, RepositoryEntry repositoryEntry) {
List<QuestionItem> importItems = null;
if (ImsQTI21Resource.TYPE_NAME.equals(repositoryEntry.getOlatResource().getResourceableTypeName())) {
QTI21QPoolServiceProvider spi = CoreSpringFactory.getImpl(QTI21QPoolServiceProvider.class);
importItems = spi.importRepositoryEntry(getIdentity(), repositoryEntry, getLocale());
} else {
QTIQPoolServiceProvider spi = (QTIQPoolServiceProvider) CoreSpringFactory.getBean("qtiPoolServiceProvider");
importItems = spi.importRepositoryEntry(getIdentity(), repositoryEntry, getLocale());
}
for (QuestionItem item : importItems) {
QuestionItemAuditLogBuilder builder = qpoolService.createAuditLogBuilder(getIdentity(), Action.CREATE_QUESTION_ITEM_BY_IMPORT);
builder.withAfter(item);
qpoolService.persist(builder.create());
}
if (getSource().askEditable()) {
removeAsListenerAndDispose(shareItemsToSourceCtrl);
shareItemsToSourceCtrl = new ShareItemSourceOptionController(ureq, getWindowControl(), importItems, getSource());
listenTo(shareItemsToSourceCtrl);
removeAsListenerAndDispose(cmcShareItemToSource);
cmcShareItemToSource = new CloseableModalController(getWindowControl(), translate("close"), shareItemsToSourceCtrl.getInitialComponent(), true, translate("import.item"));
cmcShareItemToSource.activate();
listenTo(cmcShareItemToSource);
} else {
qpoolService.index(importItems);
int postImported = getSource().postImport(importItems, true);
if (postImported > 0) {
getItemsTable().reset();
}
if (importItems.isEmpty()) {
showWarning("import.failed");
} else {
showInfo("import.success", Integer.toString(importItems.size()));
getItemsTable().reset();
}
}
}
use of org.olat.modules.qpool.QuestionItemAuditLogBuilder in project openolat by klemens.
the class QuestionPoolMainEditorController method doCopyToMy.
private void doCopyToMy(QuestionItemShort item) {
List<QuestionItem> copiedItems = qpoolService.copyItems(getIdentity(), singletonList(item));
for (QuestionItem copy : copiedItems) {
QuestionItemAuditLogBuilder builder = qpoolService.createAuditLogBuilder(getIdentity(), Action.CREATE_QUESTION_ITEM_BY_COPY);
builder.withAfter(copy);
qpoolService.persist(builder.create());
}
showInfo("item.copied", Integer.toString(copiedItems.size()));
if (currentCtrl instanceof QuestionsController) {
((QuestionsController) currentCtrl).updateSource();
}
}
use of org.olat.modules.qpool.QuestionItemAuditLogBuilder in project openolat by klemens.
the class QuestionMetadataEditController method formOK.
@Override
protected void formOK(UserRequest ureq) {
if (item instanceof QuestionItemImpl) {
QuestionItemImpl itemImpl = (QuestionItemImpl) item;
QuestionItemAuditLogBuilder builder = qpoolService.createAuditLogBuilder(getIdentity(), Action.UPDATE_QUESTION_ITEM_METADATA);
builder.withBefore(itemImpl);
int day = learningTimeDayElement.getIntValue();
int hour = learningTimeHourElement.getIntValue();
int minute = learningTimeMinuteElement.getIntValue();
int seconds = learningTimeSecondElement.getIntValue();
String timeStr = MetadataConverterHelper.convertDuration(day, hour, minute, seconds);
itemImpl.setEducationalLearningTime(timeStr);
BigDecimal difficulty = toBigDecimal(difficultyEl.getValue());
itemImpl.setDifficulty(difficulty);
BigDecimal stdevDifficulty = toBigDecimal(stdevDifficultyEl.getValue());
itemImpl.setStdevDifficulty(stdevDifficulty);
BigDecimal differentiation = toBigDecimal(differentiationEl.getValue());
itemImpl.setDifferentiation(differentiation);
int numOfAnswerAlternatives = toInt(numAnswerAltEl.getValue());
itemImpl.setNumOfAnswerAlternatives(numOfAnswerAlternatives);
int numUsage = toInt(usageEl.getValue());
itemImpl.setUsage(numUsage);
item = qpoolService.updateItem(itemImpl);
builder.withAfter(item);
qpoolService.persist(builder.create());
fireEvent(ureq, new QItemEdited(item));
}
}
Aggregations