public class SharedStoreSlavePolicyConfiguration implements HAPolicyConfiguration {
  private long failbackDelay = ActiveMQDefaultConfiguration.getDefaultFailbackDelay();

  private boolean failoverOnServerShutdown =
      ActiveMQDefaultConfiguration.isDefaultFailoverOnServerShutdown();

  private boolean restartBackup = ActiveMQDefaultConfiguration.isDefaultRestartBackup();

  private boolean allowFailBack = ActiveMQDefaultConfiguration.isDefaultAllowAutoFailback();

  private ScaleDownConfiguration scaleDownConfiguration;

  public SharedStoreSlavePolicyConfiguration() {}

  @Override
  public TYPE getType() {
    return TYPE.SHARED_STORE_SLAVE;
  }

  public boolean isRestartBackup() {
    return restartBackup;
  }

  public SharedStoreSlavePolicyConfiguration setRestartBackup(boolean restartBackup) {
    this.restartBackup = restartBackup;
    return this;
  }

  public ScaleDownConfiguration getScaleDownConfiguration() {
    return scaleDownConfiguration;
  }

  public SharedStoreSlavePolicyConfiguration setScaleDownConfiguration(
      ScaleDownConfiguration scaleDownConfiguration) {
    this.scaleDownConfiguration = scaleDownConfiguration;
    return this;
  }

  public boolean isAllowFailBack() {
    return allowFailBack;
  }

  public SharedStoreSlavePolicyConfiguration setAllowFailBack(boolean allowFailBack) {
    this.allowFailBack = allowFailBack;
    return this;
  }

  public boolean isFailoverOnServerShutdown() {
    return failoverOnServerShutdown;
  }

  public SharedStoreSlavePolicyConfiguration setFailoverOnServerShutdown(
      boolean failoverOnServerShutdown) {
    this.failoverOnServerShutdown = failoverOnServerShutdown;
    return this;
  }

  public long getFailbackDelay() {
    return failbackDelay;
  }

  public SharedStoreSlavePolicyConfiguration setFailbackDelay(long failbackDelay) {
    this.failbackDelay = failbackDelay;
    return this;
  }
}