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.JavaClass;
public class SuperHaveOtherSubClassFeature extends AbstractFeature {
@Override
protected boolean have(FeatureCheckContext context) {
if (context.getAllSupers() == null) {
return false;
} else {
Collection<JavaClass> otherSubClasses = new ArrayList<JavaClass>();
for (JavaClass superClass : context.getAllSupers()) {
for (JavaClass subClass : superClass.getSubClasses()) {
if (!subClass.equals(context.getCurrent()) && !otherSubClasses.contains(subClass)) {
otherSubClasses.add(subClass);
}
}
}
if (otherSubClasses.size() > 0) {
context.setSuperOtherSubClasses(otherSubClasses);
return true;
} else {
return false;
}
}
}
@Override
public String getName() {
return "父类存在其他子类";
}
}