/** * Get the level of detail of current in the DECLARED hierarchy of base - i.e. using * the model objects declared in k.IM. Only works with trait and class types, as this * is only relevant to classifications. * * @param base * @param current * @return detail level of current within base */ public static int getDetailLevel(IConcept base, IConcept current) { return getDetailLevel(base, current.toString()); }
/** * If current is a child of base at passed level, return it; otherwise return the * parent at the passed level, or null if the concept is unrelated or higher than * level. Uses the model object (stated) hierarchy. * * @param base * @param current * @param level * @return parent at level */ public static IConcept getParentAtLevel(IConcept base, IConcept current, int level) { IConcept ret = null; if (current.is(base)) { int l = getDetailLevel(base, current); if (l == level) { return current; } if (l > level) { for (IConcept c : getChildrenAtLevel(base, level)) { if (current.is(c)) { return c; } } } } return ret; }
.getChildrenAtLevel(trait, Types.getDetailLevel(trait, downTo))); cId += "DownTo" + cleanInternalId(downTo.getLocalName());