package org.hibernate.tool.hbmlint.detector;
import java.util.Iterator;
import org.hibernate.mapping.PersistentClass;
import org.hibernate.mapping.Property;
import org.hibernate.tool.hbmlint.Detector;
import org.hibernate.tool.hbmlint.IssueCollector;
public abstract class EntityModelDetector extends Detector {
public void visit(IssueCollector collector) {
for (Iterator<PersistentClass> iter = getMetadata().getEntityBindings().iterator(); iter.hasNext();) {
PersistentClass clazz = iter.next();
this.visit(clazz, collector);
}
}
protected void visit(PersistentClass clazz, IssueCollector collector) {
visitProperties(clazz, collector );
}
private void visitProperties(PersistentClass clazz, IssueCollector collector) {
if(clazz.hasIdentifierProperty()) {
this.visitProperty(clazz, clazz.getIdentifierProperty(), collector);
}
Iterator<?> propertyIterator = clazz.getPropertyIterator();
while ( propertyIterator.hasNext() ) {
Property property = (Property) propertyIterator.next();
this.visitProperty(clazz, property, collector);
}
}
protected abstract void visitProperty(PersistentClass clazz, Property property, IssueCollector collector);
}