From f7b49890347933974ad5ae568fcb554c4d06c1ef Mon Sep 17 00:00:00 2001 From: Chris Henson Date: Fri, 14 Apr 2017 09:49:37 -0400 Subject: [PATCH] 0003056: Make XmlPublisherDatabaseWriterFilter configurable to publish either on batch complete or batch commit --- .../XmlPublisherDatabaseWriterFilter.java | 39 ++++++++++++++----- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/symmetric-server/src/main/java/org/jumpmind/symmetric/integrate/XmlPublisherDatabaseWriterFilter.java b/symmetric-server/src/main/java/org/jumpmind/symmetric/integrate/XmlPublisherDatabaseWriterFilter.java index ac54b42017..518d54ff32 100644 --- a/symmetric-server/src/main/java/org/jumpmind/symmetric/integrate/XmlPublisherDatabaseWriterFilter.java +++ b/symmetric-server/src/main/java/org/jumpmind/symmetric/integrate/XmlPublisherDatabaseWriterFilter.java @@ -62,9 +62,15 @@ * */ public class XmlPublisherDatabaseWriterFilter extends AbstractXmlPublisherExtensionPoint implements - IPublisherFilter, INodeGroupExtensionPoint { + IPublisherFilter, INodeGroupExtensionPoint { + + public static final String PUBLISH_ON_COMPLETE = "COMPLETE"; + + public static final String PUBLISH_ON_COMMIT = "COMMIT"; - protected boolean loadDataInTargetDatabase = true; + protected boolean loadDataInTargetDatabase = true; + + protected String publishOn = PUBLISH_ON_COMPLETE; public boolean beforeWrite( DataContext context, Table table, CsvData data) { @@ -87,15 +93,12 @@ public boolean beforeWrite( return loadDataInTargetDatabase; } - public void batchComplete( - DataContext context) { - if (doesXmlExistToPublish(context)) { - finalizeXmlAndPublish(context); - } - } - public void setLoadDataInTargetDatabase(boolean loadDataInTargetDatabase) { this.loadDataInTargetDatabase = loadDataInTargetDatabase; + } + + public void setPublishOn(String publishOn) { + this.publishOn = publishOn; } public void afterWrite( @@ -110,9 +113,25 @@ public boolean handlesMissingTable( public void earlyCommit( DataContext context) { } + + public void batchComplete( + DataContext context) { + if (PUBLISH_ON_COMPLETE.equals(publishOn)) { + publish(context); + } + } public void batchCommitted( - DataContext context) { + DataContext context) { + if (PUBLISH_ON_COMMIT.equals(publishOn)) { + publish(context); + } + } + + private void publish(DataContext context) { + if (doesXmlExistToPublish(context)) { + finalizeXmlAndPublish(context); + } } public void batchRolledback(