use of org.olat.course.assessment.AssessmentMode.Status in project OpenOLAT by OpenOLAT.
the class AssessmentModeCoordinationServiceImpl method sendEvent.
private AssessmentMode sendEvent(AssessmentMode mode, Date now, boolean forceStatus) {
if (mode.getBeginWithLeadTime().compareTo(now) > 0) {
// none
Status status = mode.getStatus();
if (status != Status.leadtime && status != Status.assessment && status != Status.followup && status != Status.end) {
mode = ensureStatusOfMode(mode, Status.none);
sendEvent(AssessmentModeNotificationEvent.BEFORE, mode, assessmentModeManager.getAssessedIdentityKeys(mode));
}
} else if (mode.getBeginWithLeadTime().compareTo(now) <= 0 && mode.getBegin().compareTo(now) > 0 && mode.getBeginWithLeadTime().compareTo(mode.getBegin()) != 0) {
// leading time
Status status = mode.getStatus();
if (status != Status.assessment && status != Status.followup && status != Status.end) {
mode = ensureStatusOfMode(mode, Status.leadtime);
sendEvent(AssessmentModeNotificationEvent.LEADTIME, mode, assessmentModeManager.getAssessedIdentityKeys(mode));
}
} else if (mode.isManualBeginEnd() && !forceStatus) {
// what to do in manual mode
if (mode.getStatus() == Status.followup) {
if (mode.getEndWithFollowupTime().compareTo(now) < 0) {
mode = ensureStatusOfMode(mode, Status.end);
sendEvent(AssessmentModeNotificationEvent.END, mode, assessmentModeManager.getAssessedIdentityKeys(mode));
}
}
} else {
if (mode.getBegin().compareTo(now) <= 0 && mode.getEnd().compareTo(now) > 0) {
mode = ensureStatusOfMode(mode, Status.assessment);
sendEvent(AssessmentModeNotificationEvent.START_ASSESSMENT, mode, assessmentModeManager.getAssessedIdentityKeys(mode));
// message 5 minutes before end
Calendar cal = Calendar.getInstance();
cal.setTime(mode.getEnd());
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
cal.add(Calendar.MINUTE, -6);
if (now.after(cal.getTime())) {
sendEvent(AssessmentModeNotificationEvent.STOP_WARNING, mode, null);
}
} else if (mode.getEnd().compareTo(now) <= 0 && mode.getEndWithFollowupTime().compareTo(now) > 0) {
if (mode.getFollowupTime() > 0) {
mode = ensureStatusOfMode(mode, Status.followup);
sendEvent(AssessmentModeNotificationEvent.STOP_ASSESSMENT, mode, assessmentModeManager.getAssessedIdentityKeys(mode));
} else {
mode = ensureStatusOfMode(mode, Status.end);
sendEvent(AssessmentModeNotificationEvent.END, mode, assessmentModeManager.getAssessedIdentityKeys(mode));
}
} else if (mode.getEndWithFollowupTime().compareTo(now) <= 0) {
mode = ensureStatusOfMode(mode, Status.end);
sendEvent(AssessmentModeNotificationEvent.END, mode, assessmentModeManager.getAssessedIdentityKeys(mode));
}
}
manageListenersOfCoordinatedMode(mode);
return mode;
}
use of org.olat.course.assessment.AssessmentMode.Status in project openolat by klemens.
the class AssessmentModeListController method doConfirmDelete.
private void doConfirmDelete(UserRequest ureq, List<AssessmentMode> modeToDelete) {
StringBuilder sb = new StringBuilder();
boolean canDelete = true;
for (AssessmentMode mode : modeToDelete) {
if (sb.length() > 0)
sb.append(", ");
sb.append(mode.getName());
Status status = mode.getStatus();
if (status == Status.leadtime || status == Status.assessment || status == Status.followup) {
canDelete = false;
}
}
if (canDelete) {
String names = StringHelper.escapeHtml(sb.toString());
String title = translate("confirm.delete.title");
String text = translate("confirm.delete.text", names);
deleteDialogBox = activateYesNoDialog(ureq, title, text, deleteDialogBox);
deleteDialogBox.setUserObject(modeToDelete);
} else {
showWarning("error.in.assessment");
}
}
use of org.olat.course.assessment.AssessmentMode.Status in project openolat by klemens.
the class AssessmentModeListModel method getValueAt.
@Override
public Object getValueAt(AssessmentMode mode, int col) {
switch(Cols.values()[col]) {
case status:
{
List<String> warnings = null;
Status status = mode.getStatus();
try {
if (StringHelper.containsNonWhitespace(mode.getStartElement())) {
ICourse course = CourseFactory.loadCourse(mode.getRepositoryEntry());
CourseNode node = course.getRunStructure().getNode(mode.getStartElement());
if (node == null) {
warnings = new ArrayList<>(2);
warnings.add(translator.translate("warning.missing.start.element"));
}
}
if (StringHelper.containsNonWhitespace(mode.getElementList())) {
ICourse course = CourseFactory.loadCourse(mode.getRepositoryEntry());
String elements = mode.getElementList();
for (String element : elements.split(",")) {
CourseNode node = course.getRunStructure().getNode(element);
if (node == null) {
if (warnings == null) {
warnings = new ArrayList<>(2);
}
warnings.add(translator.translate("warning.missing.element"));
break;
}
}
}
} catch (CorruptedCourseException e) {
log.error("", e);
if (warnings == null) {
warnings = new ArrayList<>(2);
}
warnings.add(translator.translate("cif.error.corrupted"));
}
return new EnhancedStatus(status, warnings);
}
case course:
return mode.getRepositoryEntry().getDisplayname();
case externalId:
return mode.getRepositoryEntry().getExternalId();
case externalRef:
return mode.getRepositoryEntry().getExternalRef();
case name:
return mode.getName();
case begin:
return mode.getBegin();
case end:
return mode.getEnd();
case leadTime:
return mode.getLeadTime();
case followupTime:
return mode.getFollowupTime();
case target:
return mode.getTargetAudience();
case start:
{
boolean canStart = mode.isManualBeginEnd();
if (canStart) {
canStart = coordinationService.canStart(mode);
}
return canStart;
}
case stop:
{
boolean canStop = mode.isManualBeginEnd();
if (canStop) {
canStop = coordinationService.canStop(mode);
}
return canStop;
}
}
return null;
}
use of org.olat.course.assessment.AssessmentMode.Status in project openolat by klemens.
the class ModeStatusCellRenderer method render.
@Override
public void render(Renderer renderer, StringOutput sb, Object cellValue, int row, FlexiTableComponent source, URLBuilder ubu, Translator translator) {
if (cellValue instanceof Status) {
Status status = (Status) cellValue;
renderStatus(status, sb);
} else if (cellValue instanceof EnhancedStatus) {
EnhancedStatus enStatus = (EnhancedStatus) cellValue;
renderWarning(enStatus.getWarnings(), sb);
renderStatus(enStatus.getStatus(), sb);
}
}
use of org.olat.course.assessment.AssessmentMode.Status in project openolat by klemens.
the class AssessmentModeCoordinationServiceImpl method sendEvent.
private AssessmentMode sendEvent(AssessmentMode mode, Date now, boolean forceStatus) {
if (mode.getBeginWithLeadTime().compareTo(now) > 0) {
// none
Status status = mode.getStatus();
if (status != Status.leadtime && status != Status.assessment && status != Status.followup && status != Status.end) {
mode = ensureStatusOfMode(mode, Status.none);
sendEvent(AssessmentModeNotificationEvent.BEFORE, mode, assessmentModeManager.getAssessedIdentityKeys(mode));
}
} else if (mode.getBeginWithLeadTime().compareTo(now) <= 0 && mode.getBegin().compareTo(now) > 0 && mode.getBeginWithLeadTime().compareTo(mode.getBegin()) != 0) {
// leading time
Status status = mode.getStatus();
if (status != Status.assessment && status != Status.followup && status != Status.end) {
mode = ensureStatusOfMode(mode, Status.leadtime);
sendEvent(AssessmentModeNotificationEvent.LEADTIME, mode, assessmentModeManager.getAssessedIdentityKeys(mode));
}
} else if (mode.isManualBeginEnd() && !forceStatus) {
// what to do in manual mode
if (mode.getStatus() == Status.followup) {
if (mode.getEndWithFollowupTime().compareTo(now) < 0) {
mode = ensureStatusOfMode(mode, Status.end);
sendEvent(AssessmentModeNotificationEvent.END, mode, assessmentModeManager.getAssessedIdentityKeys(mode));
}
}
} else {
if (mode.getBegin().compareTo(now) <= 0 && mode.getEnd().compareTo(now) > 0) {
mode = ensureStatusOfMode(mode, Status.assessment);
sendEvent(AssessmentModeNotificationEvent.START_ASSESSMENT, mode, assessmentModeManager.getAssessedIdentityKeys(mode));
// message 5 minutes before end
Calendar cal = Calendar.getInstance();
cal.setTime(mode.getEnd());
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
cal.add(Calendar.MINUTE, -6);
if (now.after(cal.getTime())) {
sendEvent(AssessmentModeNotificationEvent.STOP_WARNING, mode, null);
}
} else if (mode.getEnd().compareTo(now) <= 0 && mode.getEndWithFollowupTime().compareTo(now) > 0) {
if (mode.getFollowupTime() > 0) {
mode = ensureStatusOfMode(mode, Status.followup);
sendEvent(AssessmentModeNotificationEvent.STOP_ASSESSMENT, mode, assessmentModeManager.getAssessedIdentityKeys(mode));
} else {
mode = ensureStatusOfMode(mode, Status.end);
sendEvent(AssessmentModeNotificationEvent.END, mode, assessmentModeManager.getAssessedIdentityKeys(mode));
}
} else if (mode.getEndWithFollowupTime().compareTo(now) <= 0) {
mode = ensureStatusOfMode(mode, Status.end);
sendEvent(AssessmentModeNotificationEvent.END, mode, assessmentModeManager.getAssessedIdentityKeys(mode));
}
}
manageListenersOfCoordinatedMode(mode);
return mode;
}
Aggregations