JSColumnObject
Overview
The JSColumnObject
is a scripting object that represents a data-source column created through JSTableObject.createNewColumn(...)
. It extends JSColumn
by providing additional setter methods for modifying the column's properties, such as nullability, flags, sequence types, and row identifier types. These changes are not immediately applied but take effect only after invoking server.synchronizeWithDB()
.
This object allows developers to customize columns further during table creation, including defining primary key configurations, database sequences, and UUID generation settings. Flags can also be set or cleared to mark columns as excluded, tenant-specific, or native type columns.
Constants Summarized
Properties Summarized
Methods Summarized
Get the data provider id for this column (which is the same as name if not explicitly defined otherwise).
Get the qualified name (including table name) of the column as known by the database.
Returns a quoted version of the column name, if necessary, as defined by the actual database used.
Get the raw JDBC type of the column, which allows to check database specific types, like sting/byte column type variations.
void
Set the database sequence name of the column, used for columns with sequence type JSColumn.
Constants Detailed
DATABASE_IDENTITY
Constant used when setting or getting the sequence type of columns.
Type Number
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
switch (column.getSequenceType())
{
case JSColumn.NONE:
// handle column with no sequence
break;
case JSColumn.UUID_GENERATOR:
// handle uuid generated column
break;
}
DATABASE_SEQUENCE
Constant used when setting or getting the sequence type of columns.
Type Number
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
switch (column.getSequenceType())
{
case JSColumn.NONE:
// handle column with no sequence
break;
case JSColumn.UUID_GENERATOR:
// handle uuid generated column
break;
}
DATETIME
Constant used when setting or getting the type of columns.
Type Number
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
switch (column.getType())
{
case JSColumn.TEXT:
// handle text column
break;
case JSColumn.NUMBER:
case JSColumn.INTEGER:
// handle numerical column
break;
}
EXCLUDED_COLUMN
Constant used when setting or getting the flags of columns. This flag identifies columns that are skipped in the sql.
Type Number
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
if (column.hasFlag(JSColumn.UUID_COLUMN))
{
// handle uuid column
}
INTEGER
Constant used when setting or getting the type of columns.
Type Number
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
switch (column.getType())
{
case JSColumn.TEXT:
// handle text column
break;
case JSColumn.NUMBER:
case JSColumn.INTEGER:
// handle numerical column
break;
}
MEDIA
Constant used when setting or getting the type of columns.
Type Number
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
switch (column.getType())
{
case JSColumn.TEXT:
// handle text column
break;
case JSColumn.NUMBER:
case JSColumn.INTEGER:
// handle numerical column
break;
}
NATIVE_COLUMN
Constant used when setting or getting the flags of columns. This flag identifies columns that are marked as a native type column (for example uniqueidentifier).
Type Number
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
if (column.hasFlag(JSColumn.UUID_COLUMN))
{
// handle uuid column
}
NONE
Constant for column information indicating unset values.
Type Number
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
switch (column.getSequenceType())
{
case JSColumn.NONE:
// handle column with no sequence
break;
case JSColumn.UUID_GENERATOR:
// handle uuid generated column
break;
}
NUMBER
Constant used when setting or getting the type of columns.
Type Number
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
switch (column.getType())
{
case JSColumn.TEXT:
// handle text column
break;
case JSColumn.NUMBER:
case JSColumn.INTEGER:
// handle numerical column
break;
}
PK_COLUMN
Constant used when setting or getting the row identifier type of columns. This value identifies columns that are defined as primary key in the database.
Type Number
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
switch (column.getRowIdentifierType())
{
case JSColumn.NONE:
// handle normal column
break;
case JSColumn.PK_COLUMN:
// handle database pk column
break;
case JSColumn.ROWID_COLUMN:
// handle developer defined pk column
break;
}
ROWID_COLUMN
Constant used when setting or getting the row identifier type of columns. This value identifies columns that are defined as primary key by the developer (but not in the database).
Type Number
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
switch (column.getRowIdentifierType())
{
case JSColumn.NONE:
// handle normal column
break;
case JSColumn.PK_COLUMN:
// handle database pk column
break;
case JSColumn.ROWID_COLUMN:
// handle developer defined pk column
break;
}
TENANT_COLUMN
Constant used when setting or getting the flags of columns. This flag identifies columns that are marked as a tenant column.
Type Number
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
if (column.hasFlag(JSColumn.UUID_COLUMN))
{
// handle uuid column
}
TEXT
Constant used when setting or getting the type of columns.
Type Number
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
switch (column.getType())
{
case JSColumn.TEXT:
// handle text column
break;
case JSColumn.NUMBER:
case JSColumn.INTEGER:
// handle numerical column
break;
}
UUID_COLUMN
Constant used when setting or getting the flags of columns. This flag identifies columns whose values are treated as UUID.
Type Number
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
if (column.hasFlag(JSColumn.UUID_COLUMN))
{
// handle uuid column
}
UUID_GENERATOR
Constant used when setting or getting the sequence type of columns.
Type Number
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
switch (column.getSequenceType())
{
case JSColumn.NONE:
// handle column with no sequence
break;
case JSColumn.UUID_GENERATOR:
// handle uuid generated column
break;
}
Properties Detailed
allowNull
Get or set the allow-null flag of a new column. Note that when a column is added to an existing table, allowNull will always be set. For a primary key column, the allowNull flag will be always off, for other columns the flag is set by default.
Type Boolean
Sample
var server = plugins.maintenance.getServer("example_data");
if (server)
{
var table = server.createNewTable("users");
if (table)
{
var pk = table.createNewColumn("id", JSColumn.MEDIA, 16); // can also use (JSColumn.TEXT, 36) for UUIDs
pk.rowIdentifierType = JSColumn.PK_COLUMN;
pk.setFlag(JSColumn.UUID_COLUMN, true)
pk.sequenceType = JSColumn.UUID_GENERATOR
var c = table.createNewColumn("name", JSColumn.TEXT, 100);
c.allowNull = false
table.createNewColumn("age", JSColumn.INTEGER, 0);
table.createNewColumn("last_login", JSColumn.DATETIME, 0);
var result = server.synchronizeWithDB(table);
if (result) application.output("Table successfully created.");
else application.output("Table not created.");
}
}
rowIdentifierType
Get or set the row identifier type of the column. The sequence type is one of: - JSColumn.PK_COLUMN - JSColumn.ROWID_COLUMN - JSColumn.NONE
Type Number
Sample
var server = plugins.maintenance.getServer("example_data");
if (server)
{
// users has uuid pk
var table = server.createNewTable("users");
if (table)
{
var pk = table.createNewColumn("id", JSColumn.MEDIA, 16); // can also use <JSColumn.TEXT, 36> for UUIDs)
pk.rowIdentifierType = JSColumn.PK_COLUMN;
pk.setFlag(JSColumn.UUID_COLUMN, true)
pk.sequenceType = JSColumn.UUID_GENERATOR
table.createNewColumn("name", JSColumn.TEXT, 100);
var result = server.synchronizeWithDB(table);
if (result) application.output("Table users successfully created.");
else application.output("Table users not created.");
}
// groups has database sequence pk
table = server.createNewTable("groups");
if (table)
{
pk = table.createNewColumn("id", JSColumn.INTEGER, 0);
pk.rowIdentifierType = JSColumn.PK_COLUMN;
pk.sequenceType = JSColumn.DATABASE_SEQUENCE
pk.setDatabaseSequenceName('mygroupsequence')
table.createNewColumn("name", JSColumn.TEXT, 100);
result = server.synchronizeWithDB(table);
if (result) application.output("Table groups successfully created.");
else application.output("Table groups not created.");
}
}
sequenceType
Get or set the sequence type of the column. The sequence type is one of: - JSColumn.NONE - JSColumn.SERVOY_SEQUENCE - JSColumn.DATABASE_SEQUENCE - JSColumn.DATABASE_IDENTITY - JSColumn.UUID_GENERATOR;
Type Number
Sample
var server = plugins.maintenance.getServer("example_data");
if (server)
{
// users has uuid pk
var table = server.createNewTable("users");
if (table)
{
var pk = table.createNewColumn("id", JSColumn.MEDIA, 16); // can also use <JSColumn.TEXT, 36> for UUIDs)
pk.rowIdentifierType = JSColumn.PK_COLUMN;
pk.setFlag(JSColumn.UUID_COLUMN, true)
pk.sequenceType = JSColumn.UUID_GENERATOR
table.createNewColumn("name", JSColumn.TEXT, 100);
var result = server.synchronizeWithDB(table);
if (result) application.output("Table users successfully created.");
else application.output("Table users not created.");
}
// groups has database sequence pk
table = server.createNewTable("groups");
if (table)
{
pk = table.createNewColumn("id", JSColumn.INTEGER, 0);
pk.rowIdentifierType = JSColumn.PK_COLUMN;
pk.sequenceType = JSColumn.DATABASE_SEQUENCE
pk.setDatabaseSequenceName('mygroupsequence')
table.createNewColumn("name", JSColumn.TEXT, 100);
result = server.synchronizeWithDB(table);
if (result) application.output("Table groups successfully created.");
else application.output("Table groups not created.");
}
}
Methods Detailed
getDataProviderID()
Get the data provider id for this column (which is the same as name if not explicitly defined otherwise).
Returns: String String dataprovider id.
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
var dataProviderId = column.getDataProviderID()
getDefaultFormat()
Get the default format of the column.
Returns: String String column default format.
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
var format = column.getDefaultFormat()
getDescription()
Get the description property of the column.
Returns: String String column description.
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customername')
var desc = column.getDescription()
getForeignType()
Get the foreign type of the column. The foreign type can be defined design time as a foreign key reference to another table.
Returns: String String foreign type.
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
var foreignType = column.getForeignType()
if (foreignType != null)
{
var fkTable = databaseManager.getTable('example_data', foreignType)
}
getLength()
Get the length of the column as reported by the JDBC driver.
Returns: Number int column length.
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customername')
if (column.getLength() < 10)
{
// handle short column
}
getName()
Get the name of the column as used by Servoy.
Returns: String String column name
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
var colName = column.getName()
getQualifiedName()
Get the qualified name (including table name) of the column as known by the database. The name is quoted, if necessary, as defined by the actual database used.
Returns: String String qualified column name.
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
var qualifiedSqlName = column.getQualifiedName()
getQuotedSQLName()
Returns a quoted version of the column name, if necessary, as defined by the actual database used.
Returns: String column name, quoted if needed.
Sample
//use with the raw SQL plugin:
//if the table name contains characters that are illegal in sql, the table name will be quoted
var jsTable = databaseManager.getTable('udm', 'campaigns')
var quotedTableName = jsTable.getQuotedSQLName()
var jsColumn = jsTable.getColumn('active')
var quotedColumnName = jsColumn.getQuotedSQLName()
plugins.rawSQL.executeSQL('udm', quotedTableName, 'select * from ' + quotedTableName + ' where ' + quotedColumnName + ' = ?', [1])
getRawTitle()
Get the raw title property of the column.
Returns: String String column title.
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customername')
var title = column.getRawTitle()
getSQLName()
Get the name of the column as known by the database.
Returns: String String sql name
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
var sqlName = column.getSQLName()
getSQLType()
Get the raw JDBC type of the column, which allows to check database specific types, like sting/byte column type variations.
Returns: Number int sql type.
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
var sqlType = column.getSQLType();
getScale()
Get the scale of the column as reported by the JDBC driver.
Returns: Number int column scale.
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customername')
var scale = column.getScale()
getTable()
Get the JSTable of this column.
Returns: JSTable table The JSTable of this column.
getTitle()
Get the title property of the column. If title is null will return column name.
Returns: String String column title.
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customername')
var title = column.getTitle()
getType()
Get the JDBC type of the column. The type reported by the JDBC driver will be mapped to one of: - JSColumn.DATETIME - JSColumn.TEXT - JSColumn.NUMBER - JSColumn.INTEGER - JSColumn.MEDIA
Returns: Number int sql type.
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
switch (column.getType())
{
case JSColumn.TEXT:
// handle text column
break;
case JSColumn.NUMBER:
case JSColumn.INTEGER:
// handle numerical column
break;
}
getTypeAsString()
Get the name JDBC type of the column. The same mapping as defined in JSColumn.getType() is applied.
Returns: String String sql name.
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
var typeName = column.getTypeAsString()
hasFlag(flag)
Check a flag of the column. The flags are a bit pattern consisting of 1 or more of the following bits: - JSColumn.UUID_COLUMN - JSColumn.EXCLUDED_COLUMN - JSColumn.TENANT_COLUMN - JSColumn.NATIVE_COLUMN
Parameters
Number flag ;
Returns: Boolean boolean whether flag is set.
Sample
var table = databaseManager.getTable('db:/example_data/orders')
var column = table.getColumn('customerid')
if (column.hasFlag(JSColumn.UUID_COLUMN))
{
// handle uuid column
}
setDatabaseSequenceName(sequenceName)
Set the database sequence name of the column, used for columns with sequence type JSColumn.DATABASE_SEQUENCE.
Parameters
String sequenceName the sequence name
Returns: void
Sample
var server = plugins.maintenance.getServer("example_data");
if (server)
{
// users has uuid pk
var table = server.createNewTable("users");
if (table)
{
var pk = table.createNewColumn("id", JSColumn.MEDIA, 16); // can also use <JSColumn.TEXT, 36> for UUIDs)
pk.rowIdentifierType = JSColumn.PK_COLUMN;
pk.setFlag(JSColumn.UUID_COLUMN, true)
pk.sequenceType = JSColumn.UUID_GENERATOR
table.createNewColumn("name", JSColumn.TEXT, 100);
var result = server.synchronizeWithDB(table);
if (result) application.output("Table users successfully created.");
else application.output("Table users not created.");
}
// groups has database sequence pk
table = server.createNewTable("groups");
if (table)
{
pk = table.createNewColumn("id", JSColumn.INTEGER, 0);
pk.rowIdentifierType = JSColumn.PK_COLUMN;
pk.sequenceType = JSColumn.DATABASE_SEQUENCE
pk.setDatabaseSequenceName('mygroupsequence')
table.createNewColumn("name", JSColumn.TEXT, 100);
result = server.synchronizeWithDB(table);
if (result) application.output("Table groups successfully created.");
else application.output("Table groups not created.");
}
}
setFlag(flag, set)
Set or clear a flag of a new column. The flags are a bit pattern consisting of 1 or more of the following bits: - JSColumn.UUID_COLUMN; - JSColumn.EXCLUDED_COLUMN;
Parameters
Returns: void
Sample
var server = plugins.maintenance.getServer("example_data");
if (server)
{
var table = server.createNewTable("users");
if (table)
{
var pk = table.createNewColumn("id", JSColumn.MEDIA, 16); // can also use (JSColumn.TEXT, 36) for UUIDs
pk.rowIdentifierType = JSColumn.PK_COLUMN;
pk.setFlag(JSColumn.UUID_COLUMN, true)
pk.sequenceType = JSColumn.UUID_GENERATOR
var c = table.createNewColumn("name", JSColumn.TEXT, 100);
c.allowNull = false
table.createNewColumn("age", JSColumn.INTEGER, 0);
table.createNewColumn("last_login", JSColumn.DATETIME, 0);
var result = server.synchronizeWithDB(table);
if (result) application.output("Table successfully created.");
else application.output("Table not created.");
}
}
Last updated
Was this helpful?