public boolean fileHasDependency(File file, File dependency) { Validate.notNull(file, "File can't be null"); Validate.notNull(dependency, "Dependency can't be null"); HierarchyNode fileNode = getNode(file); Validate.notNull(fileNode, "File isn't in hierarchy: " + file); return fileNode.containsDependency(dependency); }
public Set<HierarchyNode> getParentsFor(HierarchyNode node) { Validate.notNull(node, "Hierarchy node can't be null"); Set<HierarchyNode> parents = new LinkedHashSet<HierarchyNode>(); for (HierarchyNode n : nodes.values()) { if (n.getDependencies().contains(node.getFile())) { parents.add(n); } } return parents; }
public Hierarchy(Project project, Collection<HierarchyNode> collection) { Validate.notNull(project, "Project can't be null"); Validate.notNull(collection, "Nodes can't be null"); this.project = EntityUtils.lightweightClone(project); this.nodes = new LinkedHashMap<File, HierarchyNode>(collection.size()); for (HierarchyNode n : collection) { this.nodes.put(n.getFile(), n); } this.initNodes(); }
private void initNodes() { Collection<HierarchyNode> allNodes = nodes.values(); topLevelNodes = new LinkedHashSet<HierarchyNode>(allNodes); bottomLevelNodes = new LinkedHashSet<HierarchyNode>(); for (HierarchyNode n : allNodes) { if (!n.hasDependencies()) { bottomLevelNodes.add(n); } for (File f : n.getDependencies()) { topLevelNodes.remove(nodes.get(f)); } } }
public Set<HierarchyNode> getDependenciesFor(HierarchyNode node) { Validate.notNull(node, "Hierarchy node can't be null"); Set<File> nodeDependencies = node.getDependencies(); Set<HierarchyNode> dependencies = new LinkedHashSet<HierarchyNode>(nodeDependencies.size()); for (File f : nodeDependencies) { dependencies.add(nodes.get(f)); } return dependencies; }
public static Hashtable buildInheritanceHierarchyTree(Project project) { Map descriptors = project.getDescriptors(); Hashtable hierarchyTree = new Hashtable(descriptors.size()); for (Iterator descriptorIterator = descriptors.values().iterator(); descriptorIterator.hasNext(); ) { ClassDescriptor descriptor = (ClassDescriptor) descriptorIterator.next(); String className = descriptor.getJavaClassName(); if (className == null) { className = descriptor.getJavaClass().getName(); } HierarchyNode node = getNodeForClass(className, hierarchyTree); if (descriptor.hasInheritance() && (descriptor.getInheritancePolicy().getParentClassName() != null)) { HierarchyNode parentNode = getNodeForClass(descriptor.getInheritancePolicy().getParentClassName(), hierarchyTree); node.setParent(parentNode); } } return hierarchyTree; }