diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/ITriggerRouterService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/ITriggerRouterService.java index 22ed0bb6af..a9a246635a 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/ITriggerRouterService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/ITriggerRouterService.java @@ -44,6 +44,8 @@ public interface ITriggerRouterService { public List getActiveTriggerHistories(String tableName); public List getTriggerRouters(); + + public List getTriggerRoutersFor(String tableName, String sourceNodeGroupId); /** * Return a list of triggers used when extraction configuration data during @@ -130,7 +132,7 @@ public interface ITriggerRouterService { public void inactivateTriggerHistory(TriggerHistory history); - public TriggerHistory getNewestTriggerHistoryForTrigger(String triggerId, String catalogName, String schemaName, String tableName); + public TriggerHistory getNewestTriggerHistoryForTrigger(String triggerId); public TriggerHistory getTriggerHistory(int historyId); diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/ConfigurationService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/ConfigurationService.java index 8efecd3cd3..59a0e9da31 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/ConfigurationService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/ConfigurationService.java @@ -83,7 +83,9 @@ public boolean refreshFromDatabase() { if (date != null) { if (lastUpdateTime == null || lastUpdateTime.before(date)) { - log.info("Newer channel or group settings were detected"); + if (lastUpdateTime != null) { + log.info("Newer channel or group settings were detected"); + } lastUpdateTime = date; clearCache(); return true; diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataExtractorService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataExtractorService.java index 0bda55b6c3..f7e27183d1 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataExtractorService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataExtractorService.java @@ -174,8 +174,7 @@ public void extractConfigurationStandalone(Node targetNode, Writer writer, for (int i = triggerRouters.size() - 1; i >= 0; i--) { TriggerRouter triggerRouter = triggerRouters.get(i); TriggerHistory triggerHistory = triggerRouterService.getNewestTriggerHistoryForTrigger( - triggerRouter.getTrigger().getTriggerId(), null, null, triggerRouter - .getTrigger().getSourceTableName()); + triggerRouter.getTrigger().getTriggerId()); if (triggerHistory == null) { Trigger trigger = triggerRouter.getTrigger(); Table table = symmetricDialect.getPlatform().getTableFromCache( @@ -203,7 +202,7 @@ public void extractConfigurationStandalone(Node targetNode, Writer writer, for (int i = 0; i < triggerRouters.size(); i++) { TriggerRouter triggerRouter = triggerRouters.get(i); TriggerHistory triggerHistory = triggerRouterService.getNewestTriggerHistoryForTrigger( - triggerRouter.getTrigger().getTriggerId(), null, null, null); + triggerRouter.getTrigger().getTriggerId()); if (triggerHistory == null) { Trigger trigger = triggerRouter.getTrigger(); triggerHistory = new TriggerHistory( @@ -1009,9 +1008,7 @@ public SelectFromTableEvent(Node node, TriggerRouter triggerRouter, this.triggerRouter = triggerRouter; Trigger trigger = triggerRouter.getTrigger(); this.triggerHistory = triggerHistory != null ? triggerHistory : triggerRouterService - .getNewestTriggerHistoryForTrigger(trigger.getTriggerId(), - trigger.getSourceCatalogName(), trigger.getSourceSchemaName(), - trigger.getSourceTableName()); + .getNewestTriggerHistoryForTrigger(trigger.getTriggerId()); } public SelectFromTableEvent(Data data) { diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataLoaderService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataLoaderService.java index 9ec4c3641d..ed0acca6e9 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataLoaderService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataLoaderService.java @@ -178,7 +178,9 @@ public boolean refreshFromDatabase() { Date date = sqlTemplate.queryForObject(getSql("selectMaxLastUpdateTime"), Date.class); if (date != null) { if (lastUpdateTime == null || lastUpdateTime.before(date)) { - log.info("Newer conflict settings were detected"); + if (lastUpdateTime != null) { + log.info("Newer conflict settings were detected"); + } lastUpdateTime = date; clearCache(); return true; diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataService.java index a7b3b09585..1bc378ab3c 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataService.java @@ -406,13 +406,12 @@ public void insertReloadEvents(Node targetNode, boolean reverse) { private TriggerHistory lookupTriggerHistory(Trigger trigger) { TriggerHistory history = engine.getTriggerRouterService().getNewestTriggerHistoryForTrigger( - trigger.getTriggerId(), trigger.getSourceCatalogName(), - trigger.getSourceSchemaName(), trigger.getSourceTableName()); + trigger.getTriggerId()); if (history == null) { engine.getTriggerRouterService().syncTriggers(); history = engine.getTriggerRouterService().getNewestTriggerHistoryForTrigger( - trigger.getTriggerId(), null, null, null); + trigger.getTriggerId()); } if (history == null) { @@ -952,8 +951,7 @@ protected Data createData(ISqlTransaction transaction, Trigger trigger, String w Data data = null; if (trigger != null) { TriggerHistory triggerHistory = engine.getTriggerRouterService().getNewestTriggerHistoryForTrigger( - trigger.getTriggerId(), trigger.getSourceCatalogName(), - trigger.getSourceSchemaName(), trigger.getSourceTableName()); + trigger.getTriggerId()); if (triggerHistory == null) { triggerHistory = engine.getTriggerRouterService().findTriggerHistory(trigger.getSourceCatalogName(), trigger.getSourceSchemaName(), trigger diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/GroupletService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/GroupletService.java index 06e8d8cb98..8e28c99e57 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/GroupletService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/GroupletService.java @@ -69,7 +69,9 @@ public boolean refreshFromDatabase() { if (date != null) { if (lastUpdateTime == null || lastUpdateTime.before(date)) { - log.info("Newer grouplet settings were detected"); + if (lastUpdateTime != null) { + log.info("Newer grouplet settings were detected"); + } lastUpdateTime = date; clearCache(); return true; diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/LoadFilterService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/LoadFilterService.java index 04dbb81a2c..5794db8e41 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/LoadFilterService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/LoadFilterService.java @@ -186,7 +186,9 @@ public boolean refreshFromDatabase() { Date date = sqlTemplate.queryForObject(getSql("selectMaxLastUpdateTime"), Date.class); if (date != null) { if (lastUpdateTime == null || lastUpdateTime.before(date)) { - log.info("Newer filter settings were detected"); + if (lastUpdateTime != null) { + log.info("Newer filter settings were detected"); + } lastUpdateTime = date; clearCache(); return true; diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/ParameterService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/ParameterService.java index 83e7e65076..d227e4951b 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/ParameterService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/ParameterService.java @@ -68,7 +68,9 @@ public boolean refreshFromDatabase() { Date date = sqlTemplate.queryForObject(sql.getSql("selectMaxLastUpdateTime"), Date.class); if (date != null) { if (lastUpdateTime == null || lastUpdateTime.before(date)) { - log.info("Newer database parameters were detected"); + if (lastUpdateTime != null) { + log.info("Newer database parameters were detected"); + } lastUpdateTime = date; rereadParameters(); return true; diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TransformService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TransformService.java index fcdf303ed8..b82df6d51b 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TransformService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TransformService.java @@ -48,7 +48,9 @@ public boolean refreshFromDatabase() { if (date != null) { if (lastUpdateTime == null || lastUpdateTime.before(date)) { - log.info("Newer transform settings were detected"); + if (lastUpdateTime != null) { + log.info("Newer transform settings were detected"); + } lastUpdateTime = date; clearCache(); return true; diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java index 3ce83a53f9..0f170d7453 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java @@ -116,7 +116,9 @@ public boolean refreshFromDatabase() { if (date != null) { if (lastUpdateTime == null || lastUpdateTime.before(date)) { - log.info("Newer trigger router settings were detected"); + if (lastUpdateTime != null) { + log.info("Newer trigger router settings were detected"); + } lastUpdateTime = date; clearCache(); return true; @@ -129,7 +131,7 @@ public List getTriggers() { return sqlTemplate.query("select " + getSql("selectTriggersColumnList", "selectTriggersSql"), new TriggerMapper()); } - + public boolean isTriggerBeingUsed(String triggerId) { return sqlTemplate.queryForInt(getSql("countTriggerRoutersByTriggerIdSql"), triggerId) > 0; } @@ -271,24 +273,9 @@ protected List getActiveTriggerHistories(Trigger trigger) { return list; } - public TriggerHistory getNewestTriggerHistoryForTrigger(String triggerId, String catalogName, - String schemaName, String tableName) { - List triggerHistories = sqlTemplate.query(getSql("latestTriggerHistSql"), - new TriggerHistoryMapper(), triggerId, tableName); - for (TriggerHistory triggerHistory : triggerHistories) { - if ((StringUtils.isBlank(catalogName) && StringUtils.isBlank(triggerHistory - .getSourceCatalogName())) - || (StringUtils.isNotBlank(catalogName) && catalogName.equals(triggerHistory - .getSourceCatalogName()))) { - if ((StringUtils.isBlank(schemaName) && StringUtils.isBlank(triggerHistory - .getSourceSchemaName())) - || (StringUtils.isNotBlank(schemaName) && schemaName.equals(triggerHistory - .getSourceSchemaName()))) { - return triggerHistory; - } - } - } - return null; + public TriggerHistory getNewestTriggerHistoryForTrigger(String triggerId) { + return sqlTemplate.queryForObject(getSql("latestTriggerHistSql"), + new TriggerHistoryMapper(), triggerId); } /** @@ -700,6 +687,18 @@ public TriggerRouter findTriggerRouterById(String triggerId, String routerId) { return null; } } + + public List getTriggerRoutersFor(String tableName, String sourceNodeGroupId) { + List results = new ArrayList(); + List all = getTriggerRouters(); + for (TriggerRouter triggerRouter : all) { + if (triggerRouter.getRouter().getNodeGroupLink().getSourceNodeGroupId().equals(sourceNodeGroupId) && + triggerRouter.getTrigger().getSourceTableName().equals(tableName)) { + results.add(triggerRouter); + } + } + return results; + } public Map> getTriggerRoutersByChannel(String nodeGroupId) { final Map> retMap = new HashMap>(); @@ -1193,11 +1192,7 @@ protected void updateOrCreateDatabaseTriggers(Trigger trigger, Table table, } TriggerHistory latestHistoryBeforeRebuild = getNewestTriggerHistoryForTrigger( - trigger.getTriggerId(), - trigger.getSourceCatalogName(), - trigger.getSourceSchemaName(), - trigger.isSourceTableNameWildCarded() ? table.getName() : trigger - .getSourceTableName()); + trigger.getTriggerId()); boolean forceRebuildOfTriggers = false; if (latestHistoryBeforeRebuild == null) { @@ -1331,11 +1326,7 @@ protected TriggerHistory rebuildTriggerIfNecessary(StringBuilder sqlBuffer, && (oldhist == null || (!triggerExists && triggerIsActive) || (isDeadTrigger && forceRebuild))) { insert(newTriggerHist); hist = getNewestTriggerHistoryForTrigger( - trigger.getTriggerId(), - trigger.getSourceCatalogName(), - trigger.getSourceSchemaName(), - trigger.isSourceTableNameWildCarded() ? table.getName() : trigger - .getSourceTableName()); + trigger.getTriggerId()); } try { diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterServiceSqlMap.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterServiceSqlMap.java index 974cdc792a..35a3965ea7 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterServiceSqlMap.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterServiceSqlMap.java @@ -88,7 +88,7 @@ public TriggerRouterServiceSqlMap(IDatabasePlatform platform, + "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,source_catalog_name,trigger_row_hash,error_message " + " from $(trigger_hist) where trigger_hist_id = (select max(trigger_hist_id) " - + " from $(trigger_hist) where trigger_id=? and source_table_name=?) "); + + " from $(trigger_hist) where trigger_id=?) "); putSql("triggerHistSql", "" diff --git a/symmetric-core/src/test/java/org/jumpmind/symmetric/service/impl/AbstractTriggerRouterServiceTest.java b/symmetric-core/src/test/java/org/jumpmind/symmetric/service/impl/AbstractTriggerRouterServiceTest.java index fec18bafc8..04dc243347 100644 --- a/symmetric-core/src/test/java/org/jumpmind/symmetric/service/impl/AbstractTriggerRouterServiceTest.java +++ b/symmetric-core/src/test/java/org/jumpmind/symmetric/service/impl/AbstractTriggerRouterServiceTest.java @@ -161,9 +161,7 @@ public void testInitialLoadSql() throws Exception { new Node("1", null, "1.0"), triggerRouter, table, - triggerRouterService.getNewestTriggerHistoryForTrigger(trigger.getTriggerId(), - trigger.getSourceCatalogName(), trigger.getSourceSchemaName(), - trigger.getSourceTableName()), + triggerRouterService.getNewestTriggerHistoryForTrigger(trigger.getTriggerId()), getConfigurationService().getChannel(triggerRouter.getTrigger().getChannelId())); List csvStrings = getSqlTemplate().query(sql, new StringMapper()); assertTrue(csvStrings.size() > 0);