From d3d039cb7117933b37a63f5fdb138e072b9be4c8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dominik=20Pil=C3=A1r?= <xpilar3@fi.muni.cz>
Date: Wed, 24 Feb 2021 14:33:03 +0100
Subject: [PATCH] JPA repositories extended by QuerydslPredicateExecutor.

---
 .../adaptive/repository/QuestionAnswerRepository.java       | 4 +++-
 .../adaptive/repository/QuestionPhaseResultRepository.java  | 3 ++-
 .../adaptive/repository/phases/AbstractPhaseRepository.java | 4 +++-
 .../adaptive/repository/phases/InfoPhaseRepository.java     | 3 ++-
 .../repository/phases/QuestionPhaseRelationRepository.java  | 4 +++-
 .../adaptive/repository/phases/QuestionRepository.java      | 3 ++-
 .../repository/phases/QuestionnairePhaseRepository.java     | 4 +++-
 .../training/adaptive/repository/phases/TaskRepository.java | 4 +++-
 .../adaptive/repository/phases/TrainingPhaseRepository.java | 6 +++++-
 9 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/QuestionAnswerRepository.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/QuestionAnswerRepository.java
index 8fc46323..620e628e 100644
--- a/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/QuestionAnswerRepository.java
+++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/QuestionAnswerRepository.java
@@ -2,9 +2,11 @@ package cz.muni.ics.kypo.training.adaptive.repository;
 
 import cz.muni.ics.kypo.training.adaptive.domain.phase.questions.QuestionAnswer;
 import cz.muni.ics.kypo.training.adaptive.domain.phase.questions.QuestionAnswerId;
+import cz.muni.ics.kypo.training.adaptive.domain.phase.questions.QuestionPhaseResult;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.querydsl.QuerydslPredicateExecutor;
 import org.springframework.stereotype.Repository;
 
 @Repository
-public interface QuestionAnswerRepository extends JpaRepository<QuestionAnswer, QuestionAnswerId> {
+public interface QuestionAnswerRepository extends JpaRepository<QuestionAnswer, QuestionAnswerId>, QuerydslPredicateExecutor<QuestionAnswer> {
 }
diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/QuestionPhaseResultRepository.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/QuestionPhaseResultRepository.java
index 6c417b06..d8d5851e 100644
--- a/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/QuestionPhaseResultRepository.java
+++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/QuestionPhaseResultRepository.java
@@ -2,8 +2,9 @@ package cz.muni.ics.kypo.training.adaptive.repository;
 
 import cz.muni.ics.kypo.training.adaptive.domain.phase.questions.QuestionPhaseResult;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.querydsl.QuerydslPredicateExecutor;
 import org.springframework.stereotype.Repository;
 
 @Repository
-public interface QuestionPhaseResultRepository extends JpaRepository<QuestionPhaseResult, Long> {
+public interface QuestionPhaseResultRepository extends JpaRepository<QuestionPhaseResult, Long>, QuerydslPredicateExecutor<QuestionPhaseResult> {
 }
diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/AbstractPhaseRepository.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/AbstractPhaseRepository.java
index 9aca6525..6572df3d 100644
--- a/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/AbstractPhaseRepository.java
+++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/AbstractPhaseRepository.java
@@ -1,9 +1,11 @@
 package cz.muni.ics.kypo.training.adaptive.repository.phases;
 
 import cz.muni.ics.kypo.training.adaptive.domain.phase.AbstractPhase;
+import cz.muni.ics.kypo.training.adaptive.domain.phase.QuestionnairePhase;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.querydsl.QuerydslPredicateExecutor;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
@@ -11,7 +13,7 @@ import java.util.List;
 import java.util.Optional;
 
 @Repository
-public interface AbstractPhaseRepository extends JpaRepository<AbstractPhase, Long> {
+public interface AbstractPhaseRepository extends JpaRepository<AbstractPhase, Long>, QuerydslPredicateExecutor<AbstractPhase> {
 
     List<AbstractPhase> findAllByTrainingDefinitionIdOrderByOrder(long trainingDefinitionId);
 
diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/InfoPhaseRepository.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/InfoPhaseRepository.java
index fa0b5264..5d01f067 100644
--- a/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/InfoPhaseRepository.java
+++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/InfoPhaseRepository.java
@@ -2,8 +2,9 @@ package cz.muni.ics.kypo.training.adaptive.repository.phases;
 
 import cz.muni.ics.kypo.training.adaptive.domain.phase.InfoPhase;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.querydsl.QuerydslPredicateExecutor;
 import org.springframework.stereotype.Repository;
 
 @Repository
-public interface InfoPhaseRepository extends JpaRepository<InfoPhase, Long> {
+public interface InfoPhaseRepository extends JpaRepository<InfoPhase, Long>, QuerydslPredicateExecutor<InfoPhase> {
 }
diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/QuestionPhaseRelationRepository.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/QuestionPhaseRelationRepository.java
index 25dd8946..3c45fa42 100644
--- a/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/QuestionPhaseRelationRepository.java
+++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/QuestionPhaseRelationRepository.java
@@ -1,8 +1,10 @@
 package cz.muni.ics.kypo.training.adaptive.repository.phases;
 
+import cz.muni.ics.kypo.training.adaptive.domain.phase.Task;
 import cz.muni.ics.kypo.training.adaptive.domain.phase.questions.QuestionPhaseRelation;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.querydsl.QuerydslPredicateExecutor;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
@@ -10,7 +12,7 @@ import java.util.List;
 import java.util.Set;
 
 @Repository
-public interface QuestionPhaseRelationRepository extends JpaRepository<QuestionPhaseRelation, Long> {
+public interface QuestionPhaseRelationRepository extends JpaRepository<QuestionPhaseRelation, Long>, QuerydslPredicateExecutor<QuestionPhaseRelation> {
 
     @Query("SELECT r FROM QuestionPhaseRelation r INNER JOIN r.questions q WHERE q.id IN :questionIdList")
     List<QuestionPhaseRelation> findAllByQuestionIdList(@Param("questionIdList") Set<Long> questionIdList);
diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/QuestionRepository.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/QuestionRepository.java
index c6aad8d6..fee95ace 100644
--- a/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/QuestionRepository.java
+++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/QuestionRepository.java
@@ -2,12 +2,13 @@ package cz.muni.ics.kypo.training.adaptive.repository.phases;
 
 import cz.muni.ics.kypo.training.adaptive.domain.phase.questions.Question;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.querydsl.QuerydslPredicateExecutor;
 import org.springframework.stereotype.Repository;
 
 import java.util.Optional;
 
 @Repository
-public interface QuestionRepository extends JpaRepository<Question, Long> {
+public interface QuestionRepository extends JpaRepository<Question, Long>, QuerydslPredicateExecutor<Question> {
 
     Optional<Question> findByIdAndQuestionnairePhaseId(Long questionId, Long questionnaireId);
 }
diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/QuestionnairePhaseRepository.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/QuestionnairePhaseRepository.java
index df0d6d90..53c9c0bc 100644
--- a/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/QuestionnairePhaseRepository.java
+++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/QuestionnairePhaseRepository.java
@@ -1,9 +1,11 @@
 package cz.muni.ics.kypo.training.adaptive.repository.phases;
 
 import cz.muni.ics.kypo.training.adaptive.domain.phase.QuestionnairePhase;
+import cz.muni.ics.kypo.training.adaptive.domain.phase.questions.QuestionPhaseRelation;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.querydsl.QuerydslPredicateExecutor;
 import org.springframework.stereotype.Repository;
 
 @Repository
-public interface QuestionnairePhaseRepository extends JpaRepository<QuestionnairePhase, Long> {
+public interface QuestionnairePhaseRepository extends JpaRepository<QuestionnairePhase, Long>, QuerydslPredicateExecutor<QuestionnairePhase> {
 }
diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/TaskRepository.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/TaskRepository.java
index 426f0fa1..5356d736 100644
--- a/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/TaskRepository.java
+++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/TaskRepository.java
@@ -1,14 +1,16 @@
 package cz.muni.ics.kypo.training.adaptive.repository.phases;
 
 import cz.muni.ics.kypo.training.adaptive.domain.phase.Task;
+import cz.muni.ics.kypo.training.adaptive.domain.phase.TrainingPhase;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.querydsl.QuerydslPredicateExecutor;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
 @Repository
-public interface TaskRepository extends JpaRepository<Task, Long> {
+public interface TaskRepository extends JpaRepository<Task, Long>, QuerydslPredicateExecutor<Task> {
 
     @Query("SELECT COALESCE(MAX(g.order), -1) FROM Task g WHERE g.trainingPhase.id = :phaseId")
     Integer getCurrentMaxOrder(@Param("phaseId") Long phaseId);
diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/TrainingPhaseRepository.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/TrainingPhaseRepository.java
index e0b25155..a9b794b5 100644
--- a/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/TrainingPhaseRepository.java
+++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/repository/phases/TrainingPhaseRepository.java
@@ -1,15 +1,19 @@
 package cz.muni.ics.kypo.training.adaptive.repository.phases;
 
 import cz.muni.ics.kypo.training.adaptive.domain.phase.TrainingPhase;
+import cz.muni.ics.kypo.training.adaptive.domain.training.QTrainingDefinition;
+import cz.muni.ics.kypo.training.adaptive.domain.training.TrainingDefinition;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.querydsl.QuerydslPredicateExecutor;
+import org.springframework.data.querydsl.binding.QuerydslBinderCustomizer;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
 
 @Repository
-public interface TrainingPhaseRepository extends JpaRepository<TrainingPhase, Long> {
+public interface TrainingPhaseRepository extends JpaRepository<TrainingPhase, Long> , QuerydslPredicateExecutor<TrainingPhase> {
 
     @Query("SELECT COUNT(p.id) FROM TrainingPhase p WHERE p.trainingDefinition.id = :trainingDefinitionId")
     int getNumberOfExistingPhases(@Param("trainingDefinitionId") Long trainingDefinitionId);
-- 
GitLab