Search in sources :

Example 11 with EnrollmentDetail

use of org.sagebionetworks.bridge.models.studies.EnrollmentDetail in project BridgeServer2 by Sage-Bionetworks.

the class HibernateEnrollmentDaoTest method getEnrollmentsForStudyWithArguments.

@SuppressWarnings("unchecked")
@Test
public void getEnrollmentsForStudyWithArguments() {
    HibernateEnrollment en1 = new HibernateEnrollment();
    en1.setAccountId("id1");
    en1.setEnrolledBy("id2");
    en1.setWithdrawnBy("id3");
    HibernateEnrollment en2 = new HibernateEnrollment();
    List<HibernateEnrollment> page = ImmutableList.of(en1, en2);
    when(mockHelper.queryCount(any(), any())).thenReturn(20);
    when(mockHelper.queryGet(any(), any(), any(), any(), eq(HibernateEnrollment.class))).thenReturn(page);
    HibernateAccount account1 = new HibernateAccount();
    account1.setLastName("account1");
    HibernateAccount account2 = new HibernateAccount();
    account2.setLastName("account2");
    HibernateAccount account3 = new HibernateAccount();
    account3.setLastName("account3");
    when(mockHelper.queryGet(eq(REF_QUERY), any(), isNull(), eq(1), eq(HibernateAccount.class))).thenReturn(ImmutableList.of(account1), ImmutableList.of(account2), ImmutableList.of(account3));
    PagedResourceList<EnrollmentDetail> retValue = dao.getEnrollmentsForStudy(TEST_APP_ID, TEST_STUDY_ID, ENROLLED, true, 10, 75);
    assertEquals(retValue.getTotal(), Integer.valueOf(20));
    assertEquals(retValue.getItems().size(), 2);
    EnrollmentDetail detail1 = retValue.getItems().get(0);
    assertEquals(detail1.getParticipant().getLastName(), "account1");
    assertEquals(detail1.getEnrolledBy().getLastName(), "account2");
    assertEquals(detail1.getWithdrawnBy().getLastName(), "account3");
    // This one is empty
    EnrollmentDetail detail2 = retValue.getItems().get(1);
    assertNull(detail2.getParticipant());
    assertNull(detail2.getEnrolledBy());
    assertNull(detail2.getWithdrawnBy());
    verify(mockHelper).queryGet(queryCaptor.capture(), paramsCaptor.capture(), eq(10), eq(75), eq(HibernateEnrollment.class));
    assertEquals(queryCaptor.getValue(), "SELECT h FROM HibernateEnrollment AS h WHERE h.appId = " + ":appId AND h.studyId = :studyId AND withdrawnOn IS NULL");
    assertEquals(paramsCaptor.getValue().get("appId"), TEST_APP_ID);
    assertEquals(paramsCaptor.getValue().get("studyId"), TEST_STUDY_ID);
}
Also used : EnrollmentDetail(org.sagebionetworks.bridge.models.studies.EnrollmentDetail) Test(org.testng.annotations.Test)

Example 12 with EnrollmentDetail

use of org.sagebionetworks.bridge.models.studies.EnrollmentDetail in project BridgeServer2 by Sage-Bionetworks.

the class HibernateEnrollmentDaoTest method getEnrollmentsForStudyExcludesTestUsers.

@SuppressWarnings("unchecked")
@Test
public void getEnrollmentsForStudyExcludesTestUsers() {
    HibernateEnrollment en1 = new HibernateEnrollment();
    en1.setAccountId("id1");
    en1.setEnrolledBy("id2");
    en1.setWithdrawnBy("id3");
    HibernateEnrollment en2 = new HibernateEnrollment();
    List<HibernateEnrollment> page = ImmutableList.of(en1, en2);
    when(mockHelper.queryCount(any(), any())).thenReturn(20);
    when(mockHelper.queryGet(any(), any(), any(), any(), eq(HibernateEnrollment.class))).thenReturn(page);
    HibernateAccount account1 = new HibernateAccount();
    account1.setLastName("account1");
    HibernateAccount account2 = new HibernateAccount();
    account2.setLastName("account2");
    HibernateAccount account3 = new HibernateAccount();
    account3.setLastName("account3");
    when(mockHelper.queryGet(eq(REF_QUERY), any(), isNull(), eq(1), eq(HibernateAccount.class))).thenReturn(ImmutableList.of(account1), ImmutableList.of(account2), ImmutableList.of(account3));
    PagedResourceList<EnrollmentDetail> retValue = dao.getEnrollmentsForStudy(TEST_APP_ID, TEST_STUDY_ID, ENROLLED, false, 10, 75);
    assertEquals(retValue.getTotal(), Integer.valueOf(20));
    assertEquals(retValue.getItems().size(), 2);
    EnrollmentDetail detail1 = retValue.getItems().get(0);
    assertEquals(detail1.getParticipant().getLastName(), "account1");
    assertEquals(detail1.getEnrolledBy().getLastName(), "account2");
    assertEquals(detail1.getWithdrawnBy().getLastName(), "account3");
    // This one is empty
    EnrollmentDetail detail2 = retValue.getItems().get(1);
    assertNull(detail2.getParticipant());
    assertNull(detail2.getEnrolledBy());
    assertNull(detail2.getWithdrawnBy());
    verify(mockHelper).queryGet(queryCaptor.capture(), paramsCaptor.capture(), eq(10), eq(75), eq(HibernateEnrollment.class));
    assertEquals(queryCaptor.getValue(), "SELECT h FROM HibernateEnrollment AS h INNER JOIN " + "org.sagebionetworks.bridge.hibernate.HibernateAccount AS acct ON acct.id = " + "h.accountId WHERE h.appId = :appId AND h.studyId = :studyId AND withdrawnOn IS NULL " + "AND (:NOTIN1 NOT IN elements(acct.dataGroups))");
    assertEquals(paramsCaptor.getValue().get("appId"), TEST_APP_ID);
    assertEquals(paramsCaptor.getValue().get("studyId"), TEST_STUDY_ID);
    assertEquals(paramsCaptor.getValue().get("NOTIN1"), TEST_USER_GROUP);
}
Also used : EnrollmentDetail(org.sagebionetworks.bridge.models.studies.EnrollmentDetail) Test(org.testng.annotations.Test)

Example 13 with EnrollmentDetail

use of org.sagebionetworks.bridge.models.studies.EnrollmentDetail in project BridgeServer2 by Sage-Bionetworks.

the class HibernateEnrollmentDaoTest method getEnrollmentsForUser_noStudies.

@SuppressWarnings("unchecked")
@Test
public void getEnrollmentsForUser_noStudies() {
    HibernateEnrollment en1 = new HibernateEnrollment();
    en1.setAccountId("id1");
    en1.setEnrolledBy("id2");
    en1.setWithdrawnBy("id3");
    HibernateEnrollment en2 = new HibernateEnrollment();
    List<HibernateEnrollment> page = ImmutableList.of(en1, en2);
    when(mockHelper.queryGet(any(), any(), isNull(), isNull(), eq(HibernateEnrollment.class))).thenReturn(page);
    HibernateAccount account1 = new HibernateAccount();
    account1.setLastName("account1");
    HibernateAccount account2 = new HibernateAccount();
    account2.setLastName("account2");
    HibernateAccount account3 = new HibernateAccount();
    account3.setLastName("account3");
    when(mockHelper.queryGet(eq(REF_QUERY), any(), isNull(), eq(1), eq(HibernateAccount.class))).thenReturn(ImmutableList.of(account1), ImmutableList.of(account2), ImmutableList.of(account3));
    List<EnrollmentDetail> retValue = dao.getEnrollmentsForUser(TEST_APP_ID, null, TEST_USER_ID);
    EnrollmentDetail detail1 = retValue.get(0);
    assertEquals(detail1.getParticipant().getLastName(), "account1");
    assertEquals(detail1.getEnrolledBy().getLastName(), "account2");
    assertEquals(detail1.getWithdrawnBy().getLastName(), "account3");
    verify(mockHelper).queryGet(queryCaptor.capture(), paramsCaptor.capture(), isNull(), isNull(), eq(HibernateEnrollment.class));
    assertEquals(queryCaptor.getValue(), "FROM HibernateEnrollment WHERE appId = :appId AND accountId = :userId");
    assertEquals(paramsCaptor.getValue().get("appId"), TEST_APP_ID);
    assertEquals(paramsCaptor.getValue().get("userId"), TEST_USER_ID);
}
Also used : EnrollmentDetail(org.sagebionetworks.bridge.models.studies.EnrollmentDetail) Test(org.testng.annotations.Test)

Example 14 with EnrollmentDetail

use of org.sagebionetworks.bridge.models.studies.EnrollmentDetail in project BridgeServer2 by Sage-Bionetworks.

the class HibernateEnrollmentDao method getEnrollmentsForUser.

@Override
public List<EnrollmentDetail> getEnrollmentsForUser(String appId, Set<String> studyIds, String userId) {
    QueryBuilder builder = new QueryBuilder();
    builder.append("FROM HibernateEnrollment WHERE");
    builder.append("appId = :appId AND accountId = :userId", "appId", appId, "userId", userId);
    if (studyIds != null && !studyIds.isEmpty()) {
        builder.append("AND studyId IN :studyIds", "studyIds", studyIds);
    }
    List<HibernateEnrollment> enrollments = hibernateHelper.queryGet(builder.getQuery(), builder.getParameters(), null, null, HibernateEnrollment.class);
    return enrollments.stream().map(enrollment -> {
        AccountRef participantRef = nullSafeAccountRef(appId, enrollment.getAccountId());
        AccountRef enrolledByRef = nullSafeAccountRef(appId, enrollment.getEnrolledBy());
        AccountRef withdrawnByRef = nullSafeAccountRef(appId, enrollment.getWithdrawnBy());
        return new EnrollmentDetail(enrollment, participantRef, enrolledByRef, withdrawnByRef);
    }).collect(toList());
}
Also used : ImmutableSet(com.google.common.collect.ImmutableSet) PagedResourceList(org.sagebionetworks.bridge.models.PagedResourceList) ImmutableMap(com.google.common.collect.ImmutableMap) Resource(javax.annotation.Resource) Set(java.util.Set) AND(org.sagebionetworks.bridge.models.SearchTermPredicate.AND) Collectors.toList(java.util.stream.Collectors.toList) List(java.util.List) Component(org.springframework.stereotype.Component) EnrollmentDao(org.sagebionetworks.bridge.dao.EnrollmentDao) TEST_USER_GROUP(org.sagebionetworks.bridge.BridgeConstants.TEST_USER_GROUP) EnrollmentDetail(org.sagebionetworks.bridge.models.studies.EnrollmentDetail) AccountRef(org.sagebionetworks.bridge.models.accounts.AccountRef) WhereClauseBuilder(org.sagebionetworks.bridge.hibernate.QueryBuilder.WhereClauseBuilder) EnrollmentFilter(org.sagebionetworks.bridge.models.studies.EnrollmentFilter) EnrollmentDetail(org.sagebionetworks.bridge.models.studies.EnrollmentDetail) AccountRef(org.sagebionetworks.bridge.models.accounts.AccountRef)

Example 15 with EnrollmentDetail

use of org.sagebionetworks.bridge.models.studies.EnrollmentDetail in project BridgeServer2 by Sage-Bionetworks.

the class HibernateEnrollmentDao method getEnrollmentsForStudy.

@Override
public PagedResourceList<EnrollmentDetail> getEnrollmentsForStudy(String appId, String studyId, EnrollmentFilter filter, boolean includeTesters, Integer offsetBy, Integer pageSize) {
    QueryBuilder builder = new QueryBuilder();
    builder.append("FROM HibernateEnrollment AS h");
    if (!includeTesters) {
        builder.append("INNER JOIN org.sagebionetworks.bridge.hibernate.HibernateAccount AS acct ON acct.id = h.accountId");
    }
    WhereClauseBuilder where = builder.startWhere(AND);
    where.append("h.appId = :appId", "appId", appId);
    where.append("h.studyId = :studyId", "studyId", studyId);
    where.enrollment(filter, false);
    if (!includeTesters) {
        where.dataGroups(ImmutableSet.of(TEST_USER_GROUP), "NOT IN");
    }
    int total = hibernateHelper.queryCount("SELECT COUNT(*) " + builder.getQuery(), builder.getParameters());
    List<HibernateEnrollment> enrollments = hibernateHelper.queryGet("SELECT h " + builder.getQuery(), builder.getParameters(), offsetBy, pageSize, HibernateEnrollment.class);
    List<EnrollmentDetail> dtos = enrollments.stream().map(enrollment -> {
        AccountRef participantRef = nullSafeAccountRef(appId, enrollment.getAccountId());
        AccountRef enrolledByRef = nullSafeAccountRef(appId, enrollment.getEnrolledBy());
        AccountRef withdrawnByRef = nullSafeAccountRef(appId, enrollment.getWithdrawnBy());
        return new EnrollmentDetail(enrollment, participantRef, enrolledByRef, withdrawnByRef);
    }).collect(toList());
    return new PagedResourceList<>(dtos, total, true);
}
Also used : ImmutableSet(com.google.common.collect.ImmutableSet) PagedResourceList(org.sagebionetworks.bridge.models.PagedResourceList) ImmutableMap(com.google.common.collect.ImmutableMap) Resource(javax.annotation.Resource) Set(java.util.Set) AND(org.sagebionetworks.bridge.models.SearchTermPredicate.AND) Collectors.toList(java.util.stream.Collectors.toList) List(java.util.List) Component(org.springframework.stereotype.Component) EnrollmentDao(org.sagebionetworks.bridge.dao.EnrollmentDao) TEST_USER_GROUP(org.sagebionetworks.bridge.BridgeConstants.TEST_USER_GROUP) EnrollmentDetail(org.sagebionetworks.bridge.models.studies.EnrollmentDetail) AccountRef(org.sagebionetworks.bridge.models.accounts.AccountRef) WhereClauseBuilder(org.sagebionetworks.bridge.hibernate.QueryBuilder.WhereClauseBuilder) EnrollmentFilter(org.sagebionetworks.bridge.models.studies.EnrollmentFilter) EnrollmentDetail(org.sagebionetworks.bridge.models.studies.EnrollmentDetail) AccountRef(org.sagebionetworks.bridge.models.accounts.AccountRef) WhereClauseBuilder(org.sagebionetworks.bridge.hibernate.QueryBuilder.WhereClauseBuilder) PagedResourceList(org.sagebionetworks.bridge.models.PagedResourceList)

Aggregations

EnrollmentDetail (org.sagebionetworks.bridge.models.studies.EnrollmentDetail)15 Test (org.testng.annotations.Test)11 PagedResourceList (org.sagebionetworks.bridge.models.PagedResourceList)6 Account (org.sagebionetworks.bridge.models.accounts.Account)4 ImmutableMap (com.google.common.collect.ImmutableMap)2 ImmutableSet (com.google.common.collect.ImmutableSet)2 List (java.util.List)2 Set (java.util.Set)2 Collectors.toList (java.util.stream.Collectors.toList)2 Resource (javax.annotation.Resource)2 TEST_USER_GROUP (org.sagebionetworks.bridge.BridgeConstants.TEST_USER_GROUP)2 EnrollmentDao (org.sagebionetworks.bridge.dao.EnrollmentDao)2 WhereClauseBuilder (org.sagebionetworks.bridge.hibernate.QueryBuilder.WhereClauseBuilder)2 ForwardCursorPagedResourceList (org.sagebionetworks.bridge.models.ForwardCursorPagedResourceList)2 AND (org.sagebionetworks.bridge.models.SearchTermPredicate.AND)2 AccountId (org.sagebionetworks.bridge.models.accounts.AccountId)2 AccountRef (org.sagebionetworks.bridge.models.accounts.AccountRef)2 UserSession (org.sagebionetworks.bridge.models.accounts.UserSession)2 EnrollmentFilter (org.sagebionetworks.bridge.models.studies.EnrollmentFilter)2 Component (org.springframework.stereotype.Component)2