diff --git a/pom.xml b/pom.xml
index 952a462..140c18b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,9 +37,9 @@
UTF-8
${project.build.directory}/test-results
1.0.0
- 3.19.2
+ 3.25.4
org.jboss.logmanager.LogManager
- 3.19.2
+ 3.25.4
3.7.0.1746
@@ -58,7 +58,7 @@
org.apache.pdfbox
pdfbox
- 3.0.4
+ 3.0.5
@@ -76,7 +76,7 @@
io.quarkiverse.minio
quarkus-minio
- 3.7.7
+ 3.8.4
@@ -123,7 +123,7 @@
org.ow2.asm
asm
- 9.6
+ 9.7.1
test
@@ -171,7 +171,7 @@
com.google.code.gson
gson
- 2.9.1
+ 2.13.1
org.mapstruct
@@ -193,13 +193,13 @@
io.rest-assured
rest-assured
- 5.5.1
+ 5.5.6
test
org.assertj
assertj-core
- 3.25.1
+ 3.27.4
test
diff --git a/src/main/java/fr/istic/domain/Answer2HybridGradedComment.java b/src/main/java/fr/istic/domain/Answer2HybridGradedComment.java
index 63d4dbd..1f4ca3d 100644
--- a/src/main/java/fr/istic/domain/Answer2HybridGradedComment.java
+++ b/src/main/java/fr/istic/domain/Answer2HybridGradedComment.java
@@ -4,6 +4,8 @@
import io.quarkus.hibernate.orm.panache.PanacheQuery;
import io.quarkus.runtime.annotations.RegisterForReflection;
import java.io.Serializable;
+import java.util.Set;
+
import jakarta.json.bind.annotation.JsonbTransient;
import jakarta.persistence.*;
import org.hibernate.annotations.Cache;
@@ -124,6 +126,12 @@ public static long deleteAllAnswerHybridGradedCommentByCommentId(long commentId
public static long deleteAllAnswerHybridGradedCommentByAnswerId(long responseId){
return delete("studentResponse.id", responseId);
}
+ public static long deleteAllByQIds( Set qids){
+ return delete("delete from Answer2HybridGradedComment ar where ar.studentResponse.question.id in ?1", qids);
+ }
+ public static long deleteAllAnswerHybridGradedCommentByCommentIds(Set commentIds){
+ return delete("delete from Answer2HybridGradedComment ar where ar.hybridcomments.id in ?1", commentIds);
+ }
diff --git a/src/main/java/fr/istic/domain/Comments.java b/src/main/java/fr/istic/domain/Comments.java
index 59e8ad7..3f1c4e6 100644
--- a/src/main/java/fr/istic/domain/Comments.java
+++ b/src/main/java/fr/istic/domain/Comments.java
@@ -2,6 +2,7 @@
import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
import jakarta.json.bind.annotation.JsonbTransient;
import io.quarkus.hibernate.orm.panache.PanacheQuery;
+import io.quarkus.logging.Log;
import io.quarkus.runtime.annotations.RegisterForReflection;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
diff --git a/src/main/java/fr/istic/domain/HybridGradedComment.java b/src/main/java/fr/istic/domain/HybridGradedComment.java
index 1ddf6b2..e75ee1d 100644
--- a/src/main/java/fr/istic/domain/HybridGradedComment.java
+++ b/src/main/java/fr/istic/domain/HybridGradedComment.java
@@ -2,6 +2,7 @@
import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
import io.quarkus.hibernate.orm.panache.PanacheQuery;
+import io.quarkus.logging.Log;
import io.quarkus.runtime.annotations.RegisterForReflection;
import java.io.Serializable;
import java.util.HashSet;
@@ -47,7 +48,7 @@ public class HybridGradedComment extends PanacheEntityBase implements Serializab
@JsonbTransient
public Question question;
- @OneToMany(mappedBy = "hybridcomments")
+ @OneToMany(mappedBy = "hybridcomments", cascade = CascadeType.REMOVE, orphanRemoval = true)
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public Set valueAnswers = new HashSet<>();
@@ -133,6 +134,10 @@ public static HybridGradedComment persistOrUpdate(HybridGradedComment hybridGrad
public static PanacheQuery findByQuestionId( long qid) {
return find("select hybridGradedComment from HybridGradedComment hybridGradedComment where hybridGradedComment.question.id =?1", qid);
}
+ public static PanacheQuery findByExamId( long qid) {
+ return find("select hybridGradedComment from HybridGradedComment hybridGradedComment where hybridGradedComment.question.exam.id =?1", qid);
+ }
+
public static PanacheQuery canAccess(long commentId, String login) {
return find("select ex from HybridGradedComment ex join ex.question.exam.course.profs as u where ex.id =?1 and u.login =?2", commentId, login);
diff --git a/src/main/java/fr/istic/service/CourseService.java b/src/main/java/fr/istic/service/CourseService.java
index a82c2b3..69a64ab 100644
--- a/src/main/java/fr/istic/service/CourseService.java
+++ b/src/main/java/fr/istic/service/CourseService.java
@@ -25,7 +25,6 @@
import java.util.stream.Collectors;
@ApplicationScoped
-@Transactional
public class CourseService {
private final Logger log = LoggerFactory.getLogger(CourseService.class);
@@ -50,12 +49,37 @@ public CourseDTO persistOrUpdate(CourseDTO courseDTO) {
*
* @param id the id of the entity.
*/
- @Transactional
+ protected void prepareDelete(Long id) {
+ Course.findByIdOptional(id).ifPresent(course -> {
+ List exams = new ArrayList<>();
+ exams.addAll(Exam.findExambyCourseId(id).list());
+ exams.forEach(exam-> this.examService.delete(exam.id));
+ });
+ }
+
+
+
+ /**
+ * Delete the Course by id.
+ *
+ * @param id the id of the entity.
+ */
public void delete(Long id) {
log.debug("Request to delete Course : {}", id);
+ this.prepareDelete(id);
+ this.deleteinternal(id);
+ }
+
+
+ /**
+ * Delete the Course by id.
+ *
+ * @param id the id of the entity.
+ */
+ @Transactional
+ protected void deleteinternal(Long id) {
Course.findByIdOptional(id).ifPresent(course -> {
- Exam.findExambyCourseId(id).list().forEach(exam-> this.examService.delete(exam.id));
Course c = Course.findById(id);
c.groups.forEach(g -> {
g.students.forEach(st -> {
diff --git a/src/main/java/fr/istic/service/ExamService.java b/src/main/java/fr/istic/service/ExamService.java
index e0f95c4..8978cc3 100644
--- a/src/main/java/fr/istic/service/ExamService.java
+++ b/src/main/java/fr/istic/service/ExamService.java
@@ -14,6 +14,7 @@
import fr.istic.domain.FinalResult;
import fr.istic.domain.GradedComment;
import fr.istic.domain.HybridGradedComment;
+import fr.istic.domain.Prediction;
import fr.istic.domain.Question;
import fr.istic.domain.QuestionType;
import fr.istic.domain.Scan;
@@ -76,20 +77,29 @@ public ExamDTO persistOrUpdate(ExamDTO examDTO) {
*
* @param id the id of the entity.
*/
- @Transactional
public void delete(Long id) {
log.debug("Request to delete Exam : {}", id);
- Exam.findByIdOptional(id).ifPresent(exam -> {
- StudentResponse.getAll4ExamIdEvenOrphan(id).list().forEach(sr -> {
+ this.prepareDeleteExam(id);
+ this.deleteExam(id);
+
+
+ }
+
+ @Transactional
+ public void prepareDeleteExam(long id){
+ Exam.findByIdOptional(id).ifPresent(exam -> {
+ ExamSheet.getAll4ExamIdEvenOrphan(id).list().forEach(sr -> sr.cleanBeforDelete());
+ /*StudentResponse.getAll4ExamIdEvenOrphan(id).list().forEach(sr -> {
sr.clearComments();
Answer2HybridGradedComment.deleteAllAnswerHybridGradedCommentByAnswerId(sr.id);
});
- ExamSheet.getAll4ExamIdEvenOrphan(id).list().forEach(sr -> sr.cleanBeforDelete());
StudentResponse.getAll4ExamIdEvenOrphan(id).list().forEach(sr -> sr.delete());
FinalResult.getAll4ExamId(id).list().forEach(f -> f.delete());
+ var s = HybridGradedComment.deleteByQIds(e.questions.stream().map(q -> q.id).collect(Collectors.toSet()));
+ log.error("to remove" + s);*/
+ this.deleteQuestionCommentAndZone(id);
Exam e = Exam.findById(id);
- HybridGradedComment.deleteByQIds(e.questions.stream().map(q -> q.id).collect(Collectors.toSet()));
if (e.scanfile != null && this.fichierS3Service.isObjectExist("scan/" + e.scanfile.id + ".pdf")) {
try {
@@ -109,11 +119,18 @@ public void delete(Long id) {
e1.printStackTrace();
}
}
- exam.delete();
Comments.deleteCommentByExamId("" + id);
-
this.cacheService.deleteFile(id);
});
+
+ }
+
+
+ @Transactional
+ protected void deleteExam(long id){
+ var e = Exam.findById(id);
+ e.delete();
+
}
@Transactional
@@ -169,11 +186,18 @@ protected void cleanExamZone(Set zoneids) {
@Transactional
protected void cleanQuestion(long examId, Set qids) {
- StudentResponse.deleteByQIds(qids);
- TextComment.deleteByQIds(qids);
- GradedComment.deleteByQIds(qids);
+ var s = Answer2HybridGradedComment.deleteAllByQIds(qids);
+ Set cids = HybridGradedComment.findByExamId(examId).list().stream().map(ex -> ex.id).collect(Collectors.toSet());
+ s = Answer2HybridGradedComment.deleteAllAnswerHybridGradedCommentByCommentIds(cids);
+ s= StudentResponse.deleteByQIds(qids);
+ s= TextComment.deleteByQIds(qids);
+ s= GradedComment.deleteByQIds(qids);
+ s= HybridGradedComment.deleteByQIds(qids);
+ s=Prediction.deleteByQIds(qids);
+ }
+ @Transactional
+ protected void removeQuestion(long examId, Set qids) {
Question.deleteAllExamId(examId);
-
}
@Transactional
@@ -187,16 +211,16 @@ protected void cleanFinalResult(long id) {
*
* @param id the id of the entity.
*/
- @Transactional
- public void deleteQuestionCommentAndZone(Long id) {
- log.debug("Request to delete Exam : {}", id);
- Set qids = Question.findQuestionbyExamId(id).list().stream().map(ex -> ex.id).collect(Collectors.toSet());
+ public void deleteQuestionCommentAndZone(Long examid) {
+ log.debug("Request to delete Exam : {}", examid);
+ Set qids = Question.findQuestionbyExamId(examid).list().stream().map(ex -> ex.id).collect(Collectors.toSet());
- this.cleanFinalResult(id);
- Set zonesids = this.cleanExamZone(id);
+ this.cleanFinalResult(examid);
+ Set zonesids = this.cleanExamZone(examid);
this.cleanExamZone(zonesids);
// this.cleanStudentRssponse(id);
- this.cleanQuestion(id, qids);
+ this.cleanQuestion(examid, qids);
+ this.removeQuestion(examid, qids);
}
diff --git a/src/main/java/fr/istic/service/FichierS3Service.java b/src/main/java/fr/istic/service/FichierS3Service.java
index dd62f4c..ec17d73 100644
--- a/src/main/java/fr/istic/service/FichierS3Service.java
+++ b/src/main/java/fr/istic/service/FichierS3Service.java
@@ -1,9 +1,6 @@
package fr.istic.service;
import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index c725062..a824d6a 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -187,10 +187,14 @@ quarkus.native.additional-build-args=\
quarkus.http.limits.max-body-size=10G
upload.directory= /tmp/files
-quarkus.minio.url=http://localhost:9000
+quarkus.minio.host=localhost
+quarkus.minio.port=9000
+
quarkus.minio.access-key=admin
quarkus.minio.secret-key=minioadmin
quarkus.minio.secure=false
+quarkus.minio.devservices.enabled=false
+
# quarkus.minio.allow-empty=false