Package org.firebirdsql.management

## Class FBBackupManagerBase

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

All Implemented Interfaces:
  `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
`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
`protected boolean` `noLimitRestore`
`protected java.util.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
`FBBackupManagerBase()` Create a new instance of `FBBackupManagerBase` based on the default GDSType.
`FBBackupManagerBase​(java.lang.String gdsType)` Create a new instance of `FBBackupManagerBase` based on a given GDSType.
`FBBackupManagerBase​(GDSType gdsType)` Create a new instance of `FBBackupManagerBase` based on a given GDSType.

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`void` `addBackupPath​(java.lang.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​(java.lang.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​(java.lang.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, createRequestBuffer, executeServicesOperation, executeServicesOperation, getAuthPlugins, getCharSet, getDatabase, getDbCryptConfig, getHost, getLogger, getPassword, getPort, getServerVersion, getServiceName, getUser, getWireCrypt, isWireCompression, queueService, setAuthPlugins, setCharSet, setDbCryptConfig, setHost, setLogger, setPassword, setPort, setUser, setWireCompression, setWireCrypt`

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

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

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

`addBackupPath, backupDatabase, clearBackupPaths, restoreDatabase, setBackupPath`

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

`getAuthPlugins, getCharSet, getDatabase, getDbCryptConfig, getHost, getLogger, getPassword, getPort, getServerVersion, getUser, getWireCrypt, isWireCompression, setAuthPlugins, setCharSet, setDbCryptConfig, setHost, setLogger, setPassword, setPort, setUser, setWireCompression, setWireCrypt`

### Field Detail

#### noLimitRestore

    protected boolean noLimitRestore

#### restorePaths

    protected java.util.List<FBBackupManagerBase.PathSizeStruct> restorePaths

#### verbose

    protected boolean verbose

### Constructor Detail

#### FBBackupManagerBase

    public FBBackupManagerBase()

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

#### FBBackupManagerBase

    public FBBackupManagerBase​(java.lang.String gdsType)

Create a new instance of `FBBackupManagerBase` based on a given GDSType.

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

#### FBBackupManagerBase

    public 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 Detail

#### addBackupPath

    public void addBackupPath​(java.lang.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​(java.lang.String database)

Description copied from interface: `ServiceManager`
Sets the database path for the connection to the service manager.

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​(java.lang.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 java.sql.SQLException

Description copied from interface: `BackupManager`
Perform the backup operation.

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

#### backupMetadata

    public void backupMetadata()
                        throws java.sql.SQLException

Description copied from interface: `BackupManager`
Perform the backup operation, metadata only.

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

#### getBackupSRB

    protected ServiceRequestBuffer getBackupSRB​(FbService service,
                                                int options)
                                         throws java.sql.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:
  `java.sql.SQLException`

#### restoreDatabase

    public void restoreDatabase()
                         throws java.sql.SQLException

Description copied from interface: `BackupManager`
Perform the restore operation.

Specified by:
  `restoreDatabase` in interface `BackupManager`
Throws:
  `java.sql.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 java.sql.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:
  `java.sql.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