Module org.firebirdsql.jaybird
Package org.firebirdsql.management

# Class FBStreamingBackupManager

java.lang.Object
org.firebirdsql.management.FBServiceManager
org.firebirdsql.management.FBBackupManagerBase
org.firebirdsql.management.FBStreamingBackupManager

All Implemented Interfaces:
  `AttachmentProperties`, `BaseProperties`, `ServiceConnectionProperties`, `BackupManager`, `ServiceManager`

public class FBStreamingBackupManager extends FBBackupManagerBase implements BackupManager
Implements the streaming version of the backup and restore functionality of Firebird Services API.

Author:
  Roman Rokytskyy, Mark Rotteveel

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class org.firebirdsql.management.FBBackupManagerBase

  `FBBackupManagerBase.PathSizeStruct`

- ## Field Summary

  ### Fields inherited from class org.firebirdsql.management.FBBackupManagerBase

  `noLimitRestore, restorePaths, verbose`

  ### Fields inherited from class org.firebirdsql.management.FBServiceManager

  `BUFFER_SIZE`

  ### Fields inherited from interface org.firebirdsql.management.BackupManager

  `BACKUP_CONVERT, BACKUP_EXPAND, BACKUP_IGNORE_CHECKSUMS, BACKUP_IGNORE_LIMBO, BACKUP_METADATA_ONLY, BACKUP_NO_GARBAGE_COLLECT, BACKUP_NON_TRANSPORTABLE, BACKUP_OLD_DESCRIPTIONS, RESTORE_DEACTIVATE_INDEX, RESTORE_NO_SHADOW, RESTORE_NO_VALIDITY, RESTORE_ONE_AT_A_TIME, RESTORE_USE_ALL_SPACE`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `FBStreamingBackupManager()`
  Create a new instance of `FBStreamingBackupManager` based on the default GDSType.
  `FBStreamingBackupManager(String gdsType)`
  Create a new instance of `FBStreamingBackupManager` based on a given GDSType.
  `FBStreamingBackupManager(GDSType gdsType)`
  Create a new instance of `FBStreamingBackupManager` based on a given GDSType.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addBackupPath(String path, int size)`
  Add the file to the backup of the specified size.
  `protected void`
  `addBackupsToBackupRequestBuffer(FbService service, ServiceRequestBuffer backupSPB)`
  Adds stdout as a source for the backup operation
  `protected void`
  `addBackupsToRestoreRequestBuffer(FbService service, ServiceRequestBuffer restoreSPB)`
  Adds stdin as a source for the restore operation
  `void`
  `backupDatabase(int options)`
  Perform the backup operation.
  `void`
  `clearBackupPaths()`
  Clear the information about backup paths.
  `void`
  `restoreDatabase(int options)`
  Perform the restore operation.
  `void`
  `setBackupBufferSize(int bufferSize)`
  Set the local buffer size to be used when doing a backup.
  `void`
  `setBackupOutputStream(OutputStream backupStream)`
  `void`
  `setBackupPath(String backupPath)`
  Sets the location of the backup file.
  `void`
  `setRestoreInputStream(InputStream restoreStream)`
  `void`
  `setRestorePageSize(int pageSize)`
  Set the page size that will be used for a restored database.
  `protected boolean`
  `verboseBackup()`
  Streaming backups are currently not capable of verbose output

  ### Methods inherited from class org.firebirdsql.management.FBBackupManagerBase

  `addBackupPath, addRestorePath, backupDatabase, backupMetadata, clearRestorePaths, getBackupSRB, getRestoreSRB, restoreDatabase, setDatabase, setRestorePageBufferCount, setRestoreReadOnly, setRestoreReplace, setVerbose`

  ### Methods inherited from class org.firebirdsql.management.FBServiceManager

  `attachDatabase, attachServiceManager, connectionPropertyValues, createRequestBuffer, executeServicesOperation, getAuthPlugins, getBooleanProperty, getCharSet, getDatabase, getDbCryptConfig, getExpectedDb, getHost, getIntProperty, getLogger, getPassword, getPort, getPortNumber, getProperty, getServerName, getServerVersion, getServiceName, getUser, getWireCrypt, getWireCryptAsEnum, isWireCompression, queueService, setAuthPlugins, setBooleanProperty, setCharSet, setDbCryptConfig, setExpectedDb, setHost, setIntProperty, setLogger, setPassword, setPort, setPortNumber, setProperty, setServerName, setServiceName, setType, setUser, setWireCompression, setWireCryptAsEnum`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface org.firebirdsql.jaybird.props.AttachmentProperties

  `getAuthPlugins, getCharSet, getConnectTimeout, getDbCryptConfig, getEnableProtocol, getEncoding, getParallelWorkers, getPassword, getPortNumber, getProcessId, getProcessName, getRoleName, getServerName, getSocketBufferSize, getSocketFactory, getSoTimeout, getType, getUser, getWireCrypt, isWireCompression, setAuthPlugins, setCharSet, setConnectTimeout, setDbCryptConfig, setEnableProtocol, setEncoding, setParallelWorkers, setPassword, setPortNumber, setProcessId, setProcessName, setRoleName, setServerName, setSocketBufferSize, setSocketFactory, setSoTimeout, setType, setUser, setWireCompression, setWireCrypt`

  ### Methods inherited from interface org.firebirdsql.management.BackupManager

  `addBackupPath, addRestorePath, backupDatabase, backupMetadata, clearRestorePaths, restoreDatabase, setDatabase, setRestorePageBufferCount, setRestoreReadOnly, setRestoreReplace, setVerbose`

  ### Methods inherited from interface org.firebirdsql.jaybird.props.BaseProperties

  `connectionPropertyValues, getBooleanProperty, getBooleanProperty, getIntProperty, getIntProperty, getProperty, getProperty, setBooleanProperty, setIntProperty, setProperty`

  ### Methods inherited from interface org.firebirdsql.jaybird.props.ServiceConnectionProperties

  `getExpectedDb, getServiceName, setExpectedDb, setServiceName`

  ### Methods inherited from interface org.firebirdsql.management.ServiceManager

  `getDatabase, getHost, getLogger, getPort, getServerVersion, getWireCryptAsEnum, setHost, setLogger, setPort, setWireCryptAsEnum`

- ## Constructor Details

  - ### FBStreamingBackupManager

    public FBStreamingBackupManager()
    Create a new instance of `FBStreamingBackupManager` based on the default GDSType.

  - ### FBStreamingBackupManager

    public FBStreamingBackupManager(String gdsType)
    Create a new instance of `FBStreamingBackupManager` based on a given GDSType.
    Parameters:
      `gdsType` - type must be PURE_JAVA, EMBEDDED, or NATIVE

  - ### FBStreamingBackupManager

    public FBStreamingBackupManager(GDSType gdsType)
    Create a new instance of `FBStreamingBackupManager` based on a given GDSType.
    Parameters:
      `gdsType` - type must be PURE_JAVA, EMBEDDED, or NATIVE

- ## Method Details

  - ### setBackupBufferSize

    public void setBackupBufferSize(int bufferSize)
    Set the local buffer size to be used when doing a backup. Default is 30720
    Parameters:
      `bufferSize` - The buffer size to be used, a positive value

  - ### setBackupPath

    public void setBackupPath(String backupPath)
    Description copied from interface: `BackupManager`
    Sets the location of the backup file. This method is used to set the path to the backup consisting of a single file. It is not possible to add multiple files or specify the max. size of the file using this method. It is also not possible to call `BackupManager.addBackupPath(String, int)` method after calling this one.
    Specified by:
      `setBackupPath` in interface `BackupManager`
    Parameters:
      `backupPath` - the location of the backup file.
    See Also:
      - `for multi-file backups.`

  - ### addBackupPath

    public void addBackupPath(String path, int size)
    Description copied from interface: `BackupManager`
    Add the file to the backup of the specified size. Firebird allows splitting the backup into multiple files, limiting the size of the backup file. This can be useful for example for creating a backup on CD or DVD.
    Specified by:
      `addBackupPath` in interface `BackupManager`
    Parameters:
      `path` - path to the backup file.
      `size` - max size of the file in bytes.

  - ### setBackupOutputStream

    public void setBackupOutputStream(OutputStream backupStream)

  - ### setRestoreInputStream

    public void setRestoreInputStream(InputStream restoreStream)

  - ### clearBackupPaths

    public void clearBackupPaths()
    Description copied from interface: `BackupManager`
    Clear the information about backup paths. This method undoes all parameters set in the `BackupManager.addBackupPath(String, int)` or `BackupManager.addBackupPath(String)` methods.
    Specified by:
      `clearBackupPaths` in interface `BackupManager`

  - ### backupDatabase

    public void backupDatabase(int options) throws SQLException
    Description copied from interface: `BackupManager`
    Perform the backup operation.
    Specified by:
      `backupDatabase` in interface `BackupManager`
    Parameters:
      `options` - a bitmask combination of the `BACKUP_*` constants for the backup operation
    Throws:
      `SQLException` - if a database error occurs during the backup

  - ### restoreDatabase

    public void restoreDatabase(int options) throws SQLException
    Description copied from interface: `BackupManager`
    Perform the restore operation.
    Specified by:
      `restoreDatabase` in interface `BackupManager`
    Parameters:
      `options` - A bitmask combination of `RESTORE_*` constants
    Throws:
      `SQLException` - if a database error occurs during the restore

  - ### verboseBackup

    protected boolean verboseBackup()
    Streaming backups are currently not capable of verbose output
    Specified by:
      `verboseBackup` in class `FBBackupManagerBase`

  - ### setRestorePageSize

    public void setRestorePageSize(int pageSize)
    Set the page size that will be used for a restored database. The value for `pageSize` must be one at least 4096, see als `PageSizeConstants`. The default value depends on the Firebird version. Pages smaller than 4096 were dropped in 2006 and are by definition unavailable with the streaming functionality of the Services API
    Specified by:
      `setRestorePageSize` in interface `BackupManager`
    Overrides:
      `setRestorePageSize` in class `FBBackupManagerBase`
    Parameters:
      `pageSize` - The page size to be used in a restored database, see `PageSizeConstants` with a minimum of 4096
    See Also:
      - `PageSizeConstants`

  - ### addBackupsToBackupRequestBuffer

    protected void addBackupsToBackupRequestBuffer(FbService service, ServiceRequestBuffer backupSPB)
    Adds stdout as a source for the backup operation
    Specified by:
      `addBackupsToBackupRequestBuffer` in class `FBBackupManagerBase`
    Parameters:
      `backupSPB` - The buffer to be used during the backup operation

  - ### addBackupsToRestoreRequestBuffer

    protected void addBackupsToRestoreRequestBuffer(FbService service, ServiceRequestBuffer restoreSPB)
    Adds stdin as a source for the restore operation
    Specified by:
      `addBackupsToRestoreRequestBuffer` in class `FBBackupManagerBase`
    Parameters:
      `restoreSPB` - The buffer to be used during the restore operation