Class Table
- java.lang.Object
-
- com.inductiveautomation.ignition.gateway.localdb.Table
-
- Direct Known Subclasses:
HsqlTable,SQLiteTable
public abstract class Table extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classTable.ColumnclassTable.ForeignKeyclassTable.PrimaryKey
-
Field Summary
Fields Modifier and Type Field Description protected java.util.List<Table.Column>columnsprotected java.util.List<Table.ForeignKey>fksprotected java.lang.StringnameThe name of the tableprotected Table.PrimaryKeypkprotected java.util.List<java.lang.String>sequences
-
Constructor Summary
Constructors Constructor Description Table()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description TablebuildFor(Table other)TablebuildFor(java.lang.String tableName, javax.sql.DataSource db)TablebuildFor(SRecordMeta<? extends SRecordInstance> meta)TablebuildNew(java.lang.String name)booleancanAlterFrom(Table existingTable)Returns true if all of the modifications required can be handled through altering.java.lang.StringcolQC()Table.ColumnfindColumn(java.lang.String name)protected abstract java.util.List<java.lang.String>findSequences(java.lang.String tableName, java.sql.Connection conn)protected java.lang.StringgetColumnDdl(Table.Column col)java.util.List<Table.Column>getColumns()protected java.lang.StringgetColumnTypeSql(SFieldScalar field)java.util.List<java.lang.String>getConstraintDdl()java.util.List<Table.ForeignKey>getForeignKeys()java.lang.StringgetIndexName(Table.Column column)java.util.List<java.lang.String>getPhase1AlterDdl(Table existing)Does all alter column statementsjava.util.List<java.lang.String>getPhase1Transfer(Table originalTable)java.util.List<java.lang.String>getPhase2AlterDdl(Table existing)Does all constraint and sequence modificationjava.util.List<java.lang.String>getPhase2Transfer(Table originalTable)Table.PrimaryKeygetPrimaryKey()java.lang.StringgetTableCreateDdl()java.lang.StringgetTableName()java.lang.StringgetTransferCommand(Table originalTable, java.lang.String sourceName)java.lang.Stringqc()protected voidsqlDefinition_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" listprotected java.lang.StringsqlDefinition_CreateIndex(java.lang.String indexName, java.lang.String tableName, java.lang.String columnName)protected java.lang.StringsqlDefinition_CreateSequence(java.lang.String sequence, java.lang.String table)Returns the full "CREATE SEQUENCE seqName"protected java.lang.StringsqlDefinition_DropIndex(java.lang.String indexName)protected java.lang.StringsqlDefinition_Table()Returns the keyword(s) to use for create TABLE.protected booleansupportsConstraintModification()protected booleansupportsDropColumn()booleantableExists()protected java.lang.StringvalueToQueryLiteral(java.lang.Object value, java.lang.String columnType)protected java.lang.StringvalueToQueryLiteral(java.lang.Object value, SFieldScalar field)In some cases, we put the value of the column directly into the query.
-
-
-
Field Detail
-
name
protected java.lang.String name
The name of the table
-
columns
protected java.util.List<Table.Column> columns
-
pk
protected Table.PrimaryKey pk
-
fks
protected java.util.List<Table.ForeignKey> fks
-
sequences
protected java.util.List<java.lang.String> sequences
-
-
Method Detail
-
tableExists
public boolean tableExists()
-
buildFor
public Table buildFor(SRecordMeta<? extends SRecordInstance> meta)
-
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()
-
getPrimaryKey
public Table.PrimaryKey getPrimaryKey()
-
getForeignKeys
public java.util.List<Table.ForeignKey> getForeignKeys()
-
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)
-
-