diff --git a/api/src/main/java/org/openmrs/Cohort.java b/api/src/main/java/org/openmrs/Cohort.java index c102c05c08a7..41b7d31d7000 100644 --- a/api/src/main/java/org/openmrs/Cohort.java +++ b/api/src/main/java/org/openmrs/Cohort.java @@ -338,8 +338,11 @@ public Set getMemberIds() { @Deprecated public void setMemberIds(Set memberIds) { if (getMemberships().size() == 0) { + Date startDate = new Date(); for (Integer id : memberIds) { - addMembership(new CohortMembership(id)); + CohortMembership membership = new CohortMembership(id, startDate); + membership.setCohort(this); + getMemberships().add(membership); } } else { diff --git a/api/src/test/java/org/openmrs/CohortTest.java b/api/src/test/java/org/openmrs/CohortTest.java index 10361d0c7b95..48e295ed19be 100644 --- a/api/src/test/java/org/openmrs/CohortTest.java +++ b/api/src/test/java/org/openmrs/CohortTest.java @@ -9,17 +9,20 @@ */ package org.openmrs; -import static org.junit.Assert.assertTrue; +import org.apache.commons.lang3.StringUtils; +import org.junit.Assert; +import org.junit.Test; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Date; +import java.util.HashSet; import java.util.List; +import java.util.Set; -import org.apache.commons.lang3.StringUtils; -import org.junit.Test; +import static org.junit.Assert.assertTrue; /** * Behavior-driven tests of the Cohort class. @@ -147,4 +150,19 @@ public void intersect_shouldContainVoidedAndExpiredMemberships() throws Exceptio assertTrue(m.getVoided() && m.getEndDate() != null); }); } + + @Test + public void setMemberIds_shouldSupportLargeCohorts() { + int cohortSize = 100000; + Cohort c = new Cohort(); + Set ids = new HashSet(); + for (int i=0; i