From ad3b58f5e297ced6ea2c3f5f3b512227a67aa63d Mon Sep 17 00:00:00 2001 From: Gail Badner Date: Tue, 12 Jul 2011 14:26:08 -0700 Subject: [PATCH] HHH-6418 : org.hibernate.metamodel.relational.AuxiliaryDatabaseObject extends org.hibernate.mapping.RelationalModel --- .../AbstractAuxiliaryDatabaseObject.java | 32 +++++++++++++------ .../relational/AuxiliaryDatabaseObject.java | 3 +- .../BasicAuxiliaryDatabaseObjectImpl.java | 17 ++++------ 3 files changed, 29 insertions(+), 23 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/relational/AbstractAuxiliaryDatabaseObject.java b/hibernate-core/src/main/java/org/hibernate/metamodel/relational/AbstractAuxiliaryDatabaseObject.java index b2b0d350bc..8b2b58c0a6 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/relational/AbstractAuxiliaryDatabaseObject.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/relational/AbstractAuxiliaryDatabaseObject.java @@ -24,9 +24,11 @@ package org.hibernate.metamodel.relational; import java.util.HashSet; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.atomic.AtomicInteger; import org.hibernate.dialect.Dialect; -import org.hibernate.mapping.AuxiliaryDatabaseObject; /** * Convenience base class for {@link org.hibernate.mapping.AuxiliaryDatabaseObject}s. @@ -38,22 +40,27 @@ * @author Steve Ebersole */ public abstract class AbstractAuxiliaryDatabaseObject implements AuxiliaryDatabaseObject { + // Use a UUID in identifier prefix because this object is not qualified by a schema/catalog + // (not sure this matters...) + private static final String EXPORT_IDENTIFIER_PREFIX = "auxiliary-object-" + UUID.randomUUID(); + private static final AtomicInteger counter = new AtomicInteger( 0 ); + private final String exportIdentifier; + private final Set dialectScopes; - private final HashSet dialectScopes; - - protected AbstractAuxiliaryDatabaseObject() { - this.dialectScopes = new HashSet(); - } - - protected AbstractAuxiliaryDatabaseObject(HashSet dialectScopes) { - this.dialectScopes = dialectScopes; + protected AbstractAuxiliaryDatabaseObject(Set dialectScopes) { + this.dialectScopes = dialectScopes == null ? new HashSet() : dialectScopes; + this.exportIdentifier = + new StringBuilder( EXPORT_IDENTIFIER_PREFIX ) + .append( '.' ) + .append( counter.getAndIncrement() ) + .toString(); } public void addDialectScope(String dialectName) { dialectScopes.add( dialectName ); } - public HashSet getDialectScopes() { + public Iterable getDialectScopes() { return dialectScopes; } @@ -61,4 +68,9 @@ public boolean appliesToDialect(Dialect dialect) { // empty means no scoping return dialectScopes.isEmpty() || dialectScopes.contains( dialect.getClass().getName() ); } + + @Override + public String getExportIdentifier() { + return exportIdentifier; + } } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/relational/AuxiliaryDatabaseObject.java b/hibernate-core/src/main/java/org/hibernate/metamodel/relational/AuxiliaryDatabaseObject.java index 96018d5237..9b0b6dc770 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/relational/AuxiliaryDatabaseObject.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/relational/AuxiliaryDatabaseObject.java @@ -26,7 +26,6 @@ import java.io.Serializable; import org.hibernate.dialect.Dialect; -import org.hibernate.mapping.RelationalModel; /** * Auxiliary database objects (i.e., triggers, stored procedures, etc) defined @@ -35,7 +34,7 @@ * * @author Steve Ebersole */ -public interface AuxiliaryDatabaseObject extends RelationalModel, Serializable { +public interface AuxiliaryDatabaseObject extends Exportable, Serializable { /** * Does this database object apply to the given dialect? * diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/relational/BasicAuxiliaryDatabaseObjectImpl.java b/hibernate-core/src/main/java/org/hibernate/metamodel/relational/BasicAuxiliaryDatabaseObjectImpl.java index 47489c1028..5edbfcdf9d 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/relational/BasicAuxiliaryDatabaseObjectImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/relational/BasicAuxiliaryDatabaseObjectImpl.java @@ -31,29 +31,24 @@ /** * @author Steve Ebersole */ -public class BasicAuxiliaryDatabaseObjectImpl implements AuxiliaryDatabaseObject { +public class BasicAuxiliaryDatabaseObjectImpl extends AbstractAuxiliaryDatabaseObject { private final String createString; private final String dropString; - private final Set dialectScopes; public BasicAuxiliaryDatabaseObjectImpl(String createString, String dropString, Set dialectScopes) { + super( dialectScopes ); this.createString = createString; this.dropString = dropString; - this.dialectScopes = dialectScopes; } - @Override - public boolean appliesToDialect(Dialect dialect) { - // empty means no scoping - return dialectScopes.isEmpty() || dialectScopes.contains( dialect.getClass().getName() ); - } - - @Override + // TODO: fix this when HHH-6431 is fixed + //@Override public String sqlCreateString(Dialect dialect, Mapping p, String defaultCatalog, String defaultSchema) { return createString; } - @Override + // TODO: fix this when HHH-6431 is fixed + //@Override public String sqlDropString(Dialect dialect, String defaultCatalog, String defaultSchema) { return dropString; }