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
    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 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
    Constructor | Description
    --- | ---
    `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
    Modifier and Type | Method | Description
    --- | --- | ---
    `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