public abstract class AbstractTriggerTemplate
extends java.lang.Object
| Modifier and Type | Class and Description |
|---|---|
protected static class |
AbstractTriggerTemplate.ColumnString |
| Modifier and Type | Field and Description |
|---|---|
protected java.lang.String |
arrayColumnTemplate |
protected java.lang.String |
binaryColumnTemplate |
protected java.lang.String |
blobColumnTemplate |
protected java.lang.String |
booleanColumnTemplate |
protected java.lang.String |
clobColumnTemplate |
protected java.lang.String |
dateColumnTemplate |
protected java.lang.String |
datetimeColumnTemplate |
protected java.lang.String |
dateTimeWithLocalTimeZoneColumnTemplate |
protected java.lang.String |
dateTimeWithTimeZoneColumnTemplate |
protected java.lang.String |
emptyColumnTemplate |
protected java.lang.String |
geographyColumnTemplate |
protected java.lang.String |
geometryColumnTemplate |
protected java.lang.String |
imageColumnTemplate |
protected org.slf4j.Logger |
log |
protected java.lang.String |
longColumnTemplate |
protected java.lang.String |
newColumnPrefix |
protected java.lang.String |
newTriggerValue |
protected java.lang.String |
numberColumnTemplate |
protected java.lang.String |
oldColumnPrefix |
protected java.lang.String |
oldTriggerValue |
protected static java.lang.String |
ORIG_TABLE_ALIAS |
protected java.lang.String |
otherColumnTemplate |
protected java.util.Map<java.lang.String,java.lang.String> |
sqlTemplates |
protected java.lang.String |
stringColumnTemplate |
protected ISymmetricDialect |
symmetricDialect |
protected java.lang.String |
timeColumnTemplate |
protected java.lang.String |
triggerConcatCharacter |
protected java.lang.String |
wrappedBlobColumnTemplate |
protected java.lang.String |
xmlColumnTemplate |
| Modifier | Constructor and Description |
|---|---|
protected |
AbstractTriggerTemplate(ISymmetricDialect symmetricDialect) |
| Modifier and Type | Method and Description |
|---|---|
protected java.lang.String |
aliasedPrimaryKeyJoin(java.lang.String aliasOne,
java.lang.String aliasTwo,
org.jumpmind.db.model.Column[] columns) |
protected java.lang.String |
aliasedPrimaryKeyJoinVar(java.lang.String alias,
java.lang.String prefix,
org.jumpmind.db.model.Column[] columns) |
protected java.lang.String |
buildColumnNameString(java.lang.String tableAlias,
boolean quote,
Trigger trigger,
org.jumpmind.db.model.Column[] columns) |
protected AbstractTriggerTemplate.ColumnString |
buildColumnsString(java.lang.String origTableAlias,
java.lang.String tableAlias,
java.lang.String columnPrefix,
org.jumpmind.db.model.Table table,
org.jumpmind.db.model.Column[] columns,
org.jumpmind.symmetric.io.data.DataEventType dml,
boolean isOld,
Channel channel,
Trigger trigger) |
protected java.lang.String |
buildKeyVariablesDeclare(org.jumpmind.db.model.Column[] columns,
java.lang.String prefix) |
protected java.lang.String |
buildKeyVariablesString(org.jumpmind.db.model.Column[] columns,
java.lang.String prefix) |
protected java.lang.String |
buildVirtualTableSql(java.lang.String oldTriggerValue,
java.lang.String newTriggerValue,
org.jumpmind.db.model.Column[] columns) |
protected java.lang.String |
castDatetimeColumnToString(java.lang.String columnName) |
java.lang.String |
createCsvDataSql(Trigger trigger,
TriggerHistory triggerHistory,
org.jumpmind.db.model.Table originalTable,
Channel channel,
java.lang.String whereClause) |
java.lang.String |
createCsvPrimaryKeySql(Trigger trigger,
TriggerHistory triggerHistory,
org.jumpmind.db.model.Table table,
Channel channel,
java.lang.String whereClause) |
java.lang.String |
createDdlTrigger(java.lang.String tablePrefix,
java.lang.String defaultCatalog,
java.lang.String defaultSchema,
java.lang.String triggerName) |
java.lang.String |
createInitalLoadSql(Node node,
TriggerRouter triggerRouter,
org.jumpmind.db.model.Table originalTable,
TriggerHistory triggerHistory,
Channel channel,
java.lang.String overrideSelectSql) |
java.lang.String |
createPostTriggerDDL(org.jumpmind.symmetric.io.data.DataEventType dml,
Trigger trigger,
TriggerHistory history,
Channel channel,
java.lang.String tablePrefix,
org.jumpmind.db.model.Table originalTable,
java.lang.String defaultCatalog,
java.lang.String defaultSchema) |
java.lang.String |
createTriggerDDL(org.jumpmind.symmetric.io.data.DataEventType dml,
Trigger trigger,
TriggerHistory history,
Channel channel,
java.lang.String tablePrefix,
org.jumpmind.db.model.Table originalTable,
java.lang.String defaultCatalog,
java.lang.String defaultSchema) |
protected java.lang.String |
eval(boolean condition,
java.lang.String prop,
java.lang.String ddl) |
protected AbstractTriggerTemplate.ColumnString |
fillOutColumnTemplate(java.lang.String origTableAlias,
java.lang.String tableAlias,
java.lang.String columnPrefix,
org.jumpmind.db.model.Table table,
org.jumpmind.db.model.Column column,
org.jumpmind.symmetric.io.data.DataEventType dml,
boolean isOld,
Channel channel,
Trigger trigger) |
java.lang.String |
getBlobColumnTemplate() |
protected java.lang.String |
getChannelExpression(Trigger trigger,
TriggerHistory history,
org.jumpmind.db.model.Table originalTable) |
java.lang.String |
getClobColumnTemplate() |
protected java.lang.String |
getClobType(org.jumpmind.db.model.Table table) |
boolean[] |
getColumnPositionUsingTemplate(org.jumpmind.db.model.Table originalTable,
TriggerHistory triggerHistory) |
protected java.lang.String |
getColumnSize(org.jumpmind.db.model.Table table,
org.jumpmind.db.model.Column column) |
java.lang.String |
getDateColumnTemplate() |
protected java.lang.String |
getDefaultTargetTableName(Trigger trigger,
TriggerHistory history) |
protected java.lang.String |
getHasPrimaryKeysDefinedString(org.jumpmind.db.model.Table table) |
java.lang.String |
getImageColumnTemplate() |
java.lang.String |
getNewTriggerValue() |
java.lang.String |
getOldTriggerValue() |
java.lang.String |
getOtherColumnTemplate() |
protected java.lang.String |
getPrimaryKeysUpdatedString(org.jumpmind.db.model.Table table) |
protected java.lang.String |
getPrimaryKeyWhereString(java.lang.String alias,
org.jumpmind.db.model.Column[] columns)
Deprecated.
|
protected java.lang.String |
getSourceTablePrefix(org.jumpmind.db.model.Table table) |
protected java.lang.String |
getSourceTablePrefix(TriggerHistory triggerHistory) |
protected java.lang.String |
getSourceTableSchema(org.jumpmind.db.model.Table table) |
protected java.lang.String |
getSourceTableSchema(TriggerHistory triggerHistory) |
java.lang.String |
getTimeColumnTemplate() |
java.lang.String |
getWrappedBlobColumnTemplate() |
protected boolean |
noDateColumnTemplate() |
protected boolean |
noTimeColumnTemplate() |
protected java.lang.String |
replaceDefaultCatalog(java.lang.String ddl,
java.lang.String defaultCatalog) |
protected java.lang.String |
replaceDefaultSchema(java.lang.String ddl,
java.lang.String defaultSchema) |
protected java.lang.String |
replaceDefaultSchemaAndCatalog(java.lang.String sql) |
java.lang.String |
replaceOracleQueryHint(java.lang.String sql) |
protected java.lang.String |
replaceTemplateVariables(org.jumpmind.symmetric.io.data.DataEventType dml,
Trigger trigger,
TriggerHistory history,
Channel channel,
java.lang.String tablePrefix,
org.jumpmind.db.model.Table originalTable,
org.jumpmind.db.model.Table table,
java.lang.String defaultCatalog,
java.lang.String defaultSchema,
java.lang.String ddl) |
protected boolean |
requiresEmptyLobTemplateForDeletes() |
protected boolean |
requiresWrappedBlobTemplateForBlobType() |
void |
setBooleanColumnTemplate(java.lang.String booleanColumnTemplate) |
void |
setDateColumnTemplate(java.lang.String dateColumnTemplate) |
void |
setImageColumnTemplate(java.lang.String imageColumnTemplate) |
void |
setTimeColumnTemplate(java.lang.String timeColumnTemplate) |
protected java.lang.String |
toClobExpression(org.jumpmind.db.model.Table table) |
int |
toHashedValue() |
boolean |
useTriggerTemplateForColumnTemplatesDuringInitialLoad()
When
ParameterConstants.INITIAL_LOAD_CONCAT_CSV_IN_SQL_ENABLED is false
most dialects are going to want to still use the trigger templates because they
have type translation details (like geometry templates). |
protected boolean |
useTriggerTemplateForColumnTemplatesDuringInitialLoad(org.jumpmind.db.model.Column column)
When INITIAL_LOAD_USE_COLUMN_TEMPLATES_ENABLED is true, column templates are used for all columns.
|
protected final org.slf4j.Logger log
protected static final java.lang.String ORIG_TABLE_ALIAS
protected java.util.Map<java.lang.String,java.lang.String> sqlTemplates
protected java.lang.String emptyColumnTemplate
protected java.lang.String stringColumnTemplate
protected java.lang.String xmlColumnTemplate
protected java.lang.String arrayColumnTemplate
protected java.lang.String numberColumnTemplate
protected java.lang.String datetimeColumnTemplate
protected java.lang.String timeColumnTemplate
protected java.lang.String dateColumnTemplate
protected java.lang.String dateTimeWithTimeZoneColumnTemplate
protected java.lang.String dateTimeWithLocalTimeZoneColumnTemplate
protected java.lang.String geometryColumnTemplate
protected java.lang.String geographyColumnTemplate
protected java.lang.String clobColumnTemplate
protected java.lang.String blobColumnTemplate
protected java.lang.String longColumnTemplate
protected java.lang.String binaryColumnTemplate
protected java.lang.String imageColumnTemplate
protected java.lang.String wrappedBlobColumnTemplate
protected java.lang.String booleanColumnTemplate
protected java.lang.String triggerConcatCharacter
protected java.lang.String newTriggerValue
protected java.lang.String oldTriggerValue
protected java.lang.String oldColumnPrefix
protected java.lang.String newColumnPrefix
protected java.lang.String otherColumnTemplate
protected ISymmetricDialect symmetricDialect
protected AbstractTriggerTemplate(ISymmetricDialect symmetricDialect)
public boolean useTriggerTemplateForColumnTemplatesDuringInitialLoad()
ParameterConstants.INITIAL_LOAD_CONCAT_CSV_IN_SQL_ENABLED is false
most dialects are going to want to still use the trigger templates because they
have type translation details (like geometry templates). However, some dialects
cannot handle the complex SQL generated (Firebird). We needed a way to tell
the dialect that we want to select the columns straight up.protected boolean useTriggerTemplateForColumnTemplatesDuringInitialLoad(org.jumpmind.db.model.Column column)
public java.lang.String createInitalLoadSql(Node node, TriggerRouter triggerRouter, org.jumpmind.db.model.Table originalTable, TriggerHistory triggerHistory, Channel channel, java.lang.String overrideSelectSql)
public boolean[] getColumnPositionUsingTemplate(org.jumpmind.db.model.Table originalTable,
TriggerHistory triggerHistory)
protected java.lang.String castDatetimeColumnToString(java.lang.String columnName)
protected java.lang.String getSourceTablePrefix(org.jumpmind.db.model.Table table)
protected java.lang.String getSourceTableSchema(org.jumpmind.db.model.Table table)
protected java.lang.String getSourceTablePrefix(TriggerHistory triggerHistory)
protected java.lang.String getSourceTableSchema(TriggerHistory triggerHistory)
protected java.lang.String replaceDefaultSchemaAndCatalog(java.lang.String sql)
public java.lang.String createCsvDataSql(Trigger trigger, TriggerHistory triggerHistory, org.jumpmind.db.model.Table originalTable, Channel channel, java.lang.String whereClause)
public java.lang.String createCsvPrimaryKeySql(Trigger trigger, TriggerHistory triggerHistory, org.jumpmind.db.model.Table table, Channel channel, java.lang.String whereClause)
public java.lang.String createTriggerDDL(org.jumpmind.symmetric.io.data.DataEventType dml,
Trigger trigger,
TriggerHistory history,
Channel channel,
java.lang.String tablePrefix,
org.jumpmind.db.model.Table originalTable,
java.lang.String defaultCatalog,
java.lang.String defaultSchema)
public java.lang.String createPostTriggerDDL(org.jumpmind.symmetric.io.data.DataEventType dml,
Trigger trigger,
TriggerHistory history,
Channel channel,
java.lang.String tablePrefix,
org.jumpmind.db.model.Table originalTable,
java.lang.String defaultCatalog,
java.lang.String defaultSchema)
public java.lang.String createDdlTrigger(java.lang.String tablePrefix,
java.lang.String defaultCatalog,
java.lang.String defaultSchema,
java.lang.String triggerName)
protected java.lang.String getDefaultTargetTableName(Trigger trigger, TriggerHistory history)
protected java.lang.String replaceTemplateVariables(org.jumpmind.symmetric.io.data.DataEventType dml,
Trigger trigger,
TriggerHistory history,
Channel channel,
java.lang.String tablePrefix,
org.jumpmind.db.model.Table originalTable,
org.jumpmind.db.model.Table table,
java.lang.String defaultCatalog,
java.lang.String defaultSchema,
java.lang.String ddl)
protected java.lang.String toClobExpression(org.jumpmind.db.model.Table table)
protected java.lang.String getClobType(org.jumpmind.db.model.Table table)
protected java.lang.String getChannelExpression(Trigger trigger, TriggerHistory history, org.jumpmind.db.model.Table originalTable)
protected java.lang.String buildVirtualTableSql(java.lang.String oldTriggerValue,
java.lang.String newTriggerValue,
org.jumpmind.db.model.Column[] columns)
protected java.lang.String eval(boolean condition,
java.lang.String prop,
java.lang.String ddl)
protected java.lang.String aliasedPrimaryKeyJoin(java.lang.String aliasOne,
java.lang.String aliasTwo,
org.jumpmind.db.model.Column[] columns)
protected java.lang.String aliasedPrimaryKeyJoinVar(java.lang.String alias,
java.lang.String prefix,
org.jumpmind.db.model.Column[] columns)
@Deprecated
protected java.lang.String getPrimaryKeyWhereString(java.lang.String alias,
org.jumpmind.db.model.Column[] columns)
protected boolean requiresWrappedBlobTemplateForBlobType()
protected boolean requiresEmptyLobTemplateForDeletes()
protected java.lang.String buildColumnNameString(java.lang.String tableAlias,
boolean quote,
Trigger trigger,
org.jumpmind.db.model.Column[] columns)
protected AbstractTriggerTemplate.ColumnString buildColumnsString(java.lang.String origTableAlias, java.lang.String tableAlias, java.lang.String columnPrefix, org.jumpmind.db.model.Table table, org.jumpmind.db.model.Column[] columns, org.jumpmind.symmetric.io.data.DataEventType dml, boolean isOld, Channel channel, Trigger trigger)
protected AbstractTriggerTemplate.ColumnString fillOutColumnTemplate(java.lang.String origTableAlias, java.lang.String tableAlias, java.lang.String columnPrefix, org.jumpmind.db.model.Table table, org.jumpmind.db.model.Column column, org.jumpmind.symmetric.io.data.DataEventType dml, boolean isOld, Channel channel, Trigger trigger)
protected java.lang.String getColumnSize(org.jumpmind.db.model.Table table,
org.jumpmind.db.model.Column column)
public java.lang.String getOtherColumnTemplate()
protected boolean noTimeColumnTemplate()
protected boolean noDateColumnTemplate()
protected java.lang.String buildKeyVariablesDeclare(org.jumpmind.db.model.Column[] columns,
java.lang.String prefix)
protected java.lang.String buildKeyVariablesString(org.jumpmind.db.model.Column[] columns,
java.lang.String prefix)
public java.lang.String getClobColumnTemplate()
public void setBooleanColumnTemplate(java.lang.String booleanColumnTemplate)
public java.lang.String getNewTriggerValue()
public java.lang.String getOldTriggerValue()
public java.lang.String getBlobColumnTemplate()
public java.lang.String getWrappedBlobColumnTemplate()
protected java.lang.String replaceDefaultSchema(java.lang.String ddl,
java.lang.String defaultSchema)
protected java.lang.String replaceDefaultCatalog(java.lang.String ddl,
java.lang.String defaultCatalog)
public java.lang.String getTimeColumnTemplate()
public void setTimeColumnTemplate(java.lang.String timeColumnTemplate)
public java.lang.String getDateColumnTemplate()
public void setDateColumnTemplate(java.lang.String dateColumnTemplate)
public java.lang.String getImageColumnTemplate()
public void setImageColumnTemplate(java.lang.String imageColumnTemplate)
public int toHashedValue()
public java.lang.String replaceOracleQueryHint(java.lang.String sql)
protected java.lang.String getHasPrimaryKeysDefinedString(org.jumpmind.db.model.Table table)
protected java.lang.String getPrimaryKeysUpdatedString(org.jumpmind.db.model.Table table)