/*
 * This file is generated by jOOQ.
 */
package org.jooq.meta.hsqldb.information_schema;


import java.util.Arrays;
import java.util.List;

import org.jooq.Table;
import org.jooq.impl.DSL;
import org.jooq.impl.SchemaImpl;
import org.jooq.meta.hsqldb.information_schema.tables.CheckConstraints;
import org.jooq.meta.hsqldb.information_schema.tables.Columns;
import org.jooq.meta.hsqldb.information_schema.tables.DomainConstraints;
import org.jooq.meta.hsqldb.information_schema.tables.Domains;
import org.jooq.meta.hsqldb.information_schema.tables.ElementTypes;
import org.jooq.meta.hsqldb.information_schema.tables.KeyColumnUsage;
import org.jooq.meta.hsqldb.information_schema.tables.Parameters;
import org.jooq.meta.hsqldb.information_schema.tables.ReferentialConstraints;
import org.jooq.meta.hsqldb.information_schema.tables.Routines;
import org.jooq.meta.hsqldb.information_schema.tables.Schemata;
import org.jooq.meta.hsqldb.information_schema.tables.Sequences;
import org.jooq.meta.hsqldb.information_schema.tables.SystemColumns;
import org.jooq.meta.hsqldb.information_schema.tables.SystemIndexinfo;
import org.jooq.meta.hsqldb.information_schema.tables.SystemSynonyms;
import org.jooq.meta.hsqldb.information_schema.tables.SystemTables;
import org.jooq.meta.hsqldb.information_schema.tables.TableConstraints;
import org.jooq.meta.hsqldb.information_schema.tables.Tables;
import org.jooq.meta.hsqldb.information_schema.tables.Triggers;
import org.jooq.meta.hsqldb.information_schema.tables.Views;


/**
 * This class is generated by jOOQ.
 */
@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" })
public class InformationSchema extends SchemaImpl {

    private static final long serialVersionUID = 1L;

    /**
     * The reference instance of <code>INFORMATION_SCHEMA</code>
     */
    public static final InformationSchema INFORMATION_SCHEMA = new InformationSchema();

    /**
     * one row for each domain constraint, table check constraint, and
     * assertion.
     */
    public final CheckConstraints CHECK_CONSTRAINTS = CheckConstraints.CHECK_CONSTRAINTS;

    /**
     * one row for each column of table of view
     */
    public final Columns COLUMNS = Columns.COLUMNS;

    /**
     * one row for each check constraint included in a domain definition
     */
    public final DomainConstraints DOMAIN_CONSTRAINTS = DomainConstraints.DOMAIN_CONSTRAINTS;

    /**
     * one row for each domain identified
     */
    public final Domains DOMAINS = Domains.DOMAINS;

    /**
     * The table <code>INFORMATION_SCHEMA.ELEMENT_TYPES</code>.
     */
    public final ElementTypes ELEMENT_TYPES = ElementTypes.ELEMENT_TYPES;

    /**
     * one row for each column used in s primary key or unique constraint
     */
    public final KeyColumnUsage KEY_COLUMN_USAGE = KeyColumnUsage.KEY_COLUMN_USAGE;

    /**
     * one row for each routine parameter
     */
    public final Parameters PARAMETERS = Parameters.PARAMETERS;

    /**
     * one row for each foreign key constraint
     */
    public final ReferentialConstraints REFERENTIAL_CONSTRAINTS = ReferentialConstraints.REFERENTIAL_CONSTRAINTS;

    /**
     * one row for each routine
     */
    public final Routines ROUTINES = Routines.ROUTINES;

    /**
     * one row for each schema
     */
    public final Schemata SCHEMATA = Schemata.SCHEMATA;

    /**
     * one row for each external sequence generator
     */
    public final Sequences SEQUENCES = Sequences.SEQUENCES;

    /**
     * the visible columns of each accessible table defined within this database
     */
    public final SystemColumns SYSTEM_COLUMNS = SystemColumns.SYSTEM_COLUMNS;

    /**
     * information about the indices of each accessible table defined within
     * this database
     */
    public final SystemIndexinfo SYSTEM_INDEXINFO = SystemIndexinfo.SYSTEM_INDEXINFO;

    /**
     * the synonyms for tables and other objects defined in this database
     */
    public final SystemSynonyms SYSTEM_SYNONYMS = SystemSynonyms.SYSTEM_SYNONYMS;

    /**
     * the accessible tables defined within this database
     */
    public final SystemTables SYSTEM_TABLES = SystemTables.SYSTEM_TABLES;

    /**
     * one row for each table constraint associated with a table
     */
    public final TableConstraints TABLE_CONSTRAINTS = TableConstraints.TABLE_CONSTRAINTS;

    /**
     * one row for each table or view
     */
    public final Tables TABLES = Tables.TABLES;

    /**
     * one row for each trigger definition
     */
    public final Triggers TRIGGERS = Triggers.TRIGGERS;

    /**
     * the view descriptors of the accessible views defined within this database
     */
    public final Views VIEWS = Views.VIEWS;

    /**
     * No further instances allowed
     */
    private InformationSchema() {
        super(DSL.name("INFORMATION_SCHEMA"), null, DSL.comment(""));
    }

    @Override
    public final List<Table<?>> getTables() {
        return Arrays.asList(
            CheckConstraints.CHECK_CONSTRAINTS,
            Columns.COLUMNS,
            DomainConstraints.DOMAIN_CONSTRAINTS,
            Domains.DOMAINS,
            ElementTypes.ELEMENT_TYPES,
            KeyColumnUsage.KEY_COLUMN_USAGE,
            Parameters.PARAMETERS,
            ReferentialConstraints.REFERENTIAL_CONSTRAINTS,
            Routines.ROUTINES,
            Schemata.SCHEMATA,
            Sequences.SEQUENCES,
            SystemColumns.SYSTEM_COLUMNS,
            SystemIndexinfo.SYSTEM_INDEXINFO,
            SystemSynonyms.SYSTEM_SYNONYMS,
            SystemTables.SYSTEM_TABLES,
            TableConstraints.TABLE_CONSTRAINTS,
            Tables.TABLES,
            Triggers.TRIGGERS,
            Views.VIEWS
        );
    }
}
