package jdepend.knowledge.domainanalysis;
import java.util.ArrayList;
import java.util.List;
import jdepend.knowledge.domainanalysis.impl.ArchitectPatternDomainAnalysis;
import jdepend.knowledge.domainanalysis.impl.CohesionDomainAnalysis;
import jdepend.knowledge.domainanalysis.impl.DDomainAnalysis;
import jdepend.knowledge.domainanalysis.impl.EncapsulationDomainAnalysis;
import jdepend.knowledge.domainanalysis.impl.InheritDomainAnalysis;
import jdepend.knowledge.domainanalysis.impl.LowScoreItemIdentifier;
import jdepend.knowledge.domainanalysis.impl.RelationRationalityDomainAnalysis;
import jdepend.knowledge.domainanalysis.impl.SummaryDomainAnalysis;
public final class DomainAnalysisMgr {
private static DomainAnalysisMgr mgr = new DomainAnalysisMgr();
private List<DomainAnalysis> domainAnalysises;
public static DomainAnalysisMgr getIntance() {
return mgr;
}
private DomainAnalysisMgr() {
this.init();
}
public List<DomainAnalysis> getDomainAnalysises() {
return this.domainAnalysises;
}
public DomainAnalysis getTheDomainAnalysis(StructureCategory sc) throws ExpertException {
for (DomainAnalysis domainAnalysis : domainAnalysises) {
if (domainAnalysis.getStructureCategory().equals(sc)) {
return domainAnalysis;
}
}
throw new ExpertException("未找到类型为[" + sc + "]的领域分析器");
}
private void init() {
domainAnalysises = new ArrayList<DomainAnalysis>();
domainAnalysises.add(new ArchitectPatternDomainAnalysis());
domainAnalysises.add(new CohesionDomainAnalysis());
domainAnalysises.add(new DDomainAnalysis());
domainAnalysises.add(new EncapsulationDomainAnalysis());
domainAnalysises.add(new InheritDomainAnalysis());
domainAnalysises.add(new LowScoreItemIdentifier());
domainAnalysises.add(new RelationRationalityDomainAnalysis());
domainAnalysises.add(new SummaryDomainAnalysis());
}
public void addDomainAnalysis(DomainAnalysis domainAnalysis) {
this.domainAnalysises.add(domainAnalysis);
}
}