Example usage for org.hibernate.mapping PersistentClass accept

List of usage examples for org.hibernate.mapping PersistentClass accept

Introduction

In this page you can find the example usage for org.hibernate.mapping PersistentClass accept.

Prototype

public abstract Object accept(PersistentClassVisitor mv);

Source Link

Usage

From source file:com.amalto.core.storage.hibernate.HibernateStorage.java

License:Open Source License

@Override
public Set<String> findTablesToDrop(List<ComplexTypeMetadata> sortedTypesToDrop) {
    Set<String> tablesToDrop = new LinkedHashSet<String>();
    TableClosureVisitor visitor = new TableClosureVisitor();
    // Drop table order should be reversed
    for (int i = sortedTypesToDrop.size() - 1; i >= 0; i--) {
        ComplexTypeMetadata typeMetadata = sortedTypesToDrop.get(i);
        String typeName = typeMetadata.getName();
        if (!typeMetadata.isInstantiable()) {
            typeName = "X_" + typeName; //$NON-NLS-1$
        }//from w ww  .j a v a2 s  . com
        PersistentClass metadata = configuration.getClassMapping(ClassCreator.getClassName(typeName));
        if (metadata != null) {
            tablesToDrop.addAll((Collection<String>) metadata.accept(visitor));
        } else {
            LOGGER.warn("Could not find table names for type '" + typeMetadata.getName() + "'."); //$NON-NLS-1$ //$NON-NLS-2$
        }
    }
    if (LOGGER.isTraceEnabled()) {
        StringBuilder aggregatedTableNames = new StringBuilder();
        for (String table : tablesToDrop) {
            aggregatedTableNames.append(table).append(' ');
        }
        LOGGER.trace("Table(s) scheduled for drop: " + aggregatedTableNames); //$NON-NLS-1$
    }
    return tablesToDrop;
}