/** * Convenience method to add the given <code>obs</code> to this grouping. Will implicitly make * this obs an ObsGroup * * @param member Obs to add to this group * @see #setGroupMembers(Set) * @see #getGroupMembers() */ public void addGroupMember(Obs member) { if (member == null) return; if (getGroupMembers() == null) groupMembers = new HashSet<Obs>(); // a quick sanity check to make sure someone isn't adding // itself to the group if (member.equals(this)) throw new APIException( "An obsGroup cannot have itself as a mentor. obsGroup: " + this + " obsMember attempting to add: " + member); member.setObsGroup(this); groupMembers.add(member); }
/** @see Encounter#getObs() */ @Test @Verifies(value = "should only get child obs", method = "getObs()") public void getObs_shouldOnlyGetChildObs() throws Exception { Encounter encounter = new Encounter(); // create and add an Obs Obs parentObs = new Obs(); encounter.addObs(parentObs); // add a child to the obs and make sure that the Obs is an ObsGroup with one child: Obs childObs = new Obs(); parentObs.addGroupMember(childObs); // obsGroup should recurse and ONLY the child obs should be picked up: assertEquals(1, encounter.getObs().size()); // make sure that the obs is the oChild Obs obsInEncounter = (Obs) encounter.getObs().toArray()[0]; assertTrue(childObs.equals(obsInEncounter)); assertFalse(obsInEncounter.isObsGrouping()); }