public void update(final Office newParent) { if (this.parent == null) { throw new RootOfficeParentCannotBeUpdated(); } if (this.identifiedBy(newParent.getId())) { throw new CannotUpdateOfficeWithParentOfficeSameAsSelf(this.getId(), newParent.getId()); } this.parent = newParent; generateHierarchy(); }
private boolean hasAnOfficeInHierarchyWithId(final Long officeId) { boolean match = false; if (identifiedBy(officeId)) { match = true; } if (!match) { for (final Office child : this.children) { final boolean result = child.hasAnOfficeInHierarchyWithId(officeId); if (result) { match = result; break; } } } return match; }