From 56aa17b0d5f1154ca746a1073afa79e9cb30729a Mon Sep 17 00:00:00 2001 From: Steve Ebersole Date: Wed, 13 Jul 2011 18:26:25 -0500 Subject: [PATCH] HHH-6437 - Improve Database to track default Schema object --- .../metamodel/relational/Database.java | 35 +++++++++++++++++-- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/relational/Database.java b/hibernate-core/src/main/java/org/hibernate/metamodel/relational/Database.java index fbdcc0a8cb..37e6c3fe99 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/relational/Database.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/relational/Database.java @@ -28,24 +28,53 @@ import java.util.List; import java.util.Map; +import org.hibernate.internal.util.StringHelper; +import org.hibernate.metamodel.Metadata; + /** * Represents a database and manages the named schema/catalog pairs defined within. * * @author Steve Ebersole */ public class Database { - private Map schemaMap = new HashMap(); + private final Schema.Name implicitSchemaName; + + private final Map schemaMap = new HashMap(); private final List auxiliaryDatabaseObjects = new ArrayList(); + public Database(Metadata.Options options) { + String schemaName = options.getDefaultSchemaName(); + String catalogName = options.getDefaultCatalogName(); + if ( options.isGloballyQuotedIdentifiers() ) { + schemaName = StringHelper.quote( schemaName ); + catalogName = StringHelper.quote( catalogName ); + } + implicitSchemaName = new Schema.Name( schemaName, catalogName ); + makeSchema( implicitSchemaName ); + } + + public Schema getDefaultSchema() { + return schemaMap.get( implicitSchemaName ); + } + public Schema getSchema(Schema.Name name) { + if ( name.getSchema() == null && name.getCatalog() == null ) { + return getDefaultSchema(); + } Schema schema = schemaMap.get( name ); if ( schema == null ) { - schema = new Schema( name ); - schemaMap.put( name, schema ); + schema = makeSchema( name ); } return schema; } + private Schema makeSchema(Schema.Name name) { + Schema schema; + schema = new Schema( name ); + schemaMap.put( name, schema ); + return schema; + } + public Schema getSchema(Identifier schema, Identifier catalog) { return getSchema( new Schema.Name( schema, catalog ) ); }