Package com.tableau.hyperapi

## Class Catalog

- java.lang.Object
- - com.tableau.hyperapi.Catalog

-     public final class Catalog
      extends java.lang.Object

  The catalog of a connection.

- - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `attachDatabase​(java.lang.String databasePath)` | Attaches a database to this connection.
    `void` | `attachDatabase​(java.lang.String databasePath, Name databaseAlias)` | Attaches a database to this connection under the alias databaseAlias.
    `void` | `createDatabase​(java.lang.String databasePath)` | Creates a new database given the database file path.
    `void` | `createDatabaseIfNotExists​(java.lang.String databasePath)` | Creates a database if it doesn't exist yet; otherwise does nothing.
    `void` | `createSchema​(SchemaName schema)` | Creates a schema.
    `void` | `createSchemaIfNotExists​(SchemaName schema)` | Creates a schema if no schema with that name exists; otherwise does nothing.
    `void` | `createTable​(TableDefinition tableDefinition)` | Creates a table.
    `void` | `createTableIfNotExists​(TableDefinition tableDefinition)` | Creates a table if no table with that name exists; otherwise does nothing.
    `void` | `detachAllDatabases()` | Detaches all databases from this connection.
    `void` | `detachDatabase​(Name databaseAlias)` | Detaches a database from this connection.
    `void` | `dropDatabase​(java.lang.String databasePath)` | Drops a database file.
    `void` | `dropDatabaseIfExists​(java.lang.String databasePath)` | Drops a database file if it exists; otherwise does nothing.
    `Connection` | `getConnection()` | Returns the underlying connection.
    `java.util.List<SchemaName>` | `getSchemaNames()` | Gets the names of all schemas in the first database in the database search path.
    `java.util.List<SchemaName>` | `getSchemaNames​(Name database)` | Gets the names of all schemas in the specified database.
    `TableDefinition` | `getTableDefinition​(TableName tableName)` | Returns the table definition if a table with the given name exists.
    `java.util.List<TableName>` | `getTableNames​(SchemaName schema)` | Gets the names of all tables in the specified schema.
    `boolean` | `hasTable​(TableName tableName)` | Returns whether a table with this name exists.

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### hasTable

          public boolean hasTable​(TableName tableName)

      Returns whether a table with this name exists.
      Parameters:
        `tableName` - A qualified table name.
      Returns:
        Whether a table with this name exists.
      Throws:
        `HyperException` - Thrown when querying the table fails.

    - #### getTableDefinition

          public TableDefinition getTableDefinition​(TableName tableName)

      Returns the table definition if a table with the given name exists.

      This will perform queries against Hyper so if you need to access different fields in the schema, for performance reasons, make sure to keep the object and access its fields.

      Note that the table definitions name will always be fully qualified, even if the input name was not. E.g., if the user queries table "foo", which resolves to the table "db1"."bar"."foo", then the resulting TableDefinition will have the latter set as name.

      Parameters:
        `tableName` - The qualified name of the table to retrieve its schema.
      Returns:
        The table definition.
      Throws:
        `HyperException` - Thrown when the table does not exist or querying the table fails.

    - #### createTable

          public void createTable​(TableDefinition tableDefinition)

      Creates a table.

      The table definition schema is validated during this call and an exception will be thrown if a column definition is found to be invalid.

      The method will throw if a table with this name already exists.

      Parameters:
        `tableDefinition` - A table definition describing the new table.
      Throws:
        `HyperException` - Thrown when the table definition is invalid, or when Hyper can't create the table.

    - #### createTableIfNotExists

          public void createTableIfNotExists​(TableDefinition tableDefinition)

      Creates a table if no table with that name exists; otherwise does nothing.

      The table definition schema is validated during this call and an exception will be thrown if a column definition is found to be invalid.

      Parameters:
        `tableDefinition` - The table definition with the schema of the table.
      Throws:
        `HyperException` - Thrown when the table definition is invalid, or when Hyper can't create the table.

    - #### createSchema

          public void createSchema​(SchemaName schema)

      Creates a schema.

      The method will throw if a schema with this name already exists.

      Parameters:
        `schema` - The name of the schema.
      Throws:
        `HyperException` - Thrown when the schema already exists or when Hyper can't create the schema.

    - #### createSchemaIfNotExists

          public void createSchemaIfNotExists​(SchemaName schema)

      Creates a schema if no schema with that name exists; otherwise does nothing.
      Parameters:
        `schema` - The name of the schema.
      Throws:
        `HyperException` - Thrown when Hyper can't create the schema.

    - #### getSchemaNames

          public java.util.List<SchemaName> getSchemaNames()

      Gets the names of all schemas in the first database in the database search path.

      Note that by default, this is the single database that is attached if only one database is attached. In the cross db use case, the database search path is empty by default, so this method will fail by default. The user can set the database search path in this case to specify from which database to retrieve schema names.

      Returns:
        The schema names.
      Throws:
        `HyperException` - Thrown if querying the schema was unsuccessful or no database is attached or in the search path.

    - #### getSchemaNames

          public java.util.List<SchemaName> getSchemaNames​(Name database)

      Gets the names of all schemas in the specified database.
      Parameters:
        `database` - The database name.
      Returns:
        The schema names.
      Throws:
        `HyperException` - Thrown if querying the schema was unsuccessful or no database with the given name is attached.

    - #### getTableNames

          public java.util.List<TableName> getTableNames​(SchemaName schema)

      Gets the names of all tables in the specified schema.
      Parameters:
        `schema` - The schema name.
      Returns:
        The table names.
      Throws:
        `HyperException` - Thrown if querying the schema was unsuccessful or no schema with the given name exists.

    - #### createDatabase

          public void createDatabase​(java.lang.String databasePath)

      Creates a new database given the database file path.

      Does not automatically attach to the newly-created database.

      Parameters:
        `databasePath` - The file path to the database to create.
      Throws:
        `HyperException` - Thrown when the database creation fails or if a file with that name already exists.

    - #### createDatabaseIfNotExists

          public void createDatabaseIfNotExists​(java.lang.String databasePath)

      Creates a database if it doesn't exist yet; otherwise does nothing.

      Does not automatically attach to the newly-created database. If a database with that name already exists, will do nothing.

      Parameters:
        `databasePath` - The file path to the database to create.
      Throws:
        `HyperException` - Thrown when the database creation fails or if a non-database file with that name already exists.

    - #### attachDatabase

          public void attachDatabase​(java.lang.String databasePath)

      Attaches a database to this connection.

      Uses the stem of the databasePath as alias. E.g., "foo/bar.hyper" will use the alias "bar".

      Parameters:
        `databasePath` - The path to the database file.
      Throws:
        `HyperException` - Thrown when database doesn't exist or attaching fails.

    - #### attachDatabase

          public void attachDatabase​(java.lang.String databasePath,
                                     Name databaseAlias)

      Attaches a database to this connection under the alias databaseAlias.
      Parameters:
        `databasePath` - The path to the database file.
        `databaseAlias` - The alias for the database.
      Throws:
        `HyperException` - Thrown when database doesn't exist, aslias is already in use or attaching fails.

    - #### detachDatabase

          public void detachDatabase​(Name databaseAlias)

      Detaches a database from this connection.
      Parameters:
        `databaseAlias` - The alias of the database.
      Throws:
        `HyperException` - Thrown when no such database was attached to the connection or detaching fails.

    - #### detachAllDatabases

          public void detachAllDatabases()

      Detaches all databases from this connection.
      Throws:
        `HyperException` - Thrown when detaching fails.

    - #### dropDatabase

          public void dropDatabase​(java.lang.String databasePath)

      Drops a database file.
      Parameters:
        `databasePath` - The path to the database.
      Throws:
        `HyperException` - Thrown when database file with that path doesn't exist or dropping fails for some other reason.

    - #### dropDatabaseIfExists

          public void dropDatabaseIfExists​(java.lang.String databasePath)

      Drops a database file if it exists; otherwise does nothing.
      Parameters:
        `databasePath` - The path to the database.
      Throws:
        `HyperException` - Thrown when dropping fails.

    - #### getConnection

          public Connection getConnection()

      Returns the underlying connection.
      Returns:
        The underlying connection.