diff --git a/symmetric/src/main/java/org/jumpmind/symmetric/service/IConfigurationService.java b/symmetric/src/main/java/org/jumpmind/symmetric/service/IConfigurationService.java index 8b147bb54a..bca4a2688b 100644 --- a/symmetric/src/main/java/org/jumpmind/symmetric/service/IConfigurationService.java +++ b/symmetric/src/main/java/org/jumpmind/symmetric/service/IConfigurationService.java @@ -42,8 +42,6 @@ public interface IConfigurationService { public List getRootConfigChannelTableNames(); - public List getNodeConfigChannelTableNames(); - public void initTriggerRowsForConfigChannel(); public void saveChannel(Channel channel); diff --git a/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/AbstractService.java b/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/AbstractService.java index 0ea6e49090..1a341928cc 100644 --- a/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/AbstractService.java +++ b/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/AbstractService.java @@ -20,6 +20,8 @@ package org.jumpmind.symmetric.service.impl; +import java.util.Map; + import org.jumpmind.symmetric.config.IRuntimeConfig; import org.springframework.jdbc.core.JdbcTemplate; @@ -28,6 +30,8 @@ abstract class AbstractService { protected IRuntimeConfig runtimeConfiguration; protected JdbcTemplate jdbcTemplate; + + private Map sql; public void setRuntimeConfiguration(IRuntimeConfig runtimeConfiguration) { this.runtimeConfiguration = runtimeConfiguration; @@ -37,4 +41,12 @@ public void setJdbcTemplate(JdbcTemplate jdbc) { this.jdbcTemplate = jdbc; } + public void setSql(Map sql) { + this.sql = sql; + } + + public String getSql(String key) { + return sql.get(key); + } + } diff --git a/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/ConfigurationService.java b/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/ConfigurationService.java index f535491e19..11e4580f43 100644 --- a/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/ConfigurationService.java +++ b/symmetric/src/main/java/org/jumpmind/symmetric/service/impl/ConfigurationService.java @@ -49,50 +49,8 @@ public class ConfigurationService extends AbstractService implements IConfigurat final static Log logger = LogFactory.getLog(ConfigurationService.class); - private String triggerHistSql; - - private String latestTriggerHistSql; - - private String allTriggerHistSql; - - private String insertChannelSql; - - private String deleteChannelSql; - - private String updateChannelSql; - - private String groupsLinksSql; - - private String groupsLinksForSql; - - private String insertTriggerSql; - - private String selectTriggerSql; - - private String selectTriggerByIdSql; - - private String selectTriggerTargetSql; - - private String selectGroupTriggersSql; - - private String selectChannelsSql; - - private String selectDataEventActionsByIdSql; - - private String insertTriggerHistorySql; - - private String inactivateTriggerHistorySql; - - private String activeTriggersForSourceNodeGroupSql; - - private String activeTriggersForReloadSql; - - private String inactiveTriggersForSourceNodeGroupSql; - private List rootConfigChannelTableNames; - private List nodeConfigChannelTableNames; - private Map rootConfigChannelInitialLoadSelect; private IDbDialect dbDialect; @@ -105,29 +63,29 @@ public class ConfigurationService extends AbstractService implements IConfigurat protected void initSystemChannels() { try { - jdbcTemplate.update(insertChannelSql, new Object[] { Constants.CHANNEL_CONFIG, 0, 100, 100, 1 }); + jdbcTemplate.update(getSql("insertChannelSql"), new Object[] { Constants.CHANNEL_CONFIG, 0, 100, 100, 1 }); } catch (DataIntegrityViolationException ex) { logger.debug("Channel " + Constants.CHANNEL_CONFIG + " already created."); } try { - jdbcTemplate.update(insertChannelSql, new Object[] { Constants.CHANNEL_RELOAD, 1, 1, 10, 1 }); + jdbcTemplate.update(getSql("insertChannelSql"),new Object[] { Constants.CHANNEL_RELOAD, 1, 1, 10, 1 }); } catch (DataIntegrityViolationException ex) { logger.debug("Channel " + Constants.CHANNEL_RELOAD + " already created."); } } public void inactivateTriggerHistory(TriggerHistory history) { - jdbcTemplate.update(inactivateTriggerHistorySql, new Object[] { history.getTriggerHistoryId() }); + jdbcTemplate.update(getSql("inactivateTriggerHistorySql"),new Object[] { history.getTriggerHistoryId() }); } @SuppressWarnings("unchecked") public List getGroupLinks() { - return jdbcTemplate.query(groupsLinksSql, new DomainTargetRowMapper()); + return jdbcTemplate.query(getSql("groupsLinksSql"),new DomainTargetRowMapper()); } @SuppressWarnings("unchecked") public List getGroupLinksFor(String nodeGroupId) { - return jdbcTemplate.query(groupsLinksForSql, new Object[] { nodeGroupId }, new DomainTargetRowMapper()); + return jdbcTemplate.query(getSql("groupsLinksForSql"),new Object[] { nodeGroupId }, new DomainTargetRowMapper()); } public List getRootConfigChannelTableNames() { @@ -135,16 +93,16 @@ public List getRootConfigChannelTableNames() { } public void saveChannel(Channel channel) { - if (0 == jdbcTemplate.update(updateChannelSql, new Object[] { channel.getProcessingOrder(), + if (0 == jdbcTemplate.update(getSql("updateChannelSql"),new Object[] { channel.getProcessingOrder(), channel.getMaxBatchSize(), channel.getMaxBatchToSend(), channel.isEnabled() ? 1 : 0, channel.getId() })) { - jdbcTemplate.update(insertChannelSql, new Object[] { channel.getId(), channel.getProcessingOrder(), + jdbcTemplate.update(getSql("insertChannelSql"),new Object[] { channel.getId(), channel.getProcessingOrder(), channel.getMaxBatchSize(), channel.getMaxBatchToSend(), channel.isEnabled() ? 1 : 0 }); } } public void deleteChannel(Channel channel) { - jdbcTemplate.update(deleteChannelSql, new Object[] { channel.getId() }); + jdbcTemplate.update(getSql("deleteChannelSql"),new Object[] { channel.getId() }); } public void initTriggerRowsForConfigChannel() { @@ -162,7 +120,7 @@ private void initTriggerRowsForConfigChannel(String sourceGroupId, String target Trigger trigger = getTriggerForTarget(tableName, sourceGroupId, targetGroupId, Constants.CHANNEL_CONFIG); if (trigger == null) { String initialLoadSelect = rootConfigChannelInitialLoadSelect.get(tableName); - jdbcTemplate.update(insertTriggerSql, new Object[] { tableName, sourceGroupId, targetGroupId, + jdbcTemplate.update(getSql("insertTriggerSql"),new Object[] { tableName, sourceGroupId, targetGroupId, Constants.CHANNEL_CONFIG, initialLoadOrder++, initialLoadSelect }); } } @@ -171,7 +129,7 @@ private void initTriggerRowsForConfigChannel(String sourceGroupId, String target @SuppressWarnings("unchecked") public List getChannelsFor(boolean failOnError) { try { - return jdbcTemplate.query(selectChannelsSql, new Object[] {}, new RowMapper() { + return jdbcTemplate.query(getSql("selectChannelsSql"),new Object[] {}, new RowMapper() { public Object mapRow(java.sql.ResultSet rs, int arg1) throws java.sql.SQLException { NodeChannel channel = new NodeChannel(); channel.setId(rs.getString(1)); @@ -204,7 +162,7 @@ private boolean isSet(Object value) { @SuppressWarnings("unchecked") public DataEventAction getDataEventActionsByGroupId(String sourceGroupId, String targetGroupId) { - String code = (String) jdbcTemplate.queryForObject(selectDataEventActionsByIdSql, new Object[] { sourceGroupId, + String code = (String) jdbcTemplate.queryForObject(getSql("selectDataEventActionsByIdSql"),new Object[] { sourceGroupId, targetGroupId }, String.class); return DataEventAction.fromCode(code); @@ -212,7 +170,7 @@ public DataEventAction getDataEventActionsByGroupId(String sourceGroupId, String @SuppressWarnings("unchecked") public Trigger getTriggerFor(String table, String sourceNodeGroupId) { - List configs = (List) jdbcTemplate.query(selectTriggerSql, new Object[] { table, + List configs = (List) jdbcTemplate.query(getSql("selectTriggerSql"),new Object[] { table, sourceNodeGroupId }, new TriggerMapper()); if (configs.size() > 0) { return configs.get(0); @@ -223,25 +181,25 @@ public Trigger getTriggerFor(String table, String sourceNodeGroupId) { @SuppressWarnings("unchecked") public List getActiveTriggersForSourceNodeGroup(String sourceNodeGroupId) { - return (List) jdbcTemplate.query(activeTriggersForSourceNodeGroupSql, + return (List) jdbcTemplate.query(getSql("activeTriggersForSourceNodeGroupSql"), new Object[] { sourceNodeGroupId }, new TriggerMapper()); } @SuppressWarnings("unchecked") public List getActiveTriggersForReload(String sourceNodeGroupId, String targetNodeGroupId) { - return (List) jdbcTemplate.query(activeTriggersForReloadSql, new Object[] { sourceNodeGroupId, + return (List) jdbcTemplate.query(getSql("activeTriggersForReloadSql"),new Object[] { sourceNodeGroupId, targetNodeGroupId, Constants.CHANNEL_CONFIG }, new TriggerMapper()); } @SuppressWarnings("unchecked") public List getInactiveTriggersForSourceNodeGroup(String sourceNodeGroupId) { - return (List) jdbcTemplate.query(inactiveTriggersForSourceNodeGroupSql, + return (List) jdbcTemplate.query(getSql("inactiveTriggersForSourceNodeGroupSql"), new Object[] { sourceNodeGroupId }, new TriggerMapper()); } @SuppressWarnings("unchecked") public Trigger getTriggerForTarget(String table, String sourceNodeGroupId, String targetNodeGroupId, String channel) { - List configs = (List) jdbcTemplate.query(selectTriggerTargetSql, new Object[] { table, + List configs = (List) jdbcTemplate.query(getSql("selectTriggerTargetSql"),new Object[] { table, targetNodeGroupId, channel, sourceNodeGroupId }, new TriggerMapper()); if (configs.size() > 0) { return configs.get(0); @@ -252,7 +210,7 @@ public Trigger getTriggerForTarget(String table, String sourceNodeGroupId, Strin @SuppressWarnings("unchecked") public Trigger getTriggerById(int triggerId) { - List triggers = (List) jdbcTemplate.query(selectTriggerByIdSql, new Object[] { triggerId }, + List triggers = (List) jdbcTemplate.query(getSql("selectTriggerByIdSql"),new Object[] { triggerId }, new TriggerMapper()); if (triggers.size() > 0) { return triggers.get(0); @@ -263,7 +221,7 @@ public Trigger getTriggerById(int triggerId) { public Map> getTriggersByChannelFor(String nodeGroupId) { final Map> retMap = new HashMap>(); - jdbcTemplate.query(selectGroupTriggersSql, new Object[] { nodeGroupId }, new TriggerMapper() { + jdbcTemplate.query(getSql("selectGroupTriggersSql"),new Object[] { nodeGroupId }, new TriggerMapper() { public Object mapRow(java.sql.ResultSet rs, int arg1) throws java.sql.SQLException { Trigger config = (Trigger) super.mapRow(rs, arg1); List list = retMap.get(config.getChannelId()); @@ -279,7 +237,7 @@ public Object mapRow(java.sql.ResultSet rs, int arg1) throws java.sql.SQLExcepti } public void insert(TriggerHistory newHistRecord) { - jdbcTemplate.update(insertTriggerHistorySql, new Object[] { newHistRecord.getTriggerId(), + jdbcTemplate.update(getSql("insertTriggerHistorySql"),new Object[] { newHistRecord.getTriggerId(), newHistRecord.getSourceTableName(), newHistRecord.getTableHash(), newHistRecord.getCreateTime(), newHistRecord.getColumnNames(), newHistRecord.getPkColumnNames(), newHistRecord.getLastTriggerBuildReason().getCode(), newHistRecord.getNameForDeleteTrigger(), @@ -289,7 +247,7 @@ public void insert(TriggerHistory newHistRecord) { public Map getHistoryRecords() { final Map retMap = new HashMap(); - jdbcTemplate.query(this.allTriggerHistSql, new TriggerHistoryMapper(retMap)); + jdbcTemplate.query(getSql("allTriggerHistSql"),new TriggerHistoryMapper(retMap)); return retMap; } @@ -297,7 +255,7 @@ public TriggerHistory getHistoryRecordFor(int auditId) { TriggerHistory history = historyMap.get(auditId); if (history == null) { try { - history = (TriggerHistory) jdbcTemplate.queryForObject(this.triggerHistSql, new Object[] { auditId }, + history = (TriggerHistory) jdbcTemplate.queryForObject(getSql("triggerHistSql"),new Object[] { auditId }, new TriggerHistoryMapper()); historyMap.put(auditId, history); } catch (EmptyResultDataAccessException ex) { @@ -308,7 +266,7 @@ public TriggerHistory getHistoryRecordFor(int auditId) { public TriggerHistory getLatestHistoryRecordFor(int triggerId) { try { - return (TriggerHistory) jdbcTemplate.queryForObject(this.latestTriggerHistSql, new Object[] { triggerId }, + return (TriggerHistory) jdbcTemplate.queryForObject(getSql("latestTriggerHistSql"),new Object[] { triggerId }, new TriggerHistoryMapper()); } catch (EmptyResultDataAccessException ex) { return null; @@ -412,104 +370,16 @@ public boolean isRegistrationServer() { return StringUtils.isBlank(runtimeConfiguration.getRegistrationUrl()); } - public void setTriggerHistSql(String tableSyncAuditSql) { - this.triggerHistSql = tableSyncAuditSql; - } - - public void setLatestTriggerHistSql(String latestTableSyncAuditSql) { - this.latestTriggerHistSql = latestTableSyncAuditSql; - } - - public void setAllTriggerHistSql(String allTableSyncAuditSql) { - this.allTriggerHistSql = allTableSyncAuditSql; - } - - public void setInsertChannelSql(String insertChannelSql) { - this.insertChannelSql = insertChannelSql; - } - - public void setGroupsLinksSql(String groupsTargetsSql) { - this.groupsLinksSql = groupsTargetsSql; - } - - public void setGroupsLinksForSql(String groupsTargetsForSql) { - this.groupsLinksForSql = groupsTargetsForSql; - } - - public void setInsertTriggerSql(String insertTableSyncConfigSql) { - this.insertTriggerSql = insertTableSyncConfigSql; - } - public void setRootConfigChannelTableNames(List configChannelTableNames) { this.rootConfigChannelTableNames = configChannelTableNames; } - public void setSelectTriggerSql(String selectTableSyncConfigSql) { - this.selectTriggerSql = selectTableSyncConfigSql; - } - - public void setSelectTriggerTargetSql(String selectTableSyncConfigTargetSql) { - this.selectTriggerTargetSql = selectTableSyncConfigTargetSql; - } - - public void setSelectGroupTriggersSql(String selectDomainTableConfigsSql) { - this.selectGroupTriggersSql = selectDomainTableConfigsSql; - } - - public void setSelectChannelsSql(String selectChannelsSql) { - this.selectChannelsSql = selectChannelsSql; - } - - public void setSelectDataEventActionsByIdSql(String selectDataEventActionsByIdSql) { - this.selectDataEventActionsByIdSql = selectDataEventActionsByIdSql; - } - - public void setInsertTriggerHistorySql(String insertTriggerHistorySql) { - this.insertTriggerHistorySql = insertTriggerHistorySql; - } - - public void setActiveTriggersForSourceNodeGroupSql(String activeTriggersForSourceNodeGroupSql) { - this.activeTriggersForSourceNodeGroupSql = activeTriggersForSourceNodeGroupSql; - } - - public void setInactiveTriggersForSourceNodeGroupSql(String inactiveTriggersForSourceNodeGroupSql) { - this.inactiveTriggersForSourceNodeGroupSql = inactiveTriggersForSourceNodeGroupSql; - } - - public void setInactivateTriggerHistorySql(String inactiveTriggerHistorySql) { - this.inactivateTriggerHistorySql = inactiveTriggerHistorySql; - } - public void setDbDialect(IDbDialect dbDialect) { this.dbDialect = dbDialect; } - public void setNodeConfigChannelTableNames(List nodeConfigChannelTableNames) { - this.nodeConfigChannelTableNames = nodeConfigChannelTableNames; - } - - public List getNodeConfigChannelTableNames() { - return nodeConfigChannelTableNames; - } - - public void setSelectTriggerByIdSql(String selectTriggerByIdSql) { - this.selectTriggerByIdSql = selectTriggerByIdSql; - } - - public void setActiveTriggersForReloadSql(String activeTriggersForReloadSql) { - this.activeTriggersForReloadSql = activeTriggersForReloadSql; - } - public void setRootConfigChannelInitialLoadSelect(Map rootConfigChannelInitialLoadSelect) { this.rootConfigChannelInitialLoadSelect = rootConfigChannelInitialLoadSelect; } - public void setDeleteChannelSql(String deleteChannelSql) { - this.deleteChannelSql = deleteChannelSql; - } - - public void setUpdateChannelSql(String updateChannelSql) { - this.updateChannelSql = updateChannelSql; - } - } diff --git a/symmetric/src/main/resources/symmetric-services.xml b/symmetric/src/main/resources/symmetric-services.xml index c8f260f2a9..937db1b2c1 100644 --- a/symmetric/src/main/resources/symmetric-services.xml +++ b/symmetric/src/main/resources/symmetric-services.xml @@ -2,7 +2,9 @@ + default-lazy-init="true" default-autowire="byName"> + + @@ -45,6 +47,8 @@ + + ${sync.table.prefix}_node_group @@ -57,195 +61,6 @@ ${sync.table.prefix}_trigger - - - - - node_group_id = '$(groupId)' or node_group_id in (select - source_node_group_id from ${sync.table.prefix}_node_group_link where - target_node_group_id = '$(groupId)') or node_group_id in (select - target_node_group_id from ${sync.table.prefix}_node_group_link where - source_node_group_id = '$(groupId)') - - - - - source_node_group_id = '$(groupId)' or target_node_group_id = '$(groupId)' - - - - - node_id = '$(nodeId)' or node_group_id in (select source_node_group_id from - ${sync.table.prefix}_node_group_link where target_node_group_id = - '$(groupId)') or node_group_id in (select target_node_group_id from - ${sync.table.prefix}_node_group_link where source_node_group_id = - '$(groupId)') - - - - - node_id = '$(nodeId)' or node_id in (select s.node_id from - ${sync.table.prefix}_node s inner join ${sync.table.prefix}_node_group_link - l on s.node_group_id = l.source_node_group_id where l.target_node_group_id = - '$(groupId)') or node_id in (select s.node_id from ${sync.table.prefix}_node - s inner join ${sync.table.prefix}_node_group_link l on s.node_group_id = - l.target_node_group_id where l.source_node_group_id = '$(groupId)') - - - - node_group_id = '$(groupId)' - - - - channel_id in (select channel_id from ${sync.table.prefix}_trigger where - source_node_group_id = '$(groupId)' or target_node_group_id = '$(groupId)') - - - - node_id = '$(nodeId)' - - - - source_node_group_id = '$(groupId)' or target_node_group_id = '$(groupId)' - - - - - - - ${sync.table.prefix}_node - - - - - update ${sync.table.prefix}_trigger_hist set inactive_time = current_timestamp where - trigger_hist_id=? - - - - - select data_event_action from ${sync.table.prefix}_node_group_link where - source_node_group_id = ? and target_node_group_id = ? - - - - - select * from ${sync.table.prefix}_trigger where source_node_group_id = ? order by - channel_id - - - - - select * from ${sync.table.prefix}_trigger where source_node_group_id = ? and - inactive_time is null - - - - - select * from ${sync.table.prefix}_trigger where source_node_group_id = ? and - target_node_group_id = ? and channel_id != ? and inactive_time is null order by - initial_load_order - - - - - select * from ${sync.table.prefix}_trigger t inner join - ${sync.table.prefix}_trigger_hist h on t.trigger_id=h.trigger_id where - h.inactive_time is not null and t.source_node_group_id = ? and t.inactive_time is - not null - - - - - insert into ${sync.table.prefix}_trigger (source_table_name, source_node_group_id, - target_node_group_id, channel_id, source_schema_name, sync_on_update, - sync_on_insert, sync_on_delete, initial_load_order, initial_load_select, - last_updated_by, last_updated_time, create_time) values (?, ?, ?, ?, null, 0, 0, 0, - ?, ?, 'system', current_timestamp, current_timestamp) - - - - - select source_node_group_id, target_node_group_id, data_event_action from - ${sync.table.prefix}_node_group_link - - - - - select source_node_group_id, target_node_group_id, data_event_action from - ${sync.table.prefix}_node_group_link where source_node_group_id = ? - - - - - select c.channel_id, n.node_id, nc.ignore_enabled, nc.suspend_enabled, - c.processing_order, c.max_batch_size, c.enabled, c.max_batch_to_send from ${sync.table.prefix}_channel c - inner join ${sync.table.prefix}_node_identity n on 1 = 1 left outer join - ${sync.table.prefix}_node_channel_ctl nc on c.channel_id = nc.channel_id and - n.node_id = nc.node_id order by c.processing_order asc, c.channel_id - - - - - - insert into ${sync.table.prefix}_channel (channel_id, processing_order, max_batch_size, max_batch_to_send, enabled, - description) values (?, ?, ?, ?, ?, null) - - - - - update ${sync.table.prefix}_channel set processing_order=?, max_batch_size=?, max_batch_to_send=?, enabled=? where channel_id=? - - - - - delete from ${sync.table.prefix}_channel where channel_id=? - - - - - select - trigger_hist_id,trigger_id,source_table_name,table_hash,create_time,pk_column_names,column_names,last_trigger_build_reason,name_for_delete_trigger,name_for_insert_trigger,name_for_update_trigger,source_schema_name - from ${sync.table.prefix}_trigger_hist - - - - - select - trigger_hist_id,trigger_id,source_table_name,table_hash,create_time,pk_column_names,column_names,last_trigger_build_reason,name_for_delete_trigger,name_for_insert_trigger,name_for_update_trigger,source_schema_name - from ${sync.table.prefix}_trigger_hist where trigger_hist_id = (select - max(trigger_hist_id) from ${sync.table.prefix}_trigger_hist where trigger_id=?) - - - - - select - trigger_hist_id,trigger_id,source_table_name,table_hash,create_time,pk_column_names,column_names,last_trigger_build_reason,name_for_delete_trigger,name_for_insert_trigger,name_for_update_trigger,source_schema_name - from ${sync.table.prefix}_trigger_hist where trigger_hist_id = ? - - - - - insert into ${sync.table.prefix}_trigger_hist - (trigger_id,source_table_name,table_hash,create_time,column_names,pk_column_names,last_trigger_build_reason,name_for_delete_trigger,name_for_insert_trigger,name_for_update_trigger,source_schema_name) - values(?,?,?,?,?,?,?,?,?,?,?) - - - - - select * from ${sync.table.prefix}_trigger where source_table_name = ? and - source_node_group_id = ? - - - - - select * from ${sync.table.prefix}_trigger where source_table_name = ? and - target_node_group_id = ? and channel_id = ? and source_node_group_id = ? - - - - select * from ${sync.table.prefix}_trigger where trigger_id = ? -