package org.hibernate.tool.hbm2x.visitor; import org.hibernate.mapping.Array; import org.hibernate.mapping.Bag; import org.hibernate.mapping.Collection; import org.hibernate.mapping.Component; import org.hibernate.mapping.IdentifierBag; import org.hibernate.mapping.List; import org.hibernate.mapping.ManyToOne; import org.hibernate.mapping.Map; import org.hibernate.mapping.OneToMany; import org.hibernate.mapping.OneToOne; import org.hibernate.mapping.PrimitiveArray; import org.hibernate.mapping.Set; import org.hibernate.mapping.SimpleValue; import org.hibernate.mapping.ToOne; public class EntityNameFromValueVisitor extends DefaultValueVisitor { public EntityNameFromValueVisitor() { super( true ); } public EntityNameFromValueVisitor(boolean b) { super(b); } public Object accept(OneToOne o) { return acceptToOne(o); } public Object accept(ManyToOne o) { return acceptToOne(o); } private Object acceptToOne(ToOne value) { return value.getReferencedEntityName(); // should get the cfg and lookup the persistenclass. } public Object accept(OneToMany value) { return value.getAssociatedClass().getEntityName(); } public Object acceptCollection(Collection c) { return c.getElement().accept( this ); } public Object accept(Bag o) { return acceptCollection( o ); } public Object accept(List o) { return acceptCollection( o ); } public Object accept(IdentifierBag o) { return acceptCollection( o ); } public Object accept(Set o) { return acceptCollection( o ); } public Object accept(Map o) { return acceptCollection( o ); } public Object accept(Array o) { return acceptCollection( o ); } public Object accept(PrimitiveArray o) { return acceptCollection( o ); } public Object accept(SimpleValue o) { return null; // TODO: return o.getTypeName() ? (it is not an association) } public Object accept(Component component) { if(component.isDynamic()) { return null; //"java.util.Map"; (not an association) } return component.getComponentClassName(); } }