use of org.olat.course.run.scoring.ScoreCalculator in project openolat by klemens.
the class STCourseNode method postImportCopy.
private void postImportCopy(CourseEnvironmentMapper envMapper) {
ScoreCalculator calculator = getScoreCalculator();
boolean changed = false;
if (StringHelper.containsNonWhitespace(calculator.getScoreExpression())) {
String score = calculator.getScoreExpression();
String processedExpression = KeyAndNameConverter.convertExpressionNameToKey(score, envMapper);
processedExpression = KeyAndNameConverter.convertExpressionKeyToKey(score, envMapper);
if (!processedExpression.equals(score)) {
calculator.setScoreExpression(processedExpression);
changed = true;
}
}
if (StringHelper.containsNonWhitespace(calculator.getPassedExpression())) {
String passed = calculator.getPassedExpression();
String processedExpression = KeyAndNameConverter.convertExpressionNameToKey(passed, envMapper);
processedExpression = KeyAndNameConverter.convertExpressionKeyToKey(passed, envMapper);
if (!processedExpression.equals(passed)) {
calculator.setScoreExpression(processedExpression);
changed = true;
}
}
if (changed) {
setScoreCalculator(calculator);
}
}
use of org.olat.course.run.scoring.ScoreCalculator in project openolat by klemens.
the class STCourseNode method updateModuleConfigDefaults.
/**
* Update the module configuration to have all mandatory configuration flags
* set to usefull default values
*
* @param isNewNode true: an initial configuration is set; false: upgrading
* from previous node configuration version, set default to maintain
* previous behaviour
*/
@Override
public void updateModuleConfigDefaults(boolean isNewNode) {
ModuleConfiguration config = getModuleConfiguration();
if (isNewNode) {
// use defaults for new course building blocks
config.setBooleanEntry(STCourseNodeEditController.CONFIG_KEY_ALLOW_RELATIVE_LINKS, Boolean.FALSE.booleanValue());
// set the default display to peekview in two columns
config.setStringValue(STCourseNodeEditController.CONFIG_KEY_DISPLAY_TYPE, STCourseNodeEditController.CONFIG_VALUE_DISPLAY_PEEKVIEW);
config.setIntValue(STCourseNodeEditController.CONFIG_KEY_COLUMNS, 2);
DeliveryOptions defaultOptions = DeliveryOptions.defaultWithGlossary();
config.set(SPEditController.CONFIG_KEY_DELIVERYOPTIONS, defaultOptions);
config.setConfigurationVersion(3);
scoreCalculator = new ScoreCalculator();
scoreCalculator.setFailedType(FailedEvaluationType.failedAsNotPassedAfterEndDate);
} else {
// update to version 2
if (config.getConfigurationVersion() < 2) {
// use values accoring to previous functionality
config.setBooleanEntry(STCourseNodeEditController.CONFIG_KEY_ALLOW_RELATIVE_LINKS, Boolean.FALSE.booleanValue());
// calculator, se to expert mode
if (getScoreCalculator() != null) {
getScoreCalculator().setExpertMode(true);
}
config.setConfigurationVersion(2);
}
// update to version 3
if (config.getConfigurationVersion() < 3) {
String fileName = (String) config.get(STCourseNodeEditController.CONFIG_KEY_FILE);
if (fileName != null) {
// set to custom file display config
config.setStringValue(STCourseNodeEditController.CONFIG_KEY_DISPLAY_TYPE, STCourseNodeEditController.CONFIG_VALUE_DISPLAY_FILE);
} else {
// set the default display to plain vanilla TOC view in one column
config.setStringValue(STCourseNodeEditController.CONFIG_KEY_DISPLAY_TYPE, STCourseNodeEditController.CONFIG_VALUE_DISPLAY_TOC);
config.setIntValue(STCourseNodeEditController.CONFIG_KEY_COLUMNS, 1);
}
config.setConfigurationVersion(3);
}
if (config.getConfigurationVersion() < 4) {
if (config.get(SPEditController.CONFIG_KEY_DELIVERYOPTIONS) == null) {
DeliveryOptions defaultOptions = DeliveryOptions.defaultWithGlossary();
config.set(SPEditController.CONFIG_KEY_DELIVERYOPTIONS, defaultOptions);
}
config.setConfigurationVersion(4);
}
}
}
use of org.olat.course.run.scoring.ScoreCalculator in project openolat by klemens.
the class STCourseNode method getScoreCalculator.
/**
* @return Returns the scoreCalculator.
*/
@Override
public ScoreCalculator getScoreCalculator() {
if (scoreCalculator == null) {
scoreCalculator = new ScoreCalculator();
scoreCalculator.setFailedType(FailedEvaluationType.failedAsNotPassedAfterEndDate);
}
passedExpression = new Condition();
passedExpression.setConditionId("passed");
if (scoreCalculator.getPassedExpression() != null) {
passedExpression.setConditionExpression(scoreCalculator.getPassedExpression());
passedExpression.setExpertMode(true);
}
scoreExpression = new Condition();
scoreExpression.setConditionId("score");
if (scoreCalculator.getScoreExpression() != null) {
scoreExpression.setConditionExpression(scoreCalculator.getScoreExpression());
scoreExpression.setExpertMode(true);
}
failedExpression = new Condition();
failedExpression.setConditionId("failed");
if (scoreCalculator.getFailedExpression() != null) {
failedExpression.setConditionExpression(scoreCalculator.getFailedExpression());
failedExpression.setExpertMode(true);
}
return scoreCalculator;
}
use of org.olat.course.run.scoring.ScoreCalculator in project openolat by klemens.
the class STCourseNodeEditController method event.
/**
* @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest,
* org.olat.core.gui.control.Controller, org.olat.core.gui.control.Event)
*/
public void event(UserRequest ureq, Controller source, Event event) {
if (source instanceof NodeEditController) {
if (combiLinkCtr != null && combiLinkCtr.isDoProposal()) {
combiLinkCtr.setRelFilePath(CourseEditorHelper.createUniqueRelFilePathFromShortTitle(stNode, courseFolderContainer));
}
} else if (source == accessibilityCondContr) {
if (event == Event.CHANGED_EVENT) {
Condition cond = accessibilityCondContr.getCondition();
stNode.setPreConditionAccess(cond);
fireEvent(ureq, NodeEditController.NODECONFIG_CHANGED_EVENT);
}
} else if (source == deliveryOptionsCtrl) {
deliveryOptions = deliveryOptionsCtrl.getDeliveryOptions();
stNode.getModuleConfiguration().set(CONFIG_KEY_DELIVERYOPTIONS, deliveryOptions);
fireEvent(ureq, NodeEditController.NODECONFIG_CHANGED_EVENT);
} else if (source == combiLinkCtr) {
if (event == Event.DONE_EVENT) {
chosenFile = VFSManager.getRelativeItemPath(combiLinkCtr.getFile(), courseFolderContainer, null);
stNode.getModuleConfiguration().set(CONFIG_KEY_FILE, chosenFile);
fireEvent(ureq, NodeEditController.NODECONFIG_CHANGED_EVENT);
if (!myTabbedPane.containsTab(deliveryOptionsCtrl.getInitialComponent())) {
myTabbedPane.addTab(translate(PANE_TAB_DELIVERYOPTIONS), deliveryOptionsCtrl.getInitialComponent());
}
configvc.contextPut("editorEnabled", combiLinkCtr.isEditorEnabled());
}
} else if (source == securitySettingForm) {
if (event == Event.DONE_EVENT) {
boolean allowRelativeLinks = securitySettingForm.getAllowRelativeLinksConfig();
stNode.getModuleConfiguration().set(CONFIG_KEY_ALLOW_RELATIVE_LINKS, allowRelativeLinks);
stNode.getModuleConfiguration().set(CONFIG_KEY_ALLOW_COACH_EDIT, securitySettingForm.getAllowCoachEditConfig());
combiLinkCtr.setAllowEditorRelativeLinks(allowRelativeLinks);
fireEvent(ureq, NodeEditController.NODECONFIG_CHANGED_EVENT);
}
} else if (source == nodeDisplayConfigFormController) {
if (event == Event.DONE_EVENT) {
// update the module configuration
ModuleConfiguration moduleConfig = stNode.getModuleConfiguration();
nodeDisplayConfigFormController.updateModuleConfiguration(moduleConfig);
allowRelativeLinks = moduleConfig.getBooleanSafe(CONFIG_KEY_ALLOW_RELATIVE_LINKS);
// update some class vars
if (CONFIG_VALUE_DISPLAY_FILE.equals(moduleConfig.getStringValue(CONFIG_KEY_DISPLAY_TYPE))) {
editorEnabled = true;
addCustomFileConfigToView(ureq);
} else {
// user generated overview
editorEnabled = false;
removeCustomFileConfigFromView();
}
fireEvent(ureq, NodeEditController.NODECONFIG_CHANGED_EVENT);
}
} else if (source == scoreEasyForm) {
if (event == Event.DONE_EVENT) {
// show warning if the score might be wrong because of the invalid nodes used for calculation
List<String> testElemWithNoResource = scoreEasyForm.getInvalidNodeDescriptions();
String msg = getWarningMessage(testElemWithNoResource);
if (msg != null) {
showWarning(msg);
}
ScoreCalculator sc = scoreEasyForm.getScoreCalulator();
/*
* OLAT-1144 bug fix if Calculation Score -> NO and Calculate passing
* score -> NO we get a ScoreCalculator == NULL !
*/
if (sc != null) {
sc.setPassedExpression(sc.getPassedExpressionFromEasyModeConfiguration());
sc.setScoreExpression(sc.getScoreExpressionFromEasyModeConfiguration());
}
// ..setScoreCalculator(sc) can handle NULL values!
stNode.setScoreCalculator(sc);
// reload form, remove deleted nodes
initScoreEasyForm(ureq);
fireEvent(ureq, NodeEditController.NODECONFIG_CHANGED_EVENT);
updateHighscoreTab();
} else if (event == Event.CANCELLED_EVENT) {
// reload form
initScoreEasyForm(ureq);
}
} else if (source == scoreExpertForm) {
if (event == Event.DONE_EVENT) {
// show warning if the score might be wrong because of the invalid nodes used for calculation
List<String> testElemWithNoResource = scoreExpertForm.getInvalidNodeDescriptions();
String msg = getWarningMessage(testElemWithNoResource);
if (msg != null) {
getWindowControl().setWarning(msg);
}
ScoreCalculator sc = scoreExpertForm.getScoreCalulator();
/*
* OLAT-1144 bug fix if a ScoreCalculator == NULL !
*/
if (sc != null) {
sc.clearEasyMode();
}
// ..setScoreCalculator(sc) can handle NULL values!
stNode.setScoreCalculator(sc);
fireEvent(ureq, NodeEditController.NODECONFIG_CHANGED_EVENT);
updateHighscoreTab();
} else if (event == Event.CANCELLED_EVENT) {
// reload form
initScoreExpertForm(ureq);
}
} else if (source == highScoreNodeConfigController) {
if (event == Event.DONE_EVENT) {
fireEvent(ureq, NodeEditController.NODECONFIG_CHANGED_EVENT);
}
}
}
Aggregations