package org.projectusus.core.filerelations.model; import org.jgrapht.alg.StrongConnectivityInspector; public class CrossPackageClassRelations extends Relations<ClassDescriptor> { private ClassCycles classCycles; public CrossPackageClassRelations() { calcClassRelations(); calcClassCycles(); } private void calcClassRelations() { for( ClassDescriptor source : ClassDescriptor.getAll() ) { for( ClassDescriptor target : source.getChildrenInOtherPackages() ) { this.add( source, target ); } } } private void calcClassCycles() { RelationGraph<ClassDescriptor> graph = new RelationGraph<ClassDescriptor>( this ); StrongConnectivityInspector<ClassDescriptor, Relation<ClassDescriptor>> inspector = new StrongConnectivityInspector<ClassDescriptor, Relation<ClassDescriptor>>( graph ); classCycles = new ClassCycles( inspector.stronglyConnectedSets() ); } public ClassCycles getCrossPackageClassCycles() { return classCycles; } }