Skip to content

Commit

Permalink
Merge branch 'hotfix-1.4.10'
Browse files Browse the repository at this point in the history
  • Loading branch information
arteymix committed Mar 16, 2022
2 parents a45b701 + 29c0809 commit 23002b4
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 15 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<groupId>ubc.pavlab</groupId>
<artifactId>rdp</artifactId>
<version>1.4.9</version>
<version>1.4.10</version>

<developers>
<developer>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ public interface UserRepository extends JpaRepository<User, Integer> {
@Query("select user from User user left join fetch user.userTerms")
Collection<User> findAllWithUserTerms();

@SuppressWarnings("SpringCacheAnnotationsOnInterfaceInspection")
@Override
long count();

Expand All @@ -49,8 +48,7 @@ public interface UserRepository extends JpaRepository<User, Integer> {
Collection<User> findByProfileNameContainingIgnoreCaseOrProfileLastNameContainingIgnoreCase( String nameLike,
String lastNameLike );

@SuppressWarnings("SpringDataRepositoryMethodParametersInspection")
@QueryHints(@QueryHint(name = "org.hibernate.cacheable", value = "true"))
Collection<User> findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase(
Collection<User> findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase(
String descriptionLike, String taxonDescriptionLike );
}
2 changes: 1 addition & 1 deletion src/main/java/ubc/pavlab/rdp/services/UserServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -368,7 +368,7 @@ public List<User> findByStartsName( String startsName, Set<ResearcherPosition> r
@PostFilter("hasPermission(filterObject, 'read')")
public List<User> findByDescription( String descriptionLike, Set<ResearcherPosition> researcherPositions, Collection<ResearcherCategory> researcherTypes, Collection<OrganInfo> organs ) {
final Set<String> organUberonIds = organUberonIdsFromOrgans( organs );
return userRepository.findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( descriptionLike, descriptionLike ).stream()
return userRepository.findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( descriptionLike, descriptionLike ).stream()
.filter( u -> researcherPositions == null || researcherPositions.contains( u.getProfile().getResearcherPosition() ) )
.filter( u -> researcherTypes == null || containsAny( researcherTypes, u.getProfile().getResearcherCategories() ) )
.filter( u -> organUberonIds == null || containsAny( organUberonIds, u.getUserOrgans().values().stream().map( UserOrgan::getUberonId ).collect( Collectors.toSet() ) ) )
Expand Down
44 changes: 34 additions & 10 deletions src/test/java/ubc/pavlab/rdp/repositories/UserRepositoryTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ public void findByDescriptionLike_whenNoMatch_thenReturnEmptyCollection() {

// when
String search = "xyz";
Collection<User> found = userRepository.findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
Collection<User> found = userRepository.findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );

// then
assertThat( found ).isEmpty();
Expand All @@ -304,7 +304,7 @@ public void findByDescriptionLike_whenMultipleMatchInSameUser_thenReturnSingleUs

// when
String search = "Description";
Collection<User> found = userRepository.findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
Collection<User> found = userRepository.findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );

// then
assertThat( found ).hasSize( 1 );
Expand All @@ -322,7 +322,7 @@ public void findByDescriptionLike_whenCaseInsensitiveMatch_thenReturnUser() {

// when
String search = user.getProfile().getDescription().toUpperCase();
Collection<User> found = userRepository.findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
Collection<User> found = userRepository.findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );

// then
assertThat( found ).hasSize( 1 );
Expand All @@ -340,7 +340,7 @@ public void findByDescriptionLike_whenDescriptionStartsWithMatch_thenReturnUser(

// when
String search = user.getProfile().getDescription().substring( 0, 3 );
Collection<User> found = userRepository.findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
Collection<User> found = userRepository.findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );

// then
assertThat( found ).hasSize( 1 );
Expand All @@ -358,7 +358,7 @@ public void findByDescriptionLike_whenDescriptionEndsWithMatch_thenReturnUser()

// when
String search = user.getProfile().getDescription().substring( 3 );
Collection<User> found = userRepository.findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
Collection<User> found = userRepository.findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );

// then
assertThat( found ).hasSize( 1 );
Expand All @@ -376,7 +376,7 @@ public void findByDescriptionLike_whenDescriptionContainsMatch_thenReturnUser()

// when
String search = user.getProfile().getDescription().substring( 1, 3 );
Collection<User> found = userRepository.findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
Collection<User> found = userRepository.findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );

// then
assertThat( found ).hasSize( 1 );
Expand All @@ -395,7 +395,7 @@ public void findByDescriptionLike_whenTaxonDescriptionStartsWithMatch_thenReturn

// when
String search = user.getTaxonDescriptions().get( taxon ).substring( 0, 3 );
Collection<User> found = userRepository.findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
Collection<User> found = userRepository.findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );

// then
assertThat( found ).hasSize( 1 );
Expand All @@ -414,7 +414,7 @@ public void findByDescriptionLike_whenTaxonDescriptionEndsWithMatch_thenReturnUs

// when
String search = user.getTaxonDescriptions().get( taxon ).substring( 3 );
Collection<User> found = userRepository.findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
Collection<User> found = userRepository.findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );

// then
assertThat( found ).hasSize( 1 );
Expand All @@ -433,7 +433,7 @@ public void findByDescriptionLike_whenTaxonDescriptionContainsMatch_thenReturnUs

// when
String search = user.getTaxonDescriptions().get( taxon ).substring( 1, 3 );
Collection<User> found = userRepository.findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
Collection<User> found = userRepository.findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );

// then
assertThat( found ).hasSize( 1 );
Expand All @@ -454,13 +454,37 @@ public void findByDescriptionLike_whenMultipleMatches_thenReturnMultipleUsers()

// when
String search = user.getProfile().getDescription();
Collection<User> found = userRepository.findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
Collection<User> found = userRepository.findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );

// then
assertThat( found ).hasSize( 2 );
assertThat( found ).containsExactly( user, user2 );
}

@Test
public void findByDescriptionLike_whenMultipleMatchInMultipleTaxa_thenReturnSingleUser() {
// given
User user = createUnpersistedUser();
user.getProfile().setDescription( "Test Description" );

Taxon taxon = entityManager.persist( createTaxon( 1 ) );
user.getTaxonDescriptions().put( taxon, "Taxon Description" );

Taxon taxon2 = entityManager.persist( createTaxon( 2 ) );
user.getTaxonDescriptions().put( taxon2, "Taxon Description" );

entityManager.persist( user );
entityManager.flush();

// when
String search = "Description";
Collection<User> found = userRepository.findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );

// then
assertThat( found ).hasSize( 1 );
assertThat( found.iterator().next() ).isEqualTo( user );
}

@Test
public void save_whenUserWithCompleteProfile_thenSucceed() {
User user = createUnpersistedUser();
Expand Down

0 comments on commit 23002b4

Please sign in to comment.