package jdepend.parse.impl; import java.util.concurrent.ExecutorService; import jdepend.framework.log.LogUtil; import jdepend.framework.util.ThreadPool; import jdepend.metadata.JavaClass; import jdepend.metadata.JavaClassRelationType; import jdepend.metadata.relationtype.JavaClassRelationTypes; import jdepend.metadata.util.JavaClassCollection; import jdepend.parse.ParseConfigurator; public class JavaClassRelationCreator { private JavaClassRelationTypes javaClassRelationTypes; public JavaClassRelationCreator(ParseConfigurator conf) { super(); javaClassRelationTypes = conf.getJavaClassRelationTypes(); } private void init(JavaClassCollection javaClasses) { javaClassRelationTypes.getTypes().forEach((name, type) -> { type.init(javaClasses); }); } public void create(final JavaClassCollection javaClasses) { this.init(javaClasses); ExecutorService pool = ThreadPool.getPool(); for (final String unit : javaClasses.getUnitJavaClasses().keySet()) { pool.execute(new Runnable() { @Override public void run() { for (JavaClass javaClass : javaClasses.getUnitJavaClasses().get(unit)) { if (javaClass.isInner()) { LogUtil.getInstance(JavaClassRelationCreator.class).systemLog( "开始建立Class的关系:" + javaClass.getName()); for (JavaClassRelationType javaClassRelationType : javaClassRelationTypes.getTypes() .values()) { javaClassRelationType.create(javaClass, javaClasses); } } } } }); } ThreadPool.awaitTermination(pool); } }