Skip to content

Commit

Permalink
add reloadTable with option to override the initial load select
Browse files Browse the repository at this point in the history
  • Loading branch information
erilong committed Mar 24, 2008
1 parent 894045d commit d13278c
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 5 deletions.
Expand Up @@ -43,6 +43,10 @@ class StreamReloadDataCommand extends AbstractStreamDataCommand {

public void execute(BufferedWriter out, Data data, DataExtractorContext context) throws IOException {
Trigger trigger = configurationService.getTriggerById(data.getAudit().getTriggerId());
// The initial_load_select can be overridden
if (data.getRowData() != null) {
trigger.setInitialLoadSelect(data.getRowData());
}
Node node = nodeService.findNode(context.getBatch().getNodeId());
dataExtractorService.extractInitialLoadWithinBatchFor(node, trigger, new InternalOutgoingTransport(out), context);
out.flush();
Expand Down
Expand Up @@ -18,6 +18,9 @@ public interface IDataService {
@Transactional
public String reloadTable(String nodeId, String tableName);

@Transactional
public String reloadTable(String nodeId, String tableName, String overrideInitialLoadSelect);

@Transactional
public String sendSQL(String nodeId, String tableName, String sql);

Expand Down
Expand Up @@ -82,10 +82,16 @@ public class DataService extends AbstractService implements IDataService {
private boolean createFirstForReload;

public void insertReloadEvent(final Node targetNode, final Trigger trigger) {
insertReloadEvent(targetNode, trigger, null);
}

public void insertReloadEvent(final Node targetNode, final Trigger trigger,
final String overrideInitialLoadSelect) {
final TriggerHistory history = configurationService.getLatestHistoryRecordFor(trigger.getTriggerId());

Data data = new Data(trigger.getSourceTableName(), DataEventType.RELOAD, null, null,
history);
// initial_load_select for table can be overridden by populating the row_data
Data data = new Data(trigger.getSourceTableName(), DataEventType.RELOAD, overrideInitialLoadSelect,
null, history);
insertDataEvent(data, Constants.CHANNEL_RELOAD, targetNode.getNodeId());
}

Expand Down Expand Up @@ -236,6 +242,10 @@ public String sendSQL(String nodeId, String tableName, String sql) {
}

public String reloadTable(String nodeId, String tableName) {
return reloadTable(nodeId, tableName, null);
}

public String reloadTable(String nodeId, String tableName, String overrideInitialLoadSelect) {
Node sourceNode = nodeService.findIdentity();
Node targetNode = nodeService.findNode(nodeId);
if (targetNode == null) {
Expand All @@ -246,15 +256,15 @@ public String reloadTable(String nodeId, String tableName) {
if (trigger == null) {
return "Trigger for table " + tableName + " does not exist from node " + sourceNode.getNodeGroupId();
}

if (createFirstForReload) {
String xml = dbDialect.getCreateTableXML(trigger);
insertCreateEvent(targetNode, trigger, xml);
} else {
} else if (deleteFirstForReload) {
insertPurgeEvent(targetNode, trigger);
}

insertReloadEvent(targetNode, trigger);
insertReloadEvent(targetNode, trigger, overrideInitialLoadSelect);

return "Successfully created event to reload table " + tableName + " for node " + targetNode.getNodeId();
}
Expand Down
Expand Up @@ -213,6 +213,15 @@ public String reloadTable(String nodeId, String tableName) {
return dataService.reloadTable(nodeId, tableName);
}

@ManagedOperation(description = "Send a delete and reload of a table to a node.")
@ManagedOperationParameters( {
@ManagedOperationParameter(name = "nodeId", description = "The node id to reload."),
@ManagedOperationParameter(name = "tableName", description = "The table name to reload."),
@ManagedOperationParameter(name = "overrideInitialLoadSelect", description = "Override initial load select where-clause.")})
public String reloadTable(String nodeId, String tableName, String overrideInitialLoadSelect) {
return dataService.reloadTable(nodeId, tableName, overrideInitialLoadSelect);
}

@ManagedOperation(description = "Show a batch in Symmetric Data Format.")
@ManagedOperationParameters( { @ManagedOperationParameter(name = "batchId", description = "The batch ID to display") })
public String showBatch(String batchId) throws Exception {
Expand Down

0 comments on commit d13278c

Please sign in to comment.