package jdepend.knowledge.pattern.impl2.feature.leaf;
import java.util.ArrayList;
import java.util.Collection;
import jdepend.knowledge.pattern.impl2.AbstractFeature;
import jdepend.knowledge.pattern.impl2.FeatureCheckContext;
import jdepend.metadata.Attribute;
import jdepend.metadata.JavaClass;
public class AbstractAttributeHaveSubClassesFeature extends AbstractFeature {
@Override
protected boolean have(FeatureCheckContext context) {
if (context.getAbstractAttributes() == null) {
return false;
} else {
Collection<Attribute> attributes = new ArrayList<Attribute>();
for (Attribute attribute : context.getAbstractAttributes()) {
L: for (JavaClass javaClass : attribute.getTypeClasses()) {
if (javaClass.getSubClasses().size() > 1) {
attributes.add(attribute);
break L;
}
}
}
if (attributes.size() > 0) {
context.setHaveSubClassesAbstractAttributes(attributes);
return true;
} else {
return false;
}
}
}
@Override
public String getName() {
return "存在有多个子类的抽象属性";
}
}