package jdepend.knowledge.pattern.impl2; import java.util.ArrayList; import java.util.List; import jdepend.metadata.JavaClass; public abstract class AbstractFeature implements Feature { private List<Identifyer> identifyers; private JavaClass current; private String patternInfo; public AbstractFeature() { this.identifyers = new ArrayList<Identifyer>(); } public void addIdentifyer(Identifyer identifyer) { if (!this.identifyers.contains(identifyer)) { this.identifyers.add(identifyer); identifyer.registFeature(this.getName()); } } public void check(FeatureCheckContext context) { this.current = context.getCurrent(); if (this.have(context)) { this.onHave(); } this.clear(); } protected abstract boolean have(FeatureCheckContext context); private void onHave() { for (Identifyer identifyer : this.identifyers) { identifyer.accumulate(this); } } public void clear() { this.patternInfo = null; } @Override public JavaClass getCurrent() { return this.current; } public String getPatternInfo() { return patternInfo; } public void setPatternInfo(String patternInfo) { this.patternInfo = patternInfo; } }