Skip to content
Snippets Groups Projects
Commit ac86c9ef authored by Dominik Pilár's avatar Dominik Pilár
Browse files

Merge branch...

Merge branch '24-extend-jpa-repositories-by-querydslpredicateexecutor-and-querydslbindercustomizer' into 'master'

Resolve "Extend JPA repositories by QuerydslPredicateExecutor and QuerydslBinderCustomizer"

Closes #24

See merge request muni-kypo/kypolab/kypo-adaptive-training!20
parents c65f814d 1ab4a9e0
No related branches found
No related tags found
1 merge request!20Resolve "Extend JPA repositories by QuerydslPredicateExecutor and QuerydslBinderCustomizer"
Pipeline #73816 passed with stages
in 2 minutes and 53 seconds
Showing
with 28 additions and 11 deletions
...@@ -17,10 +17,10 @@ import org.springframework.context.annotation.Import; ...@@ -17,10 +17,10 @@ import org.springframework.context.annotation.Import;
AdaptiveTrainingWebMvcConfigurer.class, AdaptiveTrainingWebMvcConfigurer.class,
ResourceServerSecurityConfig.class ResourceServerSecurityConfig.class
}) })
public class DemoApplication { public class AdaptiveTrainingApplication {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args); SpringApplication.run(AdaptiveTrainingApplication.class, args);
} }
} }
...@@ -2,9 +2,11 @@ package cz.muni.ics.kypo.training.adaptive.repository; ...@@ -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.QuestionAnswer;
import cz.muni.ics.kypo.training.adaptive.domain.phase.questions.QuestionAnswerId; 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.jpa.repository.JpaRepository;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@Repository @Repository
public interface QuestionAnswerRepository extends JpaRepository<QuestionAnswer, QuestionAnswerId> { public interface QuestionAnswerRepository extends JpaRepository<QuestionAnswer, QuestionAnswerId>, QuerydslPredicateExecutor<QuestionAnswer> {
} }
...@@ -2,8 +2,9 @@ package cz.muni.ics.kypo.training.adaptive.repository; ...@@ -2,8 +2,9 @@ package cz.muni.ics.kypo.training.adaptive.repository;
import cz.muni.ics.kypo.training.adaptive.domain.phase.questions.QuestionPhaseResult; import cz.muni.ics.kypo.training.adaptive.domain.phase.questions.QuestionPhaseResult;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@Repository @Repository
public interface QuestionPhaseResultRepository extends JpaRepository<QuestionPhaseResult, Long> { public interface QuestionPhaseResultRepository extends JpaRepository<QuestionPhaseResult, Long>, QuerydslPredicateExecutor<QuestionPhaseResult> {
} }
package cz.muni.ics.kypo.training.adaptive.repository.phases; 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.AbstractPhase;
import cz.muni.ics.kypo.training.adaptive.domain.phase.QuestionnairePhase;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -11,7 +13,7 @@ import java.util.List; ...@@ -11,7 +13,7 @@ import java.util.List;
import java.util.Optional; import java.util.Optional;
@Repository @Repository
public interface AbstractPhaseRepository extends JpaRepository<AbstractPhase, Long> { public interface AbstractPhaseRepository extends JpaRepository<AbstractPhase, Long>, QuerydslPredicateExecutor<AbstractPhase> {
List<AbstractPhase> findAllByTrainingDefinitionIdOrderByOrder(long trainingDefinitionId); List<AbstractPhase> findAllByTrainingDefinitionIdOrderByOrder(long trainingDefinitionId);
......
...@@ -2,8 +2,9 @@ package cz.muni.ics.kypo.training.adaptive.repository.phases; ...@@ -2,8 +2,9 @@ package cz.muni.ics.kypo.training.adaptive.repository.phases;
import cz.muni.ics.kypo.training.adaptive.domain.phase.InfoPhase; import cz.muni.ics.kypo.training.adaptive.domain.phase.InfoPhase;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@Repository @Repository
public interface InfoPhaseRepository extends JpaRepository<InfoPhase, Long> { public interface InfoPhaseRepository extends JpaRepository<InfoPhase, Long>, QuerydslPredicateExecutor<InfoPhase> {
} }
package cz.muni.ics.kypo.training.adaptive.repository.phases; 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 cz.muni.ics.kypo.training.adaptive.domain.phase.questions.QuestionPhaseRelation;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -10,7 +12,7 @@ import java.util.List; ...@@ -10,7 +12,7 @@ import java.util.List;
import java.util.Set; import java.util.Set;
@Repository @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") @Query("SELECT r FROM QuestionPhaseRelation r INNER JOIN r.questions q WHERE q.id IN :questionIdList")
List<QuestionPhaseRelation> findAllByQuestionIdList(@Param("questionIdList") Set<Long> questionIdList); List<QuestionPhaseRelation> findAllByQuestionIdList(@Param("questionIdList") Set<Long> questionIdList);
......
...@@ -2,12 +2,13 @@ package cz.muni.ics.kypo.training.adaptive.repository.phases; ...@@ -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 cz.muni.ics.kypo.training.adaptive.domain.phase.questions.Question;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.Optional; import java.util.Optional;
@Repository @Repository
public interface QuestionRepository extends JpaRepository<Question, Long> { public interface QuestionRepository extends JpaRepository<Question, Long>, QuerydslPredicateExecutor<Question> {
Optional<Question> findByIdAndQuestionnairePhaseId(Long questionId, Long questionnaireId); Optional<Question> findByIdAndQuestionnairePhaseId(Long questionId, Long questionnaireId);
} }
package cz.muni.ics.kypo.training.adaptive.repository.phases; 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.QuestionnairePhase;
import cz.muni.ics.kypo.training.adaptive.domain.phase.questions.QuestionPhaseRelation;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@Repository @Repository
public interface QuestionnairePhaseRepository extends JpaRepository<QuestionnairePhase, Long> { public interface QuestionnairePhaseRepository extends JpaRepository<QuestionnairePhase, Long>, QuerydslPredicateExecutor<QuestionnairePhase> {
} }
package cz.muni.ics.kypo.training.adaptive.repository.phases; 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.Task;
import cz.muni.ics.kypo.training.adaptive.domain.phase.TrainingPhase;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@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") @Query("SELECT COALESCE(MAX(g.order), -1) FROM Task g WHERE g.trainingPhase.id = :phaseId")
Integer getCurrentMaxOrder(@Param("phaseId") Long phaseId); Integer getCurrentMaxOrder(@Param("phaseId") Long phaseId);
......
package cz.muni.ics.kypo.training.adaptive.repository.phases; 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.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.JpaRepository;
import org.springframework.data.jpa.repository.Query; 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.data.repository.query.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
@Repository @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") @Query("SELECT COUNT(p.id) FROM TrainingPhase p WHERE p.trainingDefinition.id = :trainingDefinitionId")
int getNumberOfExistingPhases(@Param("trainingDefinitionId") Long trainingDefinitionId); int getNumberOfExistingPhases(@Param("trainingDefinitionId") Long trainingDefinitionId);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment