org.postgresql.replication.fluent.logical.LogicalStreamBuilder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of postgresql Show documentation
Show all versions of postgresql Show documentation
PostgreSQL JDBC Driver JDBC4
/*
* Copyright (c) 2016, PostgreSQL Global Development Group
* See the LICENSE file in the project root for more information.
*/
package org.postgresql.replication.fluent.logical;
import org.postgresql.replication.LogSequenceNumber;
import org.postgresql.replication.PGReplicationStream;
import org.postgresql.replication.fluent.AbstractStreamBuilder;
import java.sql.SQLException;
import java.util.Properties;
public class LogicalStreamBuilder extends AbstractStreamBuilder
implements ChainedLogicalStreamBuilder, LogicalReplicationOptions {
private final Properties slotOptions;
private StartLogicalReplicationCallback startCallback;
/**
* @param startCallback not null callback that should be execute after build parameters for start
* replication
*/
public LogicalStreamBuilder(StartLogicalReplicationCallback startCallback) {
this.startCallback = startCallback;
this.slotOptions = new Properties();
}
@Override
protected ChainedLogicalStreamBuilder self() {
return this;
}
@Override
public PGReplicationStream start() throws SQLException {
return startCallback.start(this);
}
@Override
public String getSlotName() {
return slotName;
}
@Override
public ChainedLogicalStreamBuilder withStartPosition(LogSequenceNumber lsn) {
startPosition = lsn;
return this;
}
@Override
public ChainedLogicalStreamBuilder withSlotOption(String optionName, boolean optionValue) {
slotOptions.setProperty(optionName, String.valueOf(optionValue));
return this;
}
@Override
public ChainedLogicalStreamBuilder withSlotOption(String optionName, int optionValue) {
slotOptions.setProperty(optionName, String.valueOf(optionValue));
return this;
}
@Override
public ChainedLogicalStreamBuilder withSlotOption(String optionName, String optionValue) {
slotOptions.setProperty(optionName, optionValue);
return this;
}
@Override
public ChainedLogicalStreamBuilder withSlotOptions(Properties options) {
for (String propertyName : options.stringPropertyNames()) {
slotOptions.setProperty(propertyName, options.getProperty(propertyName));
}
return this;
}
@Override
public LogSequenceNumber getStartLSNPosition() {
return startPosition;
}
@Override
public Properties getSlotOptions() {
return slotOptions;
}
@Override
public int getStatusInterval() {
return statusIntervalMs;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy