package jdepend.webserver.model;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import jdepend.core.domain.WisdomAnalysisResult;
import jdepend.framework.exception.JDependException;
import jdepend.framework.util.MetricsFormat;
import jdepend.knowledge.architectpattern.ArchitectPatternMgr;
import jdepend.knowledge.architectpattern.ArchitectPatternResult;
import jdepend.knowledge.domainanalysis.AdviseInfo;
import jdepend.knowledge.domainanalysis.StructureCategory;
import jdepend.model.Measurable;
import jdepend.model.Relation;
import jdepend.model.result.AnalysisResult;
import jdepend.model.util.RelationByMetricsComparator;
public class WebAnalysisResult extends WisdomAnalysisResult {
private static final long serialVersionUID = 6554084973911277359L;
public WebAnalysisResult(AnalysisResult result) {
super(result);
}
public String getProblemRelationScale() {
return MetricsFormat.toFormattedPercent(this.getAttentionRelationScale());
}
public String getDAdvise() {
return this.advise(StructureCategory.DDomainAnalysis);
}
public String getBalanceAdvise() {
return this.advise(StructureCategory.CohesionDomainAnalysis);
}
public String getEncapsulationAdvise() {
return this.advise(StructureCategory.EncapsulationDomainAnalysis);
}
public String getRelationRationalityAdvise() {
return this.advise(StructureCategory.RelationRationalityDomainAnalysis);
}
public List<Measurable> getSummarys() {
List<Measurable> summarys = new ArrayList<Measurable>(this.getComponents());
summarys.add(new WebAnalysisResultSummary(this.getSummary()));
return summarys;
}
@Override
public Collection<Relation> getRelations() {
List<Relation> relations = new ArrayList<Relation>(super.getRelations());
Collections.sort(relations, new RelationByMetricsComparator(Relation.AttentionLevel, false));
return relations;
}
public ArchitectPatternResult getArchitectPatternResult() {
try {
return ArchitectPatternMgr.getInstance().identify(this);
} catch (JDependException e) {
e.printStackTrace();
return null;
}
}
private String advise(StructureCategory category) {
try {
AdviseInfo advise = this.getAdvise(category);
if (advise != null) {
return advise.toString();
} else {
return null;
}
} catch (JDependException e) {
e.printStackTrace();
return null;
}
}
}