Skip to content

Commit

Permalink
0002341: Add the ability to use parameter values in catalog and schema
Browse files Browse the repository at this point in the history
for trigger, router, and transform configuration.
  • Loading branch information
erilong committed Jul 31, 2015
1 parent 225a988 commit ea042bc
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 7 deletions.
Expand Up @@ -38,6 +38,8 @@ public List<TransformTableNodeGroupLink> findTransformsFor(NodeGroupLink link,

public List<TransformTableNodeGroupLink> getTransformTables(boolean includeColumns);

public List<TransformTableNodeGroupLink> getTransformTables(boolean includeColumns, boolean replaceTokens);

public List<TransformColumn> getTransformColumns();

public List<TransformColumn> getTransformColumnsForTable(String transformId);
Expand Down
Expand Up @@ -89,7 +89,9 @@ public interface ITriggerRouterService {

public Router getRouterById(String routerId, boolean refreshCache);

public List<Router> getRouters();
public List<Router> getRouters();

public List<Router> getRouters(boolean replaceVariables);

/**
* Get a list of routers for a specific node group link.
Expand All @@ -107,7 +109,9 @@ public interface ITriggerRouterService {
/**
* Get a list of all the triggers that have been defined for the system.
*/
public List<Trigger> getTriggers();
public List<Trigger> getTriggers();

public List<Trigger> getTriggers(boolean replaceTokens);

public void saveTrigger(Trigger trigger);

Expand Down
Expand Up @@ -65,6 +65,7 @@
import org.jumpmind.symmetric.service.IExtensionService;
import org.jumpmind.symmetric.service.IParameterService;
import org.jumpmind.symmetric.service.ITransformService;
import org.jumpmind.util.FormatUtils;

public class TransformService extends AbstractService implements ITransformService {

Expand All @@ -75,6 +76,8 @@ public class TransformService extends AbstractService implements ITransformServi
private IConfigurationService configurationService;

private IExtensionService extensionService;

private IParameterService parameterService;

private Date lastUpdateTime;

Expand All @@ -83,6 +86,7 @@ public TransformService(IParameterService parameterService, ISymmetricDialect sy
super(parameterService, symmetricDialect);
this.configurationService = configurationService;
this.extensionService = extensionService;
this.parameterService = parameterService;

addColumnTransform(ParameterColumnTransform.NAME, new ParameterColumnTransform(parameterService));
addColumnTransform(VariableColumnTransform.NAME, new VariableColumnTransform());
Expand Down Expand Up @@ -185,7 +189,7 @@ private Map<NodeGroupLink, Map<TransformPoint, List<TransformTableNodeGroupLink>

byByLinkByTransformPoint = new HashMap<NodeGroupLink, Map<TransformPoint, List<TransformTableNodeGroupLink>>>();

List<TransformTableNodeGroupLink> transforms = getTransformTablesFromDB(true);
List<TransformTableNodeGroupLink> transforms = getTransformTablesFromDB(true, true);

for (TransformTableNodeGroupLink transformTable : transforms) {
NodeGroupLink nodeGroupLink = transformTable.getNodeGroupLink();
Expand Down Expand Up @@ -214,7 +218,7 @@ private Map<NodeGroupLink, Map<TransformPoint, List<TransformTableNodeGroupLink>
return byByLinkByTransformPoint;
}

private List<TransformTableNodeGroupLink> getTransformTablesFromDB(boolean includeColumns) {
private List<TransformTableNodeGroupLink> getTransformTablesFromDB(boolean includeColumns, boolean replaceTokens) {
List<TransformTableNodeGroupLink> transforms = sqlTemplate.query(
getSql("selectTransformTable"), new TransformTableMapper());
if (includeColumns) {
Expand All @@ -228,6 +232,18 @@ private List<TransformTableNodeGroupLink> getTransformTablesFromDB(boolean inclu
}
}
}
if (replaceTokens) {
@SuppressWarnings({ "rawtypes", "unchecked" })
Map<String, String> replacements = (Map) parameterService.getAllParameters();
for (TransformTableNodeGroupLink transform : transforms) {
transform.setSourceCatalogName(FormatUtils.replaceTokens(transform.getSourceCatalogName(), replacements, true));
transform.setSourceSchemaName(FormatUtils.replaceTokens(transform.getSourceSchemaName(), replacements, true));
transform.setSourceTableName(FormatUtils.replaceTokens(transform.getSourceTableName(), replacements, true));
transform.setTargetCatalogName(FormatUtils.replaceTokens(transform.getTargetCatalogName(), replacements, true));
transform.setTargetSchemaName(FormatUtils.replaceTokens(transform.getTargetSchemaName(), replacements, true));
transform.setTargetTableName(FormatUtils.replaceTokens(transform.getTargetTableName(), replacements, true));
}
}
return transforms;
}

Expand All @@ -238,7 +254,11 @@ private List<TransformColumn> getTransformColumnsFromDB() {
}

public List<TransformTableNodeGroupLink> getTransformTables(boolean includeColumns) {
return this.getTransformTablesFromDB(includeColumns);
return this.getTransformTablesFromDB(includeColumns, true);
}

public List<TransformTableNodeGroupLink> getTransformTables(boolean includeColumns, boolean replaceTokens) {
return this.getTransformTablesFromDB(includeColumns, replaceTokens);
}

public List<TransformColumn> getTransformColumns() {
Expand Down
Expand Up @@ -66,6 +66,7 @@
import org.jumpmind.symmetric.service.IExtensionService;
import org.jumpmind.symmetric.service.IGroupletService;
import org.jumpmind.symmetric.service.INodeService;
import org.jumpmind.symmetric.service.IParameterService;
import org.jumpmind.symmetric.service.ISequenceService;
import org.jumpmind.symmetric.service.ITriggerRouterService;
import org.jumpmind.symmetric.statistic.IStatisticManager;
Expand All @@ -84,6 +85,8 @@ public class TriggerRouterService extends AbstractService implements ITriggerRou

private IExtensionService extensionService;

private IParameterService parameterService;

private Map<String, Router> routersCache;

private long routersCacheTime;
Expand Down Expand Up @@ -133,6 +136,7 @@ public TriggerRouterService(ISymmetricEngine engine) {
this.nodeService = engine.getNodeService();
this.sequenceService = engine.getSequenceService();
this.extensionService = engine.getExtensionService();
this.parameterService = engine.getParameterService();
engine.getExtensionService().addExtensionPoint(failureListener);
setSqlMap(new TriggerRouterServiceSqlMap(symmetricDialect.getPlatform(),
createSqlReplacementTokens()));
Expand All @@ -158,8 +162,22 @@ public boolean refreshFromDatabase() {
}

public List<Trigger> getTriggers() {
return sqlTemplate.query("select "
return getTriggers(true);
}

public List<Trigger> getTriggers(boolean replaceTokens) {
List<Trigger> triggers = sqlTemplate.query("select "
+ getSql("selectTriggersColumnList", "selectTriggersSql"), new TriggerMapper());
if (replaceTokens) {
@SuppressWarnings({ "rawtypes", "unchecked" })
Map<String, String> replacements = (Map) parameterService.getAllParameters();
for (Trigger trigger : triggers) {
trigger.setSourceCatalogName(FormatUtils.replaceTokens(trigger.getSourceCatalogName(), replacements, true));
trigger.setSourceSchemaName(FormatUtils.replaceTokens(trigger.getSourceSchemaName(), replacements, true));
trigger.setSourceTableName(FormatUtils.replaceTokens(trigger.getSourceTableName(), replacements, true));
}
}
return triggers;
}

public boolean isTriggerBeingUsed(String triggerId) {
Expand Down Expand Up @@ -794,8 +812,22 @@ public Router getRouterById(String routerId, boolean refreshCache) {
}

public List<Router> getRouters() {
return sqlTemplate.query(getSql("select ", "selectRoutersColumnList", "selectRoutersSql"),
return getRouters(true);
}

public List<Router> getRouters(boolean replaceVariables) {
List<Router> routers = sqlTemplate.query(getSql("select ", "selectRoutersColumnList", "selectRoutersSql"),
new RouterMapper(configurationService.getNodeGroupLinks(false)));
if (replaceVariables) {
@SuppressWarnings({ "rawtypes", "unchecked" })
Map<String, String> replacements = (Map) parameterService.getAllParameters();
for (Router router : routers) {
router.setTargetCatalogName(FormatUtils.replaceTokens(router.getTargetCatalogName(), replacements, true));
router.setTargetSchemaName(FormatUtils.replaceTokens(router.getTargetSchemaName(), replacements, true));
router.setTargetTableName(FormatUtils.replaceTokens(router.getTargetTableName(), replacements, true));
}
}
return routers;
}

private String getTriggerRouterSql(String sql) {
Expand Down

0 comments on commit ea042bc

Please sign in to comment.