Skip to content

Commit 23002b4

Browse files
committed
Merge branch 'hotfix-1.4.10'
2 parents a45b701 + 29c0809 commit 23002b4

File tree

4 files changed

+37
-15
lines changed

4 files changed

+37
-15
lines changed

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>ubc.pavlab</groupId>
77
<artifactId>rdp</artifactId>
8-
<version>1.4.9</version>
8+
<version>1.4.10</version>
99

1010
<developers>
1111
<developer>

src/main/java/ubc/pavlab/rdp/repositories/UserRepository.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ public interface UserRepository extends JpaRepository<User, Integer> {
2222
@Query("select user from User user left join fetch user.userTerms")
2323
Collection<User> findAllWithUserTerms();
2424

25-
@SuppressWarnings("SpringCacheAnnotationsOnInterfaceInspection")
2625
@Override
2726
long count();
2827

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

52-
@SuppressWarnings("SpringDataRepositoryMethodParametersInspection")
5351
@QueryHints(@QueryHint(name = "org.hibernate.cacheable", value = "true"))
54-
Collection<User> findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase(
52+
Collection<User> findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase(
5553
String descriptionLike, String taxonDescriptionLike );
5654
}

src/main/java/ubc/pavlab/rdp/services/UserServiceImpl.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ public List<User> findByStartsName( String startsName, Set<ResearcherPosition> r
368368
@PostFilter("hasPermission(filterObject, 'read')")
369369
public List<User> findByDescription( String descriptionLike, Set<ResearcherPosition> researcherPositions, Collection<ResearcherCategory> researcherTypes, Collection<OrganInfo> organs ) {
370370
final Set<String> organUberonIds = organUberonIdsFromOrgans( organs );
371-
return userRepository.findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( descriptionLike, descriptionLike ).stream()
371+
return userRepository.findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( descriptionLike, descriptionLike ).stream()
372372
.filter( u -> researcherPositions == null || researcherPositions.contains( u.getProfile().getResearcherPosition() ) )
373373
.filter( u -> researcherTypes == null || containsAny( researcherTypes, u.getProfile().getResearcherCategories() ) )
374374
.filter( u -> organUberonIds == null || containsAny( organUberonIds, u.getUserOrgans().values().stream().map( UserOrgan::getUberonId ).collect( Collectors.toSet() ) ) )

src/test/java/ubc/pavlab/rdp/repositories/UserRepositoryTest.java

+34-10
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ public void findByDescriptionLike_whenNoMatch_thenReturnEmptyCollection() {
285285

286286
// when
287287
String search = "xyz";
288-
Collection<User> found = userRepository.findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
288+
Collection<User> found = userRepository.findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
289289

290290
// then
291291
assertThat( found ).isEmpty();
@@ -304,7 +304,7 @@ public void findByDescriptionLike_whenMultipleMatchInSameUser_thenReturnSingleUs
304304

305305
// when
306306
String search = "Description";
307-
Collection<User> found = userRepository.findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
307+
Collection<User> found = userRepository.findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
308308

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

323323
// when
324324
String search = user.getProfile().getDescription().toUpperCase();
325-
Collection<User> found = userRepository.findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
325+
Collection<User> found = userRepository.findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
326326

327327
// then
328328
assertThat( found ).hasSize( 1 );
@@ -340,7 +340,7 @@ public void findByDescriptionLike_whenDescriptionStartsWithMatch_thenReturnUser(
340340

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

345345
// then
346346
assertThat( found ).hasSize( 1 );
@@ -358,7 +358,7 @@ public void findByDescriptionLike_whenDescriptionEndsWithMatch_thenReturnUser()
358358

359359
// when
360360
String search = user.getProfile().getDescription().substring( 3 );
361-
Collection<User> found = userRepository.findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
361+
Collection<User> found = userRepository.findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
362362

363363
// then
364364
assertThat( found ).hasSize( 1 );
@@ -376,7 +376,7 @@ public void findByDescriptionLike_whenDescriptionContainsMatch_thenReturnUser()
376376

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

381381
// then
382382
assertThat( found ).hasSize( 1 );
@@ -395,7 +395,7 @@ public void findByDescriptionLike_whenTaxonDescriptionStartsWithMatch_thenReturn
395395

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

400400
// then
401401
assertThat( found ).hasSize( 1 );
@@ -414,7 +414,7 @@ public void findByDescriptionLike_whenTaxonDescriptionEndsWithMatch_thenReturnUs
414414

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

419419
// then
420420
assertThat( found ).hasSize( 1 );
@@ -433,7 +433,7 @@ public void findByDescriptionLike_whenTaxonDescriptionContainsMatch_thenReturnUs
433433

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

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

455455
// when
456456
String search = user.getProfile().getDescription();
457-
Collection<User> found = userRepository.findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
457+
Collection<User> found = userRepository.findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
458458

459459
// then
460460
assertThat( found ).hasSize( 2 );
461461
assertThat( found ).containsExactly( user, user2 );
462462
}
463463

464+
@Test
465+
public void findByDescriptionLike_whenMultipleMatchInMultipleTaxa_thenReturnSingleUser() {
466+
// given
467+
User user = createUnpersistedUser();
468+
user.getProfile().setDescription( "Test Description" );
469+
470+
Taxon taxon = entityManager.persist( createTaxon( 1 ) );
471+
user.getTaxonDescriptions().put( taxon, "Taxon Description" );
472+
473+
Taxon taxon2 = entityManager.persist( createTaxon( 2 ) );
474+
user.getTaxonDescriptions().put( taxon2, "Taxon Description" );
475+
476+
entityManager.persist( user );
477+
entityManager.flush();
478+
479+
// when
480+
String search = "Description";
481+
Collection<User> found = userRepository.findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase( search, search );
482+
483+
// then
484+
assertThat( found ).hasSize( 1 );
485+
assertThat( found.iterator().next() ).isEqualTo( user );
486+
}
487+
464488
@Test
465489
public void save_whenUserWithCompleteProfile_thenSucceed() {
466490
User user = createUnpersistedUser();

0 commit comments

Comments
 (0)