TableMetaData.java

package org.itsallcode.jdbc.metadata;

import java.sql.*;

/**
 * Description of a table.
 * 
 * @param tableCatalog              table catalog (may be {@code null})
 * @param tableSchema               table schema (may be {@code null})
 * @param tableName                 table name
 * @param tableType                 table type. Typical types are "TABLE",
 *                                  "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY",
 *                                  "LOCAL TEMPORARY", "ALIAS", "SYNONYM".
 * @param remarks                   explanatory comment on the table (may be
 *                                  {@code null})
 * @param typeCatalog               the types catalog (may be {@code null})
 * @param typeSchema                the types schema (may be {@code null})
 * @param typeName                  type name (may be {@code null})
 * @param selfReferencingColumnName name of the designated "identifier" column
 *                                  of a typed table (may be {@code null})
 * @param refGeneration             specifies how values in
 *                                  SELF_REFERENCING_COL_NAME are created.
 *                                  Values are "SYSTEM", "USER", "DERIVED". (may
 *                                  be {@code null})
 * @see DatabaseMetaData#getTables(String, String, String, String[])
 */
public record TableMetaData(String tableCatalog, String tableSchema, String tableName, String tableType,
        String remarks, String typeCatalog, String typeSchema, String typeName, String selfReferencingColumnName,
        String refGeneration) {
    static TableMetaData create(final ResultSet rs) throws SQLException {
        return new TableMetaData(
                rs.getString("TABLE_CAT"),
                rs.getString("TABLE_SCHEM"),
                rs.getString("TABLE_NAME"),
                rs.getString("TABLE_TYPE"),
                rs.getString("REMARKS"),
                rs.getString("TYPE_CAT"),
                rs.getString("TYPE_SCHEM"),
                rs.getString("TYPE_NAME"),
                rs.getString("SELF_REFERENCING_COL_NAME"),
                rs.getString("REF_GENERATION"));
    }
}