/** * Return the classes in the model in level order from shallowest to deepest, the order of nodes * at any given level is undefined. The list does not include InterMineObject. * @return ClassDescriptors from the model in depth order */ public synchronized List<ClassDescriptor> getTopDownLevelTraversal() { if (topDownOrderClasses == null) { topDownOrderClasses = new ArrayList<ClassDescriptor>(); // start from InterMineObject which is the root LinkedList<ClassDescriptor> queue = new LinkedList<ClassDescriptor>(); // Simple objects don't have any inheritance so can go at the front queue.addAll(getSimpleObjectClassDescriptors()); queue.add(rootCld); while (!queue.isEmpty()) { ClassDescriptor node = queue.remove(); if (!topDownOrderClasses.contains(node)) { topDownOrderClasses.add(node); } // add direct subclasses to the queue if (node.getSubDescriptors() != null) { queue.addAll(node.getSubDescriptors()); } } } return topDownOrderClasses; }
/** * Return the classes in the model in level order from shallowest to deepest, the order of nodes * at any given level is undefined. The list does not include InterMineObject. * @return ClassDescriptors from the model in depth order */ public synchronized List<ClassDescriptor> getTopDownLevelTraversal() { if (topDownOrderClasses == null) { topDownOrderClasses = new ArrayList<ClassDescriptor>(); // start from InterMineObject which is the root LinkedList<ClassDescriptor> queue = new LinkedList<ClassDescriptor>(); // Simple objects don't have any inheritance so can go at the front queue.addAll(getSimpleObjectClassDescriptors()); queue.add(rootCld); while (!queue.isEmpty()) { ClassDescriptor node = queue.remove(); if (!topDownOrderClasses.contains(node)) { topDownOrderClasses.add(node); } // add direct subclasses to the queue if (node.getSubDescriptors() != null) { queue.addAll(node.getSubDescriptors()); } } } return topDownOrderClasses; }
public void testGetSimpleObjectClassDescriptors() throws Exception { Model simpleObjectModel = getSimpleObjectModel(); ClassDescriptor simple = simpleObjectModel.getClassDescriptorByName("Simple"); Set<ClassDescriptor> expected = new HashSet<ClassDescriptor>(Collections.singleton(simple)); assertEquals(expected, simpleObjectModel.getSimpleObjectClassDescriptors()); }