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 CollectionAttributeHaveSubClassesFeature extends AbstractFeature {
@Override
protected boolean have(FeatureCheckContext context) {
if (context.getCollectionAttributes() == null) {
return false;
} else {
Collection<Attribute> attributes = new ArrayList<Attribute>();
for (Attribute attribute : context.getCollectionAttributes()) {
L: for (JavaClass javaClass : attribute.getTypeClasses()) {
if (javaClass.getSubClasses().size() > 1) {
attributes.add(attribute);
break L;
}
}
}
if (attributes.size() > 0) {
context.setHaveSubClassesCollectionAttributes(attributes);
return true;
} else {
return false;
}
}
}
@Override
public String getName() {
return "集合属性中存在有子类类型";
}
}