package jdepend.knowledge.pattern.impl2;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import jdepend.metadata.JavaClass;
public class IdentifyerImpl implements Identifyer {
private String name;
private List<String> featureNames = new ArrayList<String>();
private Map<JavaClass, List<String>> javaClasses = new LinkedHashMap<JavaClass, List<String>>();
private Map<JavaClass, String> patternInfos = new HashMap<JavaClass, String>();
public IdentifyerImpl(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void accumulate(Feature feature) {
// 增加符合特性的类
if (!this.javaClasses.containsKey(feature.getCurrent())) {
this.javaClasses.put(feature.getCurrent(), new ArrayList<String>());
}
this.javaClasses.get(feature.getCurrent()).add(feature.getName());
// 设置最终输出结果
if (feature.getPatternInfo() != null) {
this.patternInfos.put(feature.getCurrent(), feature.getPatternInfo());
}
}
public void registFeature(String featureName) {
if (!this.featureNames.contains(featureName)) {
this.featureNames.add(featureName);
}
}
public Map<JavaClass, String> getResult() {
Map<JavaClass, String> results = new LinkedHashMap<JavaClass, String>();
for (JavaClass javaClass : this.javaClasses.keySet()) {
if (this.javaClasses.get(javaClass).size() == featureNames.size()) {
results.put(javaClass, this.patternInfos.get(javaClass));
}
}
return results;
}
public String getExplain() {
StringBuilder explain = new StringBuilder();
explain.append(" <strong>" + this.name + "</strong><br>");
explain.append(" ");
for (String featureName : this.featureNames) {
explain.append(featureName);
explain.append(" ");
}
explain.append("<br><br>");
return explain.toString();
}
@Override
public void clear() {
this.javaClasses = new LinkedHashMap<JavaClass, List<String>>();
this.patternInfos = new HashMap<JavaClass, String>();
}
}