From b58dde4304b679f8ef66c6907fb23b53836b7035 Mon Sep 17 00:00:00 2001 From: Julien WITTOUCK Date: Mon, 30 Dec 2024 16:16:21 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20:=20save=20assignment=20status?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../assignments/ArchiveAssignmentUseCase.java | 8 +++++++- .../gitlab/classrooms/assignments/Assignment.java | 11 +++++++++++ .../classrooms/assignments/AssignmentStatus.java | 5 +++++ .../gitlab/classrooms/assignments/AutoArchiveJob.java | 1 + .../resources/db/migration/V25__ASSIGNMENT_STATUS.sql | 2 ++ 5 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 src/main/java/fr/univ_lille/gitlab/classrooms/assignments/AssignmentStatus.java create mode 100644 src/main/resources/db/migration/V25__ASSIGNMENT_STATUS.sql diff --git a/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/ArchiveAssignmentUseCase.java b/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/ArchiveAssignmentUseCase.java index b5d987d..aa268ca 100644 --- a/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/ArchiveAssignmentUseCase.java +++ b/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/ArchiveAssignmentUseCase.java @@ -9,13 +9,16 @@ import org.springframework.stereotype.Component; @Component public class ArchiveAssignmentUseCase { + private final AssignmentRepository assignmentRepository; + private final StudentAssignmentRepository studentAssignmentRepository; private final Gitlab gitlab; private static final Logger LOGGER = LoggerFactory.getLogger(ArchiveAssignmentUseCase.class.getName()); - ArchiveAssignmentUseCase(StudentAssignmentRepository studentAssignmentRepository, Gitlab gitlab) { + ArchiveAssignmentUseCase(AssignmentRepository assignmentRepository, StudentAssignmentRepository studentAssignmentRepository, Gitlab gitlab) { + this.assignmentRepository = assignmentRepository; this.studentAssignmentRepository = studentAssignmentRepository; this.gitlab = gitlab; } @@ -32,6 +35,9 @@ public class ArchiveAssignmentUseCase { System.out.println(e.getMessage()); } }); + + assignment.setStatus(AssignmentStatus.ARCHIVED); + assignmentRepository.save(assignment); } } diff --git a/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/Assignment.java b/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/Assignment.java index 88d3c9a..ee3414a 100644 --- a/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/Assignment.java +++ b/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/Assignment.java @@ -31,6 +31,9 @@ public abstract class Assignment { private boolean autoArchive = false; + @Enumerated(EnumType.STRING) + private AssignmentStatus status = AssignmentStatus.OPENED; + public UUID getId() { return id; } @@ -90,4 +93,12 @@ public abstract class Assignment { public void setAutoArchive(boolean autoArchive) { this.autoArchive = autoArchive; } + + public AssignmentStatus getStatus() { + return status; + } + + public void setStatus(AssignmentStatus status) { + this.status = status; + } } diff --git a/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/AssignmentStatus.java b/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/AssignmentStatus.java new file mode 100644 index 0000000..ce776ab --- /dev/null +++ b/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/AssignmentStatus.java @@ -0,0 +1,5 @@ +package fr.univ_lille.gitlab.classrooms.assignments; + +public enum AssignmentStatus { + OPENED, ARCHIVED +} diff --git a/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/AutoArchiveJob.java b/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/AutoArchiveJob.java index f518d6e..8cd61a4 100644 --- a/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/AutoArchiveJob.java +++ b/src/main/java/fr/univ_lille/gitlab/classrooms/assignments/AutoArchiveJob.java @@ -27,6 +27,7 @@ public class AutoArchiveJob { LOGGER.info("Auto archiving assignments"); this.assignmentRepository.findAll() .stream() + .filter(it -> it.getStatus()==AssignmentStatus.OPENED) .filter(Assignment::isAutoArchive) .filter(it -> it.getDueDate().isBefore(ZonedDateTime.now())) .forEach(this.archiveAssignmentUseCase::archive); diff --git a/src/main/resources/db/migration/V25__ASSIGNMENT_STATUS.sql b/src/main/resources/db/migration/V25__ASSIGNMENT_STATUS.sql new file mode 100644 index 0000000..4bbe8f5 --- /dev/null +++ b/src/main/resources/db/migration/V25__ASSIGNMENT_STATUS.sql @@ -0,0 +1,2 @@ +ALTER TABLE assignment + ADD column if not exists status varchar default 'OPENED'; \ No newline at end of file -- 2.51.2