From f7790410e8c3f71fa219368a7258c003f1116090 Mon Sep 17 00:00:00 2001 From: erilong Date: Thu, 3 Jan 2008 19:06:04 +0000 Subject: [PATCH] add initial_load_select to config channel trigger entries ... this helps create a hierarchy by limiting nodes to subset of configuration they need --- .../service/impl/ConfigurationService.java | 9 +++- .../src/main/resources/symmetric-services.xml | 54 ++++++++++++++++++- 2 files changed, 60 insertions(+), 3 deletions(-) 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 ce71bb6e54..433712336f 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 @@ -88,6 +88,8 @@ public class ConfigurationService extends AbstractService implements private List rootConfigChannelTableNames; private List nodeConfigChannelTableNames; + + private Map rootConfigChannelInitialLoadSelect; private IDbDialect dbDialect; @@ -145,8 +147,9 @@ 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, - Constants.CHANNEL_CONFIG, initialLoadOrder++ }); + Constants.CHANNEL_CONFIG, initialLoadOrder++, initialLoadSelect }); } } } @@ -518,6 +521,10 @@ public void setSelectTriggerByIdSql(String selectTriggerByIdSql) { public void setActiveTriggersForReloadSql(String activeTriggersForReloadSql) { this.activeTriggersForReloadSql = activeTriggersForReloadSql; } + + public void setRootConfigChannelInitialLoadSelect(Map rootConfigChannelInitialLoadSelect) { + this.rootConfigChannelInitialLoadSelect = rootConfigChannelInitialLoadSelect; + } diff --git a/symmetric/src/main/resources/symmetric-services.xml b/symmetric/src/main/resources/symmetric-services.xml index 37abbedcc9..73920b04f8 100644 --- a/symmetric/src/main/resources/symmetric-services.xml +++ b/symmetric/src/main/resources/symmetric-services.xml @@ -56,6 +56,56 @@ ${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)') + + + + + node_id = '$(nodeId)' + + + + + source_node_group_id = '$(groupId)' + + + + ${sync.table.prefix}_node @@ -113,8 +163,8 @@ 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, last_updated_by, - last_updated_time, create_time) values (?, ?, ?, ?, null, 0, 0, 0, ?, 'system', + 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)