public boolean isChildOf(HierarchicalRecord record) { if (record != null) { for (HierarchicalRecord child : record.getChildRecords()) { if (this == child) return true; if (isChildOf(child)) return true; } } return false; }
@Override public void mergeWith(Record record, Map<Record, Object> recordsToRefresh) { super.mergeWith(record, recordsToRefresh); HierarchicalRecord hierarchicalRecord = (HierarchicalRecord) record; // parent ids for (HierarchicalRecord parentRecord : hierarchicalRecord.getParentRecords()) { if (!isParentOf(parentRecord) && !parentRecord.isRoot()) getHierarchicalIndex().addRelationship(parentRecord, this); } // child ids for (HierarchicalRecord childRecord : hierarchicalRecord.getChildRecords()) { if (!isChildOf(childRecord)) getHierarchicalIndex().addRelationship(this, childRecord); } }