/** * Return a Set of ClassDescriptors for all classes that directly extend or implement this class * or interface. * * @return set of subclass ClassDescriptors * @throws IllegalStateException if the set of subclasses has not been set */ public Set<ClassDescriptor> getSubDescriptors() { checkModel(); return model.getDirectSubs(this); }
/** * Return a Set of ClassDescriptors for all classes that directly extend or implement this class * or interface. * * @return set of subclass ClassDescriptors * @throws IllegalStateException if the set of subclasses has not been set */ public Set<ClassDescriptor> getSubDescriptors() { checkModel(); return model.getDirectSubs(this); }
/** * Get the ClassDescriptors for the all subclasses of a class * @param cld the parent ClassDescriptor * @return the ClassDescriptors of all descedents */ public Set<ClassDescriptor> getAllSubs(ClassDescriptor cld) { Set<ClassDescriptor> returnSubs = new TreeSet<ClassDescriptor>(); Set<ClassDescriptor> directSubs = getDirectSubs(cld); returnSubs.addAll(directSubs); for (ClassDescriptor sub : directSubs) { returnSubs.addAll(getAllSubs(sub)); } return returnSubs; }
/** * Get the ClassDescriptors for the all subclasses of a class * @param cld the parent ClassDescriptor * @return the ClassDescriptors of all descedents */ public Set<ClassDescriptor> getAllSubs(ClassDescriptor cld) { Set<ClassDescriptor> returnSubs = new TreeSet<ClassDescriptor>(); Set<ClassDescriptor> directSubs = getDirectSubs(cld); returnSubs.addAll(directSubs); for (ClassDescriptor sub : directSubs) { returnSubs.addAll(getAllSubs(sub)); } return returnSubs; }
public void testGetDirectSubs() throws Exception { Model model = Model.getInstanceByName("basicmodel"); Set<ClassDescriptor> hasAddressCds = model.getClassDescriptorsForClass(org.intermine.model.basicmodel.Thing.class); assertEquals(1, hasAddressCds.size()); ClassDescriptor addressCld = (ClassDescriptor) hasAddressCds.iterator().next(); if (addressCld.getName() == "org.intermine.model.InterMineObject") { // we want org.intermine.model.basicmodel.HasAddress addressCld = (ClassDescriptor) hasAddressCds.iterator().next(); } Set<ClassDescriptor> resultCds = model.getDirectSubs(addressCld); Set<String> expectedCdNames = new HashSet<String>(); expectedCdNames.add("org.intermine.model.basicmodel.Employable"); expectedCdNames.add("org.intermine.model.basicmodel.Address"); expectedCdNames.add("org.intermine.model.basicmodel.Department"); Set<String> resultCdNames = new HashSet<String>(); for (ClassDescriptor cld : resultCds) { resultCdNames.add(cld.getName()); } assertEquals(expectedCdNames, resultCdNames); }