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

# Class FBBackupManagerBase

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

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

Direct Known Subclasses:
  `FBBackupManager`, `FBStreamingBackupManager`

public abstract class FBBackupManagerBase extends FBServiceManager implements BackupManager
Implements the common functionality between regular and streaming backup/restore

Author:
  Roman Rokytskyy, Mark Rotteveel

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`protected static class`
`FBBackupManagerBase.PathSizeStruct`
Structure that holds path to the database and corresponding size of the file (in case of backup - that is size of the file in megabytes, in case of restore - size of the database file in pages).

## Field Summary

Fields
Modifier and Type
Field
Description
`protected boolean`
`noLimitRestore`
`protected final List<FBBackupManagerBase.PathSizeStruct>`
`restorePaths`
`protected boolean`
`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
Modifier
Constructor
Description
`protected`
`FBBackupManagerBase()`
Create a new instance of `FBBackupManagerBase` based on the default GDSType.
`protected`
`FBBackupManagerBase(String gdsType)`
Create a new instance of `FBBackupManagerBase` based on a given GDSType.
`protected`
`FBBackupManagerBase(GDSType gdsType)`
Create a new instance of `FBBackupManagerBase` based on a given GDSType.

## Method Summary

Modifier and Type
Method
Description
`void`
`addBackupPath(String path)`
Add backup file to the list.
`protected abstract void`
`addBackupsToBackupRequestBuffer(FbService service, ServiceRequestBuffer backupSPB)`
Adds the backup source for the backup opration, depending on the manager used
`protected abstract void`
`addBackupsToRestoreRequestBuffer(FbService service, ServiceRequestBuffer restoreSPB)`
Adds the backup files to be used during restore
`void`
`addRestorePath(String path, int size)`
Add the file to the multi-file database of the specified size for restore operation.
`void`
`backupDatabase()`
Perform the backup operation.
`void`
`backupMetadata()`
Perform the backup operation, metadata only.
`void`
`clearRestorePaths()`
Clear the information about restore paths.
`protected ServiceRequestBuffer`
`getBackupSRB(FbService service, int options)`
Creates and returns the "backup" service request buffer for the Service Manager.
`protected ServiceRequestBuffer`
`getRestoreSRB(FbService service, int options)`
Creates and returns the "backup" service request buffer for the Service Manager.
`void`
`restoreDatabase()`
Perform the restore operation.
`void`
`setDatabase(String database)`
Sets the database path for the connection to the service manager.
`void`
`setRestorePageBufferCount(int bufferCount)`
Set the default number of pages to be buffered (cached) by default in a restored database.
`void`
`setRestorePageSize(int pageSize)`
Set the page size that will be used for a restored database.
`void`
`setRestoreReadOnly(boolean readOnly)`
Set the read-only attribute on a restored database.
`void`
`setRestoreReplace(boolean replace)`
Set the restore operation to create a new database, as opposed to overwriting an existing database.
`void`
`setVerbose(boolean verbose)`
Set whether the operations of this `BackupManager` will result in verbose logging to the configured logger.
`protected abstract boolean`
`verboseBackup()`
Whether the backup will produce verbose output

### 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, backupDatabase, clearBackupPaths, restoreDatabase, setBackupPath`

### 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`

## Field Details

### noLimitRestore

protected boolean noLimitRestore

### restorePaths

protected final List<FBBackupManagerBase.PathSizeStruct> restorePaths

### verbose

protected boolean verbose

## Constructor Details

### FBBackupManagerBase

protected FBBackupManagerBase()
Create a new instance of `FBBackupManagerBase` based on the default GDSType.

### FBBackupManagerBase

protected FBBackupManagerBase(String gdsType)
Create a new instance of `FBBackupManagerBase` based on a given GDSType.

Parameters:
  `gdsType` - type must be PURE_JAVA, EMBEDDED, or NATIVE

### FBBackupManagerBase

protected FBBackupManagerBase(GDSType gdsType)
Create a new instance of `FBBackupManagerBase` based on a given GDSType.

Parameters:
  `gdsType` - type must be PURE_JAVA, EMBEDDED, or NATIVE

## Method Details

### addBackupPath

public void addBackupPath(String path)
Description copied from interface: `BackupManager`
Add backup file to the list. This method is used only during restoring the database to specify multi-file backups. The call is equivalent to passing the size -1 to `BackupManager.addBackupPath(String, int)` call.

If application invokes backup operation, an error is generated in that call.

Specified by:
  `addBackupPath` in interface `BackupManager`
Parameters:
  `path` - path to the backup file.

### setDatabase

public void setDatabase(String database)
Description copied from interface: `ServiceManager`
Sets the database path for the connection to the service manager.

Will also set the `expectedDb` property. If a different value must be used, it must be set after calling this method.

Specified by:
  `setDatabase` in interface `BackupManager`
Specified by:
  `setDatabase` in interface `ServiceManager`
Overrides:
  `setDatabase` in class `FBServiceManager`
Parameters:
  `database` - path for the connection to the service manager.

### addRestorePath

public void addRestorePath(String path, int size)
Description copied from interface: `BackupManager`
Add the file to the multi-file database of the specified size for restore operation.

Specified by:
  `addRestorePath` in interface `BackupManager`
Parameters:
  `path` - path to the backup file.
  `size` - max size of the database file in pages.

### clearRestorePaths

public void clearRestorePaths()
Description copied from interface: `BackupManager`
Clear the information about restore paths. This method undoes all parameters set in the `BackupManager.addRestorePath(String, int)` or `BackupManager.setDatabase(String)` methods.

Specified by:
  `clearRestorePaths` in interface `BackupManager`

### backupDatabase

public void backupDatabase() throws SQLException
Description copied from interface: `BackupManager`
Perform the backup operation.

Specified by:
  `backupDatabase` in interface `BackupManager`
Throws:
  `SQLException` - if a database error occurs during the backup

### backupMetadata

public void backupMetadata() throws SQLException
Description copied from interface: `BackupManager`
Perform the backup operation, metadata only.

Specified by:
  `backupMetadata` in interface `BackupManager`
Throws:
  `SQLException` - if a database error occurs during the backup

### getBackupSRB

protected ServiceRequestBuffer getBackupSRB(FbService service, int options) throws SQLException
Creates and returns the "backup" service request buffer for the Service Manager.

Parameters:
  `service` - Service handle
  `options` - The isc_spb_bkp_* parameters options to be used
Returns:
  the "backup" service request buffer for the Service Manager.
Throws:
  `SQLException`

### restoreDatabase

public void restoreDatabase() throws SQLException
Description copied from interface: `BackupManager`
Perform the restore operation.

Specified by:
  `restoreDatabase` in interface `BackupManager`
Throws:
  `SQLException` - if a database error occurs during the restore

### setVerbose

public void setVerbose(boolean verbose)
Set whether the operations of this `BackupManager` will result in verbose logging to the configured logger.

Specified by:
  `setVerbose` in interface `BackupManager`
Parameters:
  `verbose` - If `true`, operations will be logged verbosely, otherwise they will not be logged verbosely

### setRestorePageBufferCount

public void setRestorePageBufferCount(int bufferCount)
Set the default number of pages to be buffered (cached) by default in a restored database.

Specified by:
  `setRestorePageBufferCount` in interface `BackupManager`
Parameters:
  `bufferCount` - The page-buffer size to be used, a positive value

### 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 of `PageSizeConstants`. The default value depends on the Firebird version.

Be aware that not all page sizes are supported by all Firebird versions.

Specified by:
  `setRestorePageSize` in interface `BackupManager`
Parameters:
  `pageSize` - The page size to be used in a restored database, see `PageSizeConstants`
See Also:
  - `PageSizeConstants`

### setRestoreReplace

public void setRestoreReplace(boolean replace)
Set the restore operation to create a new database, as opposed to overwriting an existing database. This is true by default.

Specified by:
  `setRestoreReplace` in interface `BackupManager`
Parameters:
  `replace` - If `true`, the restore operation will attempt to create a new database, otherwise the restore operation will overwrite an existing database

### setRestoreReadOnly

public void setRestoreReadOnly(boolean readOnly)
Set the read-only attribute on a restored database.

Specified by:
  `setRestoreReadOnly` in interface `BackupManager`
Parameters:
  `readOnly` - If `true`, a restored database will be read-only, otherwise it will be read-write.

### getRestoreSRB

protected ServiceRequestBuffer getRestoreSRB(FbService service, int options)
Creates and returns the "backup" service request buffer for the Service Manager.

Parameters:
  `service` - Service handle
  `options` - The options to be used for the backup operation
Returns:
  the "backup" service request buffer for the Service Manager.

### addBackupsToBackupRequestBuffer

protected abstract void addBackupsToBackupRequestBuffer(FbService service, ServiceRequestBuffer backupSPB) throws SQLException
Adds the backup source for the backup opration, depending on the manager used

Parameters:
  `backupSPB` - The buffer to be used during the backup operation
Throws:
  `SQLException`

### addBackupsToRestoreRequestBuffer

protected abstract void addBackupsToRestoreRequestBuffer(FbService service, ServiceRequestBuffer restoreSPB)
Adds the backup files to be used during restore

### verboseBackup

protected abstract boolean verboseBackup()
Whether the backup will produce verbose output