Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
change the oracle package name. added method to check to see if a nod…
…e is registered by external id.
  • Loading branch information
chenson42 committed Oct 15, 2007
1 parent 9d1fb99 commit 1301940
Show file tree
Hide file tree
Showing 7 changed files with 53 additions and 13 deletions.
Expand Up @@ -46,6 +46,8 @@ public interface INodeService {

public List<Node> findTargetNodesFor(DataEventAction eventAction);

public boolean isExternalIdRegistered(String externalId);

public boolean updateNode(Node node);

}
Expand Up @@ -49,6 +49,8 @@ public class NodeService extends AbstractService implements INodeService {
protected String findNodesWhoITargetSql;

protected String updateNodeSql;

protected String isNodeRegisteredSql;

/**
* Lookup a client in the database, which contains information for synching
Expand Down Expand Up @@ -159,6 +161,10 @@ public Object mapRow(ResultSet rs, int num) throws SQLException {
return clientSecurity;
}
}

public boolean isExternalIdRegistered(String externalId) {
return jdbcTemplate.queryForInt(isNodeRegisteredSql, new Object[] {externalId}) > 0;
}

public void setFindNodeSecuritySql(String findNodeSecuritySql) {
this.findNodeSecuritySql = findNodeSecuritySql;
Expand All @@ -184,4 +190,8 @@ public void setUpdateNodeSql(String updateNodeSql) {
this.updateNodeSql = updateNodeSql;
}

public void setIsNodeRegisteredSql(String isNodeRegisteredSql) {
this.isNodeRegisteredSql = isNodeRegisteredSql;
}

}
Expand Up @@ -30,6 +30,7 @@
import org.jumpmind.symmetric.config.IRuntimeConfig;
import org.jumpmind.symmetric.service.IBootstrapService;
import org.jumpmind.symmetric.service.IDataService;
import org.jumpmind.symmetric.service.INodeService;
import org.jumpmind.symmetric.service.IPurgeService;
import org.springframework.jmx.export.annotation.ManagedAttribute;
import org.springframework.jmx.export.annotation.ManagedOperation;
Expand All @@ -45,7 +46,9 @@ public class SymmetricManagementService {
private IBootstrapService bootstrapService;

private IPurgeService purgeService;


private INodeService nodeService;

private IDataService dataService;

private Properties properties;
Expand Down Expand Up @@ -84,7 +87,7 @@ public boolean isBasicDataSource() {
return dataSource instanceof BasicDataSource;
}

@ManagedAttribute(description = "If a BasicDataSource, then show the number of active connections.")
@ManagedAttribute(description = "If a BasicDataSource, then show the number of active connections")
public int getNumberOfActiveConnections() {
if (isBasicDataSource()) {
return ((BasicDataSource) dataSource).getNumActive();
Expand All @@ -93,6 +96,21 @@ public int getNumberOfActiveConnections() {
}
}

@ManagedOperation(description = "Check to see if the external id is registered")
@ManagedOperationParameters( { @ManagedOperationParameter(name = "externalId", description = "The external id for a node") })
public boolean isExternalIdRegistered(String externalId) {
return nodeService.isExternalIdRegistered(externalId);
}

@ManagedOperation(description = "Enable or disable a channel for a specific external id")
@ManagedOperationParameters( {
@ManagedOperationParameter(name = "enabled", description = "Set to true to enable and false to disable"),
@ManagedOperationParameter(name = "channelId", description = "The channel id to enable or disable"),
@ManagedOperationParameter(name = "externalId", description = "The external id for a node") })
public void setChannelEnabledForExternalId(String externalId) {

}

@ManagedOperation(description = "Send an initial load of data to a node.")
@ManagedOperationParameters( { @ManagedOperationParameter(name = "nodeId", description = "The node id to reload.") })
public String reloadNode(String nodeId) {
Expand Down Expand Up @@ -122,4 +140,8 @@ public void setDataSource(DataSource dataSource) {
public void setDataService(IDataService dataService) {
this.dataService = dataService;
}

public void setNodeService(INodeService nodeService) {
this.nodeService = nodeService;
}
}
16 changes: 8 additions & 8 deletions symmetric/src/main/resources/oracle-transactionid.sql
@@ -1,23 +1,23 @@
create or replace function fn_transaction_id
CREATE OR REPLACE function fn_transaction_id
return varchar is
begin
return DBMS_TRANSACTION.local_transaction_id(false);
end;
/
CREATE OR REPLACE function isTriggerDisabled return varchar is
CREATE OR REPLACE function fn_trigger_disabled return varchar is
begin
return pack_var.disable_trigger;
return pack_symmetric.disable_trigger;
end;
/
CREATE OR REPLACE package pack_var as
CREATE OR REPLACE package pack_symmetric as
disable_trigger pls_integer;
procedure setValue (a IN number);
end pack_var;
end pack_symmetric;
/
CREATE OR REPLACE package body pack_var as
CREATE OR REPLACE package body pack_symmetric as
procedure setValue(a IN number) is
begin
pack_var.disable_trigger:=a;
pack_symmetric.disable_trigger:=a;
end;
end pack_var;
end pack_symmetric;
/
6 changes: 3 additions & 3 deletions symmetric/src/main/resources/symmetric-dialects.xml
Expand Up @@ -163,7 +163,7 @@
<![CDATA[
create or replace trigger $(triggerName) after insert on $(schemaName)$(tableName)
for each row begin
if $(syncOnInsertCondition) and isTriggerDisabled() is null then
if $(syncOnInsertCondition) and fn_trigger_disabled() is null then
insert into $(defaultSchema)$(prefixName)_data (table_name, channel_id, event_type, trigger_hist_id, transaction_id, row_data, create_time)
values(
'$(targetTableName)',
Expand All @@ -186,7 +186,7 @@
<![CDATA[
create or replace trigger $(triggerName) after update on $(schemaName)$(tableName)
for each row begin
if $(syncOnUpdateCondition) and isTriggerDisabled() is null then
if $(syncOnUpdateCondition) and fn_trigger_disabled() is null then
insert into $(defaultSchema)$(prefixName)_data (table_name, channel_id, event_type, trigger_hist_id, transaction_id, pk_data, row_data, create_time)
values(
'$(targetTableName)',
Expand All @@ -210,7 +210,7 @@
<![CDATA[
create or replace trigger $(triggerName) after delete on $(schemaName)$(tableName)
for each row begin
if $(syncOnDeleteCondition) and isTriggerDisabled() is null then
if $(syncOnDeleteCondition) and fn_trigger_disabled() is null then
insert into $(defaultSchema)$(prefixName)_data (table_name, channel_id, event_type, trigger_hist_id, transaction_id, pk_data, create_time)
values(
'$(targetTableName)',
Expand Down
1 change: 1 addition & 0 deletions symmetric/src/main/resources/symmetric-jmx.xml
Expand Up @@ -38,6 +38,7 @@
<property name="dataService" ref="dataService" />
<property name="properties" ref="properties" />
<property name="dataSource" ref="dataSource" />
<property name="nodeService" ref="nodeService" />
</bean>

</beans>
5 changes: 5 additions & 0 deletions symmetric/src/main/resources/symmetric-services.xml
Expand Up @@ -341,6 +341,11 @@
c inner join ${sync.table.prefix}_node_identity i on c.node_id = i.node_id
</value>
</property>
<property name="isNodeRegisteredSql">
<value>
select count(*) from ${sync.table.prefix}_node_security s inner join ${sync.table.prefix}_node n on n.node_id=s.node_id where n.external_id=? and s.registration_time is not null and s.registration_enabled=0
</value>
</property>
<property name="findNodesWhoTargetMeSql">
<value>
select c.node_id, c.node_group_id, c.external_id, c.sync_enabled, c.sync_url,
Expand Down

0 comments on commit 1301940

Please sign in to comment.