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 class
Table.Column
class
Table.ForeignKey
class
Table.PrimaryKey
-
Field Summary
Fields Modifier and Type Field Description protected java.util.List<Table.Column>
columns
protected java.util.List<Table.ForeignKey>
fks
protected java.lang.String
name
The name of the tableprotected Table.PrimaryKey
pk
protected 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 Table
buildFor(Table other)
Table
buildFor(java.lang.String tableName, javax.sql.DataSource db)
Table
buildFor(SRecordMeta<? extends SRecordInstance> meta)
Table
buildNew(java.lang.String name)
boolean
canAlterFrom(Table existingTable)
Returns true if all of the modifications required can be handled through altering.java.lang.String
colQC()
Table.Column
findColumn(java.lang.String name)
protected abstract java.util.List<java.lang.String>
findSequences(java.lang.String tableName, java.sql.Connection conn)
protected java.lang.String
getColumnDdl(Table.Column col)
java.util.List<Table.Column>
getColumns()
protected java.lang.String
getColumnTypeSql(SFieldScalar field)
java.util.List<java.lang.String>
getConstraintDdl()
java.util.List<Table.ForeignKey>
getForeignKeys()
java.lang.String
getIndexName(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.PrimaryKey
getPrimaryKey()
java.lang.String
getTableCreateDdl()
java.lang.String
getTableName()
java.lang.String
getTransferCommand(Table originalTable, java.lang.String sourceName)
java.lang.String
qc()
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" listprotected java.lang.String
sqlDefinition_CreateIndex(java.lang.String indexName, java.lang.String tableName, java.lang.String columnName)
protected java.lang.String
sqlDefinition_CreateSequence(java.lang.String sequence, java.lang.String table)
Returns the full "CREATE SEQUENCE seqName"protected java.lang.String
sqlDefinition_DropIndex(java.lang.String indexName)
protected java.lang.String
sqlDefinition_Table()
Returns the keyword(s) to use for create TABLE.protected boolean
supportsConstraintModification()
protected boolean
supportsDropColumn()
boolean
tableExists()
protected java.lang.String
valueToQueryLiteral(java.lang.Object value, java.lang.String columnType)
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.
-
-
-
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)
-
-