Search in sources :

Example 16 with Status

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;
}
Also used : Status(org.olat.course.assessment.AssessmentMode.Status) Calendar(java.util.Calendar)

Example 17 with Status

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");
    }
}
Also used : Status(org.olat.course.assessment.AssessmentMode.Status) TransientAssessmentMode(org.olat.course.assessment.model.TransientAssessmentMode) AssessmentMode(org.olat.course.assessment.AssessmentMode)

Example 18 with Status

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;
}
Also used : EnhancedStatus(org.olat.course.assessment.model.EnhancedStatus) Status(org.olat.course.assessment.AssessmentMode.Status) CorruptedCourseException(org.olat.course.CorruptedCourseException) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) ICourse(org.olat.course.ICourse) CourseNode(org.olat.course.nodes.CourseNode) EnhancedStatus(org.olat.course.assessment.model.EnhancedStatus)

Example 19 with Status

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);
    }
}
Also used : EnhancedStatus(org.olat.course.assessment.model.EnhancedStatus) Status(org.olat.course.assessment.AssessmentMode.Status) EnhancedStatus(org.olat.course.assessment.model.EnhancedStatus)

Example 20 with Status

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;
}
Also used : Status(org.olat.course.assessment.AssessmentMode.Status) Calendar(java.util.Calendar)

Aggregations

Status (org.olat.course.assessment.AssessmentMode.Status)22 Date (java.util.Date)4 ICourse (org.olat.course.ICourse)4 EnhancedStatus (org.olat.course.assessment.model.EnhancedStatus)4 CourseNode (org.olat.course.nodes.CourseNode)4 ArrayList (java.util.ArrayList)2 Calendar (java.util.Calendar)2 List (java.util.List)2 FormLayoutContainer (org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer)2 CorruptedCourseException (org.olat.course.CorruptedCourseException)2 AssessmentMode (org.olat.course.assessment.AssessmentMode)2 Target (org.olat.course.assessment.AssessmentMode.Target)2 AssessmentModeToArea (org.olat.course.assessment.AssessmentModeToArea)2 AssessmentModeToGroup (org.olat.course.assessment.AssessmentModeToGroup)2 CoordinatedAssessmentMode (org.olat.course.assessment.model.CoordinatedAssessmentMode)2 TransientAssessmentMode (org.olat.course.assessment.model.TransientAssessmentMode)2 CourseEditorTreeModel (org.olat.course.tree.CourseEditorTreeModel)2 BusinessGroup (org.olat.group.BusinessGroup)2 BGArea (org.olat.group.area.BGArea)2