public boolean isSubCategory ( HierarchyAttribute comp ) { // Check that the comparator is of the same type class as this one. if ( ! comp . attributeClass . attributeClassName . equals ( attributeClass . attributeClassName ) ) { return false ; } // Extract the path labels from this and the comparator. List < String > otherPath = comp . getPathValue ( ) ; List < String > path = getPathValue ( ) ; // Check that the path length of the comparator is the same as this plus one or longer. if ( otherPath . size ( ) <= path . size ( ) ) { return false ; } // Start by assuming that the paths prefixes are the same, then walk down both paths checking they are // the same. boolean subcat = true ; for ( int i = 0 ; i < path . size ( ) ; i ++ ) { // Check that the labels really are equal. if ( ! otherPath . get ( i ) . equals ( path . get ( i ) ) ) { subcat = false ; break ; } } return subcat ; }
Tests if another hierarchy attribute is strict a sub - category of this one . It is a sub - category if it has the same sequence of path labels as this one as a prefix of its whole path label .