package jdepend.util.analyzer.element;
import java.util.ArrayList;
import java.util.List;
import jdepend.model.result.AnalysisResult;
import jdepend.model.util.JavaClassRelationInfo;
import jdepend.model.util.JavaClassRelationUtil;
import jdepend.util.analyzer.framework.AbstractAnalyzer;
import jdepend.util.analyzer.framework.Analyzer;
import jdepend.util.analyzer.framework.AnalyzerException;
import jdepend.util.analyzer.framework.GraphItemData;
public final class JavaClassRelationView extends AbstractAnalyzer {
/**
*
*/
private static final long serialVersionUID = -4257969468997138180L;
public JavaClassRelationView() {
super("JavaClassRelation浏览", Analyzer.Attention, "JavaClassRelation浏览");
}
@Override
protected void doExecute(AnalysisResult result) throws AnalyzerException {
JavaClassRelationUtil javaClassRelationUtil = new JavaClassRelationUtil(result);
for (JavaClassRelationInfo info : javaClassRelationUtil.getRelationInfos()) {
this.printTable("当前JavaClass", info.current);
this.printTable("依赖的JavaClass", info.depend);
this.printTable("类型", info.type);
this.printTable("是否组件间", info.isInner ? "否" : "是");
this.printTable("强度", info.intensity);
}
this.print(javaClassRelationUtil.getSummaryInfo());
this.printGraphData(this.getGraphData(javaClassRelationUtil));
}
private List<GraphItemData> getGraphData(JavaClassRelationUtil javaClassRelationUtil) {
List<GraphItemData> items = new ArrayList<GraphItemData>();
GraphItemData item = new GraphItemData();
item.setTitle("按类型比例");
item.setGroup("Graph");
item.setType(GraphItemData.PIE);
item.setDatas(javaClassRelationUtil.getTypes());
items.add(item);
item = new GraphItemData();
item.setTitle("按内外比例");
item.setGroup("Graph");
item.setType(GraphItemData.PIE);
item.setDatas(javaClassRelationUtil.getInners());
items.add(item);
item = new GraphItemData();
item.setTitle("组件内按类型比例");
item.setGroup("Graph");
item.setType(GraphItemData.PIE);
item.setDatas(javaClassRelationUtil.getIn_types());
items.add(item);
item = new GraphItemData();
item.setTitle("组件间按类型比例");
item.setGroup("Graph");
item.setType(GraphItemData.PIE);
item.setDatas(javaClassRelationUtil.getExt_types());
items.add(item);
return items;
}
@Override
public String getExplain() {
StringBuilder explain = new StringBuilder();
explain.append("Class间的关系是组件间关系形成的原因。<br>");
explain.append("<strong>JavaClassRelation浏览</strong>从关系的类型,是组件间还是组件内的关系,以及在组件间关系中各类型的类关系的比例等角度展现了Class的关系比例。<br>");
return explain.toString();
}
}