/** * Convenience method to remove an Obs from this grouping This also removes the link in the * given <code>obs</code>object to this obs grouper * * @param member Obs to remove from this group * @see #setGroupMembers(Set) * @see #getGroupMembers() * @should return true when an obs is removed * @should return false when a non existent obs is removed */ public void removeGroupMember(Obs member) { if (member == null || getGroupMembers() == null) { return; } if (groupMembers.remove(member)) { member.setObsGroup(null); } }
/** * 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() * @should return true when a new obs is added as a member * @should return false when a duplicate obs is added as a member */ public void addGroupMember(Obs member) { if (member == null) { return; } if (getGroupMembers() == null) { groupMembers = new HashSet<>(); } // a quick sanity check to make sure someone isn't adding // itself to the group if (member.equals(this)) { throw new APIException("Obs.error.groupCannotHaveItselfAsAMentor", new Object[] { this, member }); } member.setObsGroup(this); groupMembers.add(member); }
/** * Sets the members of an obs group * * @param obsGroup the obs group whose members to set * @param members the members to set */ @PropertySetter("groupMembers") public static void setGroupMembers(Obs obsGroup, Set<Obs> members) { for (Obs member : members) { member.setObsGroup(obsGroup); } obsGroup.setGroupMembers(members); }
/** * Removes any Obs that are empty or which have only empty children */ public static void removeEmptyObs(Collection<Obs> obsList) { if (obsList != null) { Set<Obs> obsToRemove = new HashSet<Obs>(); for (Obs o : obsList) { removeEmptyObs(o.getGroupMembers()); boolean valueEmpty = StringUtils.isEmpty(o.getValueAsString(Context.getLocale())); boolean membersEmpty = o.getGroupMembers() == null || o.getGroupMembers().isEmpty(); if (valueEmpty && membersEmpty) { obsToRemove.add(o); } } for (Obs o : obsToRemove) { if (o.getObsGroup() != null) { o.getObsGroup().removeGroupMember(o); o.setObsGroup(null); } if (o.getEncounter() != null) { o.getEncounter().removeObs(o); o.setEncounter(null); } obsList.remove(o); } } }
obsToCopy.getLocation()); newObs.setObsGroup(obsToCopy.getObsGroup()); newObs.setAccessionNumber(obsToCopy.getAccessionNumber()); newObs.setValueCoded(obsToCopy.getValueCoded());