Search in sources :

Example 1 with TaskRevisionDate

use of org.olat.course.nodes.gta.TaskRevisionDate in project OpenOLAT by OpenOLAT.

the class GTAManagerTest method deleteTaskList_parano.

/**
 * Create 2 pseudo nodes in a course, and delete the task of the first node
 * and check that the task of second are always there.
 */
@Test
public void deleteTaskList_parano() {
    Identity coach = JunitTestHelper.createAndPersistIdentityAsRndUser("gta-user-9");
    Identity participant = JunitTestHelper.createAndPersistIdentityAsRndUser("gta-user-10");
    BusinessGroup businessGroup = businessGroupDao.createAndPersist(coach, "gdao", "gdao-desc", -1, -1, false, false, false, false, false);
    businessGroupRelationDao.addRole(participant, businessGroup, GroupRole.participant.name());
    dbInstance.commit();
    RepositoryEntry re = deployGTACourse();
    // node 1
    GTACourseNode node1 = getGTACourseNode(re);
    node1.getModuleConfiguration().setStringValue(GTACourseNode.GTASK_TYPE, GTAType.group.name());
    TaskList tasks1 = gtaManager.createIfNotExists(re, node1);
    File taskFile = new File("bg.txt");
    Assert.assertNotNull(tasks1);
    dbInstance.commit();
    // node 2
    GTACourseNode node2 = new GTACourseNode();
    node2.getModuleConfiguration().setStringValue(GTACourseNode.GTASK_TYPE, GTAType.group.name());
    TaskList tasks2 = gtaManager.createIfNotExists(re, node2);
    Assert.assertNotNull(tasks2);
    dbInstance.commit();
    // select node 1
    AssignmentResponse response1 = gtaManager.selectTask(businessGroup, tasks1, node1, taskFile);
    dbInstance.commitAndCloseSession();
    Assert.assertNotNull(response1);
    // select node 2
    AssignmentResponse response2 = gtaManager.selectTask(businessGroup, tasks2, node2, taskFile);
    dbInstance.commitAndCloseSession();
    Assert.assertNotNull(response2);
    // check that there is tasks
    List<Task> assignedTasks1 = gtaManager.getTasks(participant, re, node1);
    Assert.assertNotNull(assignedTasks1);
    Assert.assertEquals(1, assignedTasks1.size());
    // create a revision date
    gtaManager.createAndPersistTaskRevisionDate(assignedTasks1.get(0), 2, TaskProcess.correction);
    List<Task> assignedTasks2 = gtaManager.getTasks(participant, re, node2);
    Assert.assertNotNull(assignedTasks2);
    Assert.assertEquals(1, assignedTasks2.size());
    // create a revision date
    gtaManager.createAndPersistTaskRevisionDate(assignedTasks2.get(0), 2, TaskProcess.correction);
    dbInstance.commitAndCloseSession();
    // delete
    int numOfDeletedObjects = gtaManager.deleteTaskList(re, node1);
    Assert.assertEquals(3, numOfDeletedObjects);
    dbInstance.commitAndCloseSession();
    // check that there isn't any tasks in node 1
    List<Task> deletedAssignedTasks = gtaManager.getTasks(participant, re, node1);
    Assert.assertNotNull(deletedAssignedTasks);
    Assert.assertEquals(0, deletedAssignedTasks.size());
    List<TaskRevisionDate> revisionsTask1 = gtaManager.getTaskRevisions(assignedTasks1.get(0));
    Assert.assertNotNull(revisionsTask1);
    Assert.assertEquals(0, revisionsTask1.size());
    // but always in node 2
    List<Task> notDeletedAssignedTasks2 = gtaManager.getTasks(participant, re, node2);
    Assert.assertNotNull(notDeletedAssignedTasks2);
    Assert.assertEquals(1, notDeletedAssignedTasks2.size());
    List<TaskRevisionDate> revisionsTask2 = gtaManager.getTaskRevisions(notDeletedAssignedTasks2.get(0));
    Assert.assertNotNull(revisionsTask2);
    Assert.assertEquals(1, revisionsTask2.size());
}
Also used : Task(org.olat.course.nodes.gta.Task) BusinessGroup(org.olat.group.BusinessGroup) TaskList(org.olat.course.nodes.gta.TaskList) GTACourseNode(org.olat.course.nodes.GTACourseNode) AssignmentResponse(org.olat.course.nodes.gta.AssignmentResponse) RepositoryEntry(org.olat.repository.RepositoryEntry) Identity(org.olat.core.id.Identity) File(java.io.File) TaskRevisionDate(org.olat.course.nodes.gta.TaskRevisionDate) Test(org.junit.Test)

Example 2 with TaskRevisionDate

use of org.olat.course.nodes.gta.TaskRevisionDate in project OpenOLAT by OpenOLAT.

the class GTAManagerTest method getTaskRevisions.

@Test
public void getTaskRevisions() {
    // prepare
    Identity participant = JunitTestHelper.createAndPersistIdentityAsRndUser("gta-user-21");
    RepositoryEntry re = deployGTACourse();
    GTACourseNode node = getGTACourseNode(re);
    node.getModuleConfiguration().setStringValue(GTACourseNode.GTASK_TYPE, GTAType.individual.name());
    TaskList tasks = gtaManager.createIfNotExists(re, node);
    dbInstance.commit();
    // create a task
    Task task = gtaManager.createAndPersistTask(null, tasks, TaskProcess.assignment, null, participant, node);
    dbInstance.commitAndCloseSession();
    // add the revision log
    TaskRevisionDate taskRevision = gtaManager.createAndPersistTaskRevisionDate(task, 2, TaskProcess.correction);
    Assert.assertNotNull(taskRevision);
    dbInstance.commitAndCloseSession();
    // load the revisions
    List<TaskRevisionDate> taskRevisions = gtaManager.getTaskRevisions(task);
    Assert.assertNotNull(taskRevisions);
    Assert.assertEquals(1, taskRevisions.size());
    TaskRevisionDate loadedTaskRevision = taskRevisions.get(0);
    Assert.assertNotNull(loadedTaskRevision.getKey());
    Assert.assertNotNull(loadedTaskRevision.getDate());
    Assert.assertEquals(task, loadedTaskRevision.getTask());
    Assert.assertEquals(2, loadedTaskRevision.getRevisionLoop());
    Assert.assertEquals(TaskProcess.correction, loadedTaskRevision.getTaskStatus());
}
Also used : Task(org.olat.course.nodes.gta.Task) TaskList(org.olat.course.nodes.gta.TaskList) GTACourseNode(org.olat.course.nodes.GTACourseNode) RepositoryEntry(org.olat.repository.RepositoryEntry) Identity(org.olat.core.id.Identity) TaskRevisionDate(org.olat.course.nodes.gta.TaskRevisionDate) Test(org.junit.Test)

Example 3 with TaskRevisionDate

use of org.olat.course.nodes.gta.TaskRevisionDate in project OpenOLAT by OpenOLAT.

the class GTANotifications method createReviewAndRevisionsItems.

private void createReviewAndRevisionsItems(Task task, Identity assessedIdentity, BusinessGroup group, boolean coach) {
    if (task == null)
        return;
    String name;
    if (group != null) {
        name = group.getName();
    } else {
        name = userManager.getUserDisplayName(assessedIdentity);
    }
    boolean sendNotificationDueDate = true;
    List<TaskRevisionDate> taskRevisions = gtaManager.getTaskRevisions(task);
    if (!coach && gtaNode.getModuleConfiguration().getBooleanSafe(GTACourseNode.GTASK_REVIEW_AND_CORRECTION)) {
        // check task revision 1
        if (task != null && notInStep(task, TaskProcess.assignment, TaskProcess.submit, TaskProcess.review) && checkRevisionLoop(TaskProcess.revision, 1, taskRevisions)) {
            File correctionDirectory;
            VFSContainer correctionContainer;
            if (group != null) {
                correctionDirectory = gtaManager.getCorrectionDirectory(courseEnv, gtaNode, group);
                correctionContainer = gtaManager.getCorrectionContainer(courseEnv, gtaNode, group);
            } else {
                correctionDirectory = gtaManager.getCorrectionDirectory(courseEnv, gtaNode, assessedIdentity);
                correctionContainer = gtaManager.getCorrectionContainer(courseEnv, gtaNode, assessedIdentity);
            }
            Date correctionDate = getRevisionLoopDate(TaskProcess.revision, 1, taskRevisions);
            if (sendNotificationDueDate) {
                if (task.getRevisionsDueDate() != null) {
                    String[] params = new String[] { getTaskName(task), displayName, formatter.formatDateAndTime(task.getRevisionsDueDate()) };
                    if (group != null) {
                        appendSubscriptionItem("notifications.correction.duedate", params, group, correctionDate, coach);
                    } else {
                        appendSubscriptionItem("notifications.correction.duedate", params, assessedIdentity, correctionDate, coach);
                    }
                } else {
                    String[] params = new String[] { getTaskName(task), displayName };
                    if (group != null) {
                        appendSubscriptionItem("notifications.correction", params, group, correctionDate, coach);
                    } else {
                        appendSubscriptionItem("notifications.correction", params, assessedIdentity, correctionDate, coach);
                    }
                }
                sendNotificationDueDate = false;
            }
            File[] corrections = correctionDirectory.listFiles(SystemFileFilter.FILES_ONLY);
            for (File correction : corrections) {
                String author = getAuthor(correction, correctionContainer);
                String[] params = new String[] { getTaskName(task), displayName, correction.getName(), author };
                if (group != null) {
                    appendSubscriptionItemForFile("notifications.correction.doc", params, group, "[correction:0]", correction, correctionDate, coach);
                } else {
                    appendSubscriptionItemForFile("notifications.correction.doc", params, assessedIdentity, "[correction:0]", correction, correctionDate, coach);
                }
            }
        }
    }
    if (gtaNode.getModuleConfiguration().getBooleanSafe(GTACourseNode.GTASK_REVISION_PERIOD)) {
        task = checkRevisionStep(assessedIdentity, null, task);
        if (task != null && notInStep(task, TaskProcess.assignment, TaskProcess.submit, TaskProcess.review)) {
            int currentIteration = task.getRevisionLoop();
            for (int i = 1; i <= currentIteration; i++) {
                if (coach) {
                    // revision of the students
                    if (checkRevisionLoop(TaskProcess.correction, i, taskRevisions)) {
                        File revisionDirectory;
                        VFSContainer revisionContainer;
                        if (group != null) {
                            revisionDirectory = gtaManager.getRevisedDocumentsDirectory(courseEnv, gtaNode, i, group);
                            revisionContainer = gtaManager.getRevisedDocumentsContainer(courseEnv, gtaNode, i, group);
                        } else {
                            revisionDirectory = gtaManager.getRevisedDocumentsDirectory(courseEnv, gtaNode, i, assessedIdentity);
                            revisionContainer = gtaManager.getRevisedDocumentsContainer(courseEnv, gtaNode, i, assessedIdentity);
                        }
                        Date revisionDate = getRevisionLoopDate(TaskProcess.correction, i, taskRevisions);
                        File[] revisions = revisionDirectory.listFiles(SystemFileFilter.FILES_ONLY);
                        if (revisions.length == 0) {
                            String[] params = new String[] { getTaskName(task), displayName, name };
                            if (group != null) {
                                appendSubscriptionItem("notifications.revision.group", params, group, revisionDate, coach);
                            } else {
                                appendSubscriptionItem("notifications.revision.individual", params, assessedIdentity, revisionDate, coach);
                            }
                        } else {
                            for (File revision : revisions) {
                                String author = getAuthor(revision, revisionContainer);
                                String[] params = new String[] { getTaskName(task), displayName, revision.getName(), name, author };
                                if (group != null) {
                                    appendSubscriptionItemForFile("notifications.revision.group.doc", params, group, "[revision:" + i + "]", revision, revisionDate, coach);
                                } else {
                                    appendSubscriptionItemForFile("notifications.revision.individual.doc", params, assessedIdentity, "[revision:" + i + "]", revision, revisionDate, coach);
                                }
                            }
                        }
                    }
                } else if (checkRevisionLoop(TaskProcess.revision, i, taskRevisions)) {
                    // corrections of the coach
                    File correctionDirectory;
                    VFSContainer correctionContainer;
                    if (group != null) {
                        correctionDirectory = gtaManager.getRevisedDocumentsCorrectionsDirectory(courseEnv, gtaNode, i, group);
                        correctionContainer = gtaManager.getRevisedDocumentsCorrectionsContainer(courseEnv, gtaNode, i, group);
                    } else {
                        correctionDirectory = gtaManager.getRevisedDocumentsCorrectionsDirectory(courseEnv, gtaNode, i, assessedIdentity);
                        correctionContainer = gtaManager.getRevisedDocumentsCorrectionsContainer(courseEnv, gtaNode, i, assessedIdentity);
                    }
                    Date correctionDate = getRevisionLoopDate(TaskProcess.revision, i, taskRevisions);
                    if (sendNotificationDueDate) {
                        if (task.getRevisionsDueDate() != null) {
                            String[] params = new String[] { getTaskName(task), displayName, formatter.formatDateAndTime(task.getRevisionsDueDate()) };
                            if (group != null) {
                                appendSubscriptionItem("notifications.correction.duedate", params, group, correctionDate, coach);
                            } else {
                                appendSubscriptionItem("notifications.correction.duedate", params, assessedIdentity, correctionDate, coach);
                            }
                        } else {
                            String[] params = new String[] { getTaskName(task), displayName };
                            if (group != null) {
                                appendSubscriptionItem("notifications.correction", params, group, correctionDate, coach);
                            } else {
                                appendSubscriptionItem("notifications.correction", params, assessedIdentity, correctionDate, coach);
                            }
                        }
                        sendNotificationDueDate = false;
                    }
                    File[] corrections = correctionDirectory.listFiles(SystemFileFilter.FILES_ONLY);
                    for (File correction : corrections) {
                        String author = getAuthor(correction, correctionContainer);
                        String[] params = new String[] { getTaskName(task), displayName, correction.getName(), author };
                        if (group != null) {
                            appendSubscriptionItemForFile("notifications.correction.doc", params, group, "[correction:" + i + "]", correction, correctionDate, coach);
                        } else {
                            appendSubscriptionItemForFile("notifications.correction.doc", params, assessedIdentity, "[correction:" + i + "]", correction, correctionDate, coach);
                        }
                    }
                }
            }
        }
    }
}
Also used : VFSContainer(org.olat.core.util.vfs.VFSContainer) File(java.io.File) TaskRevisionDate(org.olat.course.nodes.gta.TaskRevisionDate) Date(java.util.Date) TaskRevisionDate(org.olat.course.nodes.gta.TaskRevisionDate) DueDate(org.olat.course.nodes.gta.model.DueDate)

Example 4 with TaskRevisionDate

use of org.olat.course.nodes.gta.TaskRevisionDate in project openolat by klemens.

the class GTAManagerTest method createTaskRevisionDate.

@Test
public void createTaskRevisionDate() {
    // prepare
    Identity participant = JunitTestHelper.createAndPersistIdentityAsRndUser("gta-user-20");
    RepositoryEntry re = deployGTACourse();
    GTACourseNode node = getGTACourseNode(re);
    node.getModuleConfiguration().setStringValue(GTACourseNode.GTASK_TYPE, GTAType.individual.name());
    TaskList tasks = gtaManager.createIfNotExists(re, node);
    dbInstance.commit();
    // create task
    Task task = gtaManager.createAndPersistTask(null, tasks, TaskProcess.assignment, null, participant, node);
    dbInstance.commitAndCloseSession();
    // create the revision log
    TaskRevisionDate taskRevision = gtaManager.createAndPersistTaskRevisionDate(task, 2, TaskProcess.correction);
    Assert.assertNotNull(taskRevision);
    dbInstance.commitAndCloseSession();
    Assert.assertNotNull(taskRevision.getKey());
    Assert.assertNotNull(taskRevision.getDate());
    Assert.assertEquals(task, taskRevision.getTask());
    Assert.assertEquals(2, taskRevision.getRevisionLoop());
    Assert.assertEquals(TaskProcess.correction, taskRevision.getTaskStatus());
}
Also used : Task(org.olat.course.nodes.gta.Task) TaskList(org.olat.course.nodes.gta.TaskList) GTACourseNode(org.olat.course.nodes.GTACourseNode) RepositoryEntry(org.olat.repository.RepositoryEntry) Identity(org.olat.core.id.Identity) TaskRevisionDate(org.olat.course.nodes.gta.TaskRevisionDate) Test(org.junit.Test)

Example 5 with TaskRevisionDate

use of org.olat.course.nodes.gta.TaskRevisionDate in project openolat by klemens.

the class GTAManagerTest method deleteTaskList_parano.

/**
 * Create 2 pseudo nodes in a course, and delete the task of the first node
 * and check that the task of second are always there.
 */
@Test
public void deleteTaskList_parano() {
    Identity coach = JunitTestHelper.createAndPersistIdentityAsRndUser("gta-user-9");
    Identity participant = JunitTestHelper.createAndPersistIdentityAsRndUser("gta-user-10");
    BusinessGroup businessGroup = businessGroupDao.createAndPersist(coach, "gdao", "gdao-desc", -1, -1, false, false, false, false, false);
    businessGroupRelationDao.addRole(participant, businessGroup, GroupRole.participant.name());
    dbInstance.commit();
    RepositoryEntry re = deployGTACourse();
    // node 1
    GTACourseNode node1 = getGTACourseNode(re);
    node1.getModuleConfiguration().setStringValue(GTACourseNode.GTASK_TYPE, GTAType.group.name());
    TaskList tasks1 = gtaManager.createIfNotExists(re, node1);
    File taskFile = new File("bg.txt");
    Assert.assertNotNull(tasks1);
    dbInstance.commit();
    // node 2
    GTACourseNode node2 = new GTACourseNode();
    node2.getModuleConfiguration().setStringValue(GTACourseNode.GTASK_TYPE, GTAType.group.name());
    TaskList tasks2 = gtaManager.createIfNotExists(re, node2);
    Assert.assertNotNull(tasks2);
    dbInstance.commit();
    // select node 1
    AssignmentResponse response1 = gtaManager.selectTask(businessGroup, tasks1, node1, taskFile);
    dbInstance.commitAndCloseSession();
    Assert.assertNotNull(response1);
    // select node 2
    AssignmentResponse response2 = gtaManager.selectTask(businessGroup, tasks2, node2, taskFile);
    dbInstance.commitAndCloseSession();
    Assert.assertNotNull(response2);
    // check that there is tasks
    List<Task> assignedTasks1 = gtaManager.getTasks(participant, re, node1);
    Assert.assertNotNull(assignedTasks1);
    Assert.assertEquals(1, assignedTasks1.size());
    // create a revision date
    gtaManager.createAndPersistTaskRevisionDate(assignedTasks1.get(0), 2, TaskProcess.correction);
    List<Task> assignedTasks2 = gtaManager.getTasks(participant, re, node2);
    Assert.assertNotNull(assignedTasks2);
    Assert.assertEquals(1, assignedTasks2.size());
    // create a revision date
    gtaManager.createAndPersistTaskRevisionDate(assignedTasks2.get(0), 2, TaskProcess.correction);
    dbInstance.commitAndCloseSession();
    // delete
    int numOfDeletedObjects = gtaManager.deleteTaskList(re, node1);
    Assert.assertEquals(3, numOfDeletedObjects);
    dbInstance.commitAndCloseSession();
    // check that there isn't any tasks in node 1
    List<Task> deletedAssignedTasks = gtaManager.getTasks(participant, re, node1);
    Assert.assertNotNull(deletedAssignedTasks);
    Assert.assertEquals(0, deletedAssignedTasks.size());
    List<TaskRevisionDate> revisionsTask1 = gtaManager.getTaskRevisions(assignedTasks1.get(0));
    Assert.assertNotNull(revisionsTask1);
    Assert.assertEquals(0, revisionsTask1.size());
    // but always in node 2
    List<Task> notDeletedAssignedTasks2 = gtaManager.getTasks(participant, re, node2);
    Assert.assertNotNull(notDeletedAssignedTasks2);
    Assert.assertEquals(1, notDeletedAssignedTasks2.size());
    List<TaskRevisionDate> revisionsTask2 = gtaManager.getTaskRevisions(notDeletedAssignedTasks2.get(0));
    Assert.assertNotNull(revisionsTask2);
    Assert.assertEquals(1, revisionsTask2.size());
}
Also used : Task(org.olat.course.nodes.gta.Task) BusinessGroup(org.olat.group.BusinessGroup) TaskList(org.olat.course.nodes.gta.TaskList) GTACourseNode(org.olat.course.nodes.GTACourseNode) AssignmentResponse(org.olat.course.nodes.gta.AssignmentResponse) RepositoryEntry(org.olat.repository.RepositoryEntry) Identity(org.olat.core.id.Identity) File(java.io.File) TaskRevisionDate(org.olat.course.nodes.gta.TaskRevisionDate) Test(org.junit.Test)

Aggregations

TaskRevisionDate (org.olat.course.nodes.gta.TaskRevisionDate)10 Test (org.junit.Test)6 Identity (org.olat.core.id.Identity)6 GTACourseNode (org.olat.course.nodes.GTACourseNode)6 Task (org.olat.course.nodes.gta.Task)6 TaskList (org.olat.course.nodes.gta.TaskList)6 RepositoryEntry (org.olat.repository.RepositoryEntry)6 File (java.io.File)4 Date (java.util.Date)4 DueDate (org.olat.course.nodes.gta.model.DueDate)4 VFSContainer (org.olat.core.util.vfs.VFSContainer)2 AssignmentResponse (org.olat.course.nodes.gta.AssignmentResponse)2 TaskDueDate (org.olat.course.nodes.gta.TaskDueDate)2 TaskRevisionDateImpl (org.olat.course.nodes.gta.model.TaskRevisionDateImpl)2 BusinessGroup (org.olat.group.BusinessGroup)2