package jdepend.model.util;
import java.util.Collection;
import java.util.HashSet;
import jdepend.metadata.JavaClass;
import jdepend.metadata.JavaClassRelationItem;
import jdepend.metadata.JavaPackage;
import jdepend.model.Component;
import jdepend.model.JavaClassUnit;
import jdepend.model.result.AnalysisResult;
public class JavaClassUnitUtil {
public static Collection<JavaPackage> getJavaPackages(Collection<Component> components) {
Collection<JavaPackage> javaPackages = new HashSet<JavaPackage>();
for (Component component : components) {
for (JavaPackage javaPackage : component.getJavaPackages()) {
javaPackages.add(javaPackage);
}
}
return javaPackages;
}
public static Collection<JavaClassUnit> getClasses(Collection<Component> components) {
Collection<JavaClassUnit> javaClasses = new HashSet<JavaClassUnit>();
for (Component component : components) {
javaClasses.addAll(component.getClasses());
}
return javaClasses;
}
public static Collection<JavaClass> getAllClasses(Collection<Component> components) {
Collection<JavaClass> javaClasses = new HashSet<JavaClass>();
for (Component component : components) {
for (JavaClassUnit javaClass : component.getClasses()) {
javaClasses.add(javaClass.getJavaClass());
javaClasses.addAll(javaClass.getJavaClass().getInnerClasses());
}
}
return javaClasses;
}
public static Collection<JavaClass> getJavaClasses(Collection<JavaClassUnit> javaClassUnits) {
Collection<JavaClass> classes = new HashSet<JavaClass>();
for (JavaClassUnit javaClassUnit : javaClassUnits) {
classes.add(javaClassUnit.getJavaClass());
}
return classes;
}
/**
* 该关系是同一个组件内的关系
*
* @return
*/
public static boolean isInner(JavaClassRelationItem item, AnalysisResult result) {
return result.getTheClass(item.getSource().getId()).getComponent()
.equals(result.getTheClass(item.getTarget().getId()).getComponent());
}
/**
* 判断该关系是否是组件间的类关系
*
* @return
*/
public static boolean crossComponent(JavaClassRelationItem item, AnalysisResult result) {
return !result.getTheClass(item.getSource().getId()).getComponent()
.containsClass(result.getTheClass(item.getTarget().getId()));
}
}