package jdepend.knowledge.domainanalysis.impl;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import jdepend.framework.util.BundleUtil;
import jdepend.knowledge.domainanalysis.AbstractDomainAnalysis;
import jdepend.knowledge.domainanalysis.AdviseInfo;
import jdepend.knowledge.domainanalysis.StructureCategory;
import jdepend.model.result.AnalysisResult;
public final class LowScoreItemIdentifier extends AbstractDomainAnalysis {
/**
*
*/
private static final long serialVersionUID = 7594679029292290185L;
public LowScoreItemIdentifier() {
super("低分项目识别器", "用于识别分数最低的分项项目");
}
@Override
protected AdviseInfo doAdvise(String name, AnalysisResult result) {
List<ScoreScaleItem> items = new ArrayList<ScoreScaleItem>();
if (result.getDistance() != null) {
items.add(new ScoreScaleItem(AnalysisResult.Metrics_D, result.getDistance() / result.getDistanceScale()));
}
if (result.getBalance() != null) {
items.add(new ScoreScaleItem(AnalysisResult.Metrics_Balance, result.getBalance() / result.getBalanceScale()));
}
if (result.getEncapsulation() != null) {
items.add(new ScoreScaleItem(AnalysisResult.Metrics_Encapsulation, result.getEncapsulation()
/ result.getEncapsulationScale()));
}
if (result.getRelationRationality() != null) {
items.add(new ScoreScaleItem(AnalysisResult.Metrics_RelationRationality, result.getRelationRationality()
/ result.getRelationRationalityScale()));
}
if (items.size() > 0) {
Collections.sort(items);
AdviseInfo info = new AdviseInfo();
info.setDesc(BundleUtil.getString(BundleUtil.Advise_LessScoreItem));
info.addComponentName(items.iterator().next().name);
return info;
} else {
return null;
}
}
@Override
public StructureCategory getStructureCategory() {
return StructureCategory.LowScoreItemIdentifier;
}
class ScoreScaleItem implements Comparable<ScoreScaleItem> {
public String name;
public Float scale;
public ScoreScaleItem(String name, Float scale) {
super();
this.name = name;
this.scale = scale;
}
@Override
public int compareTo(ScoreScaleItem o) {
return scale.compareTo(o.scale);
}
}
}