Class AbstractTriggerTemplate

java.lang.Object
org.jumpmind.symmetric.db.AbstractTriggerTemplate
Direct Known Subclasses:
AseTriggerTemplate, Db2TriggerTemplate, DerbyTriggerTemplate, FirebirdTriggerTemplate, GenericTriggerTemplate, GreenplumTriggerTemplate, H2TriggerTemplate, HanaTriggerTemplate, HsqlDb2TriggerTemplate, HsqlDbTriggerTemplate, InformixTriggerTemplate, IngresSqlTriggerTemplate, InterbaseTriggerTemplate, MsSqlTriggerTemplate, MySqlTriggerTemplate, NuoDbTriggerTemplate, OracleTriggerTemplate, PostgreSqlTriggerTemplate, RaimaTriggerTemplate, RedshiftTriggerTemplate, SqlAnywhereTriggerTemplate, SqliteTriggerTemplate, VoltDbTriggerTemplate

public abstract class AbstractTriggerTemplate extends Object
Responsible for generating dialect specific SQL such as trigger bodies and functions
  • Field Details

    • log

      protected final org.slf4j.Logger log
    • ORIG_TABLE_ALIAS

      protected static final String ORIG_TABLE_ALIAS
      See Also:
    • sqlTemplates

      protected Map<String,String> sqlTemplates
    • emptyColumnTemplate

      protected String emptyColumnTemplate
    • stringColumnTemplate

      protected String stringColumnTemplate
    • xmlColumnTemplate

      protected String xmlColumnTemplate
    • arrayColumnTemplate

      protected String arrayColumnTemplate
    • numberColumnTemplate

      protected String numberColumnTemplate
    • moneyColumnTemplate

      protected String moneyColumnTemplate
    • datetimeColumnTemplate

      protected String datetimeColumnTemplate
    • timeColumnTemplate

      protected String timeColumnTemplate
    • dateColumnTemplate

      protected String dateColumnTemplate
    • dateTimeWithTimeZoneColumnTemplate

      protected String dateTimeWithTimeZoneColumnTemplate
    • dateTimeWithLocalTimeZoneColumnTemplate

      protected String dateTimeWithLocalTimeZoneColumnTemplate
    • geometryColumnTemplate

      protected String geometryColumnTemplate
    • geographyColumnTemplate

      protected String geographyColumnTemplate
    • clobColumnTemplate

      protected String clobColumnTemplate
    • blobColumnTemplate

      protected String blobColumnTemplate
    • longColumnTemplate

      protected String longColumnTemplate
    • binaryColumnTemplate

      protected String binaryColumnTemplate
    • imageColumnTemplate

      protected String imageColumnTemplate
    • wrappedBlobColumnTemplate

      protected String wrappedBlobColumnTemplate
    • booleanColumnTemplate

      protected String booleanColumnTemplate
    • triggerConcatCharacter

      protected String triggerConcatCharacter
    • newTriggerValue

      protected String newTriggerValue
    • oldTriggerValue

      protected String oldTriggerValue
    • oldColumnPrefix

      protected String oldColumnPrefix
    • newColumnPrefix

      protected String newColumnPrefix
    • otherColumnTemplate

      protected String otherColumnTemplate
    • symmetricDialect

      protected ISymmetricDialect symmetricDialect
    • hashedValue

      protected int hashedValue
  • Constructor Details

    • AbstractTriggerTemplate

      protected AbstractTriggerTemplate(ISymmetricDialect symmetricDialect)
  • Method Details

    • useTriggerTemplateForColumnTemplatesDuringInitialLoad

      public 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). 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.
    • useTriggerTemplateForColumnTemplatesDuringInitialLoad

      protected boolean useTriggerTemplateForColumnTemplatesDuringInitialLoad(Column column)
      When INITIAL_LOAD_USE_COLUMN_TEMPLATES_ENABLED is true, column templates are used for all columns. When false, only specific column types have been implemented to format data in code.
    • createInitalLoadSql

      public String createInitalLoadSql(Node node, TriggerRouter triggerRouter, Table originalTable, TriggerHistory triggerHistory, Channel channel, String overrideSelectSql)
    • isUniTextColumn

      public boolean isUniTextColumn(Column column)
    • getColumnPositionUsingTemplate

      public boolean[] getColumnPositionUsingTemplate(Table originalTable, TriggerHistory triggerHistory)
    • castDatetimeColumnToString

      protected String castDatetimeColumnToString(String columnName)
    • getSourceTablePrefix

      protected String getSourceTablePrefix(Table table)
    • getSourceTableSchema

      protected String getSourceTableSchema(Table table)
    • getSourceTablePrefix

      protected String getSourceTablePrefix(TriggerHistory triggerHistory)
    • getSourceTableSchema

      protected String getSourceTableSchema(TriggerHistory triggerHistory)
    • getSchemaNameOnly

      protected String getSchemaNameOnly(TriggerHistory triggerHistory)
    • replaceDefaultSchemaAndCatalog

      protected String replaceDefaultSchemaAndCatalog(String sql)
    • replaceDefaultSchemaAndCatalog

      protected String replaceDefaultSchemaAndCatalog(String sql, String catalog, String schema)
    • createCsvDataSql

      public String createCsvDataSql(Trigger trigger, TriggerHistory triggerHistory, Table originalTable, Channel channel, String whereClause)
    • createCsvPrimaryKeySql

      public String createCsvPrimaryKeySql(Trigger trigger, TriggerHistory triggerHistory, Table table, Channel channel, String whereClause)
    • createTriggerDDL

      public String createTriggerDDL(DataEventType dml, Trigger trigger, TriggerHistory history, Channel channel, String tablePrefix, Table originalTable, String defaultCatalog, String defaultSchema)
    • createPostTriggerDDL

      public String createPostTriggerDDL(DataEventType dml, Trigger trigger, TriggerHistory history, Channel channel, String tablePrefix, Table originalTable, String defaultCatalog, String defaultSchema)
    • createDdlTrigger

      public String createDdlTrigger(String tablePrefix, String defaultCatalog, String defaultSchema, String triggerName)
    • createPostDdlTriggerDDL

      public String createPostDdlTriggerDDL(String tablePrefix, String triggerName)
    • getDefaultTargetTableName

      protected String getDefaultTargetTableName(Trigger trigger, TriggerHistory history)
    • replaceTemplateVariables

      protected String replaceTemplateVariables(DataEventType dml, Trigger trigger, TriggerHistory history, Channel channel, String tablePrefix, Table originalTable, Table table, String defaultCatalog, String defaultSchema, String ddl)
    • toClobExpression

      protected String toClobExpression(Table table)
    • getClobType

      protected String getClobType(Table table)
    • getChannelExpression

      protected String getChannelExpression(Trigger trigger, TriggerHistory history, Table originalTable)
    • buildVirtualTableSql

      protected String buildVirtualTableSql(String oldTriggerValue, String newTriggerValue, Column[] columns)
    • eval

      protected String eval(boolean condition, String prop, String ddl)
    • aliasedPrimaryKeyJoin

      protected String aliasedPrimaryKeyJoin(String aliasOne, String aliasTwo, Column[] columns)
      Builds join with all primary key columns pairs prefixed by the new and old aliases.
    • aliasedPrimaryKeyJoinVar

      protected String aliasedPrimaryKeyJoinVar(String alias, String prefix, Column[] columns)
      Builds join with all primary key columns paired with prefixed parameter values.
    • getPrimaryKeyWhereString

      @Deprecated protected String getPrimaryKeyWhereString(String alias, Column[] columns)
      Deprecated.
      Specific to Derby. Needs to be removed when the initial load is refactored to concat in Java vs. in SQL
    • requiresWrappedBlobTemplateForBlobType

      protected boolean requiresWrappedBlobTemplateForBlobType()
    • requiresEmptyLobTemplateForDeletes

      protected boolean requiresEmptyLobTemplateForDeletes()
    • isLob

      protected boolean isLob(Column column)
      Helps detect Large Object columns. Some LOBs are inaccessible to triggers or require specialized code.
    • buildColumnNameString

      protected String buildColumnNameString(String tableAlias, boolean quote, Trigger trigger, Column[] columns)
    • buildColumnsString

      protected AbstractTriggerTemplate.ColumnString buildColumnsString(String origTableAlias, String tableAlias, String columnPrefix, Table table, Column[] columns, DataEventType dml, boolean isOld, Channel channel, Trigger trigger)
    • fillOutColumnTemplate

      protected AbstractTriggerTemplate.ColumnString fillOutColumnTemplate(String origTableAlias, String tableAlias, String columnPrefix, Table table, Column column, DataEventType dml, boolean isOld, Channel channel, Trigger trigger, boolean ignoreStreamLobs)
    • getColumnSize

      protected String getColumnSize(Table table, Column column)
    • getOtherColumnTemplate

      public String getOtherColumnTemplate()
    • noTimeColumnTemplate

      protected boolean noTimeColumnTemplate()
    • noDateColumnTemplate

      protected boolean noDateColumnTemplate()
    • adjustColumnTemplate

      protected String adjustColumnTemplate(String template, int typeCode)
    • buildKeyVariablesDeclare

      protected String buildKeyVariablesDeclare(Column[] columns, String prefix)
    • buildKeyVariablesString

      protected String buildKeyVariablesString(Column[] columns, String prefix)
    • getClobColumnTemplate

      public String getClobColumnTemplate()
    • setBooleanColumnTemplate

      public void setBooleanColumnTemplate(String booleanColumnTemplate)
    • getNewTriggerValue

      public String getNewTriggerValue()
    • getOldTriggerValue

      public String getOldTriggerValue()
    • getBlobColumnTemplate

      public String getBlobColumnTemplate()
    • getWrappedBlobColumnTemplate

      public String getWrappedBlobColumnTemplate()
    • replaceDefaultSchema

      protected String replaceDefaultSchema(String ddl, String defaultSchema)
    • replaceDefaultCatalog

      protected String replaceDefaultCatalog(String ddl, String defaultCatalog)
    • getTimeColumnTemplate

      public String getTimeColumnTemplate()
    • setTimeColumnTemplate

      public void setTimeColumnTemplate(String timeColumnTemplate)
    • getDateColumnTemplate

      public String getDateColumnTemplate()
    • setDateColumnTemplate

      public void setDateColumnTemplate(String dateColumnTemplate)
    • getImageColumnTemplate

      public String getImageColumnTemplate()
    • setImageColumnTemplate

      public void setImageColumnTemplate(String imageColumnTemplate)
    • toHashedValue

      public int toHashedValue()
    • replaceOracleQueryHint

      public String replaceOracleQueryHint(String sql)
    • getHasPrimaryKeysDefinedString

      protected String getHasPrimaryKeysDefinedString(Table table)
    • getPrimaryKeysUpdatedString

      protected String getPrimaryKeysUpdatedString(Table table)
    • getCreateTriggerString

      protected String getCreateTriggerString()