/**
  * @param DatabaseBackupStrategyModel $configuration
  * @param callable                    $setActionName
  *
  * @throws UnableToProcessException
  *
  * @return File[]
  */
 public function dump(DatabaseBackupStrategyModel $configuration, callable $setActionName)
 {
     /* Dump the database */
     $setActionName('Dumping database...');
     $databaseDumper = $this->chainDatabasesDumper->getDumper($configuration->getDatabaseType());
     $dumpFiles = $databaseDumper->dump($configuration->getDatabaseSettings());
     /* Compress the database */
     $setActionName('Compressing database...');
     $compressor = $this->chainCompressor->getCompressor($configuration->getCompressorStrategy());
     $dumpCompressedFiles = $compressor->compress($dumpFiles);
     /* Save the files */
     $setActionName('Saving files...');
     $saver = $this->chainSaver->getSaver($configuration->getFileSaverStrategy());
     $savedFiles = $saver->save($dumpCompressedFiles);
     return $savedFiles;
 }