Class Table

  • Direct Known Subclasses:
    HsqlTable, SQLiteTable

    public abstract class Table
    extends java.lang.Object
    • Field Detail

      • name

        protected java.lang.String name
        The name of the table
      • sequences

        protected java.util.List<java.lang.String> sequences
    • Constructor Detail

      • Table

        public Table()
    • Method Detail

      • tableExists

        public boolean tableExists()
      • buildFor

        public Table buildFor​(Table other)
      • buildFor

        public Table buildFor​(java.lang.String tableName,
                              javax.sql.DataSource db)
                       throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • buildNew

        public Table buildNew​(java.lang.String name)
      • colQC

        public java.lang.String colQC()
      • qc

        public java.lang.String qc()
      • canAlterFrom

        public boolean canAlterFrom​(Table existingTable)
        Returns true if all of the modifications required can be handled through altering. If not, a new version of the table will be made.
      • supportsConstraintModification

        protected boolean supportsConstraintModification()
      • getTransferCommand

        public java.lang.String getTransferCommand​(Table originalTable,
                                                   java.lang.String sourceName)
      • findSequences

        protected abstract java.util.List<java.lang.String> findSequences​(java.lang.String tableName,
                                                                          java.sql.Connection conn)
                                                                   throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • findColumn

        public Table.Column findColumn​(java.lang.String name)
      • getTableName

        public java.lang.String getTableName()
      • getPhase1AlterDdl

        public java.util.List<java.lang.String> getPhase1AlterDdl​(Table existing)
        Does all alter column statements
      • getPhase2AlterDdl

        public java.util.List<java.lang.String> getPhase2AlterDdl​(Table existing)
        Does all constraint and sequence modification
      • sqlDefinition_Table

        protected java.lang.String sqlDefinition_Table()
        Returns the keyword(s) to use for create TABLE. Default is "TABLE", but HSQL would use "CACHED TABLE"
      • sqlDefinition_CreateSequence

        protected java.lang.String sqlDefinition_CreateSequence​(java.lang.String sequence,
                                                                java.lang.String table)
        Returns the full "CREATE SEQUENCE seqName"
      • sqlDefinition_CreateIndex

        protected java.lang.String sqlDefinition_CreateIndex​(java.lang.String indexName,
                                                             java.lang.String tableName,
                                                             java.lang.String columnName)
      • sqlDefinition_DropIndex

        protected java.lang.String sqlDefinition_DropIndex​(java.lang.String indexName)
      • supportsDropColumn

        protected boolean supportsDropColumn()
      • getColumns

        public java.util.List<Table.Column> getColumns()
      • getColumnDdl

        protected java.lang.String getColumnDdl​(Table.Column col)
      • getTableCreateDdl

        public java.lang.String getTableCreateDdl()
      • getIndexName

        public java.lang.String getIndexName​(Table.Column column)
      • getConstraintDdl

        public java.util.List<java.lang.String> getConstraintDdl()
      • sqlDefinition_CreateForeignKeys

        protected void sqlDefinition_CreateForeignKeys​(java.util.List<java.lang.String> commands,
                                                       java.util.List<Table.ForeignKey> fks)
        Should create the sql for adding the foreign keys and add them to the "commands" list
      • getColumnTypeSql

        protected java.lang.String getColumnTypeSql​(SFieldScalar field)
      • valueToQueryLiteral

        protected java.lang.String valueToQueryLiteral​(java.lang.Object value,
                                                       SFieldScalar field)
        In some cases, we put the value of the column directly into the query. This allows us to override how it is represented in the query.
      • valueToQueryLiteral

        protected java.lang.String valueToQueryLiteral​(java.lang.Object value,
                                                       java.lang.String columnType)
      • getPhase1Transfer

        public java.util.List<java.lang.String> getPhase1Transfer​(Table originalTable)
      • getPhase2Transfer

        public java.util.List<java.lang.String> getPhase2Transfer​(Table originalTable)