/**
  * {@inheritdoc}
  */
 protected function executeAction(MWP_IncrementalBackup_Database_DumperInterface $dumper, array $tables = array(), array $params = array())
 {
     $path = isset($params['path']) ? $params['path'] : $this->baseDir;
     $this->createDirectory($path);
     $result = array();
     foreach ($tables as $entry) {
         $table = isset($entry['name']) ? $entry['name'] : null;
         $filename = isset($entry['filename']) ? $entry['filename'] : $this->generateFilename($table);
         $pathname = $path . '/' . $filename;
         $realpath = ABSPATH . $pathname;
         try {
             if ($table === null) {
                 throw new RuntimeException('Table name not passed.');
             }
             $this->assertTablesExist(array($table));
             $dumper->dump($table, $realpath);
             $result[] = array('table' => $table, 'pathname' => $pathname, 'realpath' => $realpath, 'url' => site_url() . '/' . $pathname);
         } catch (Exception $e) {
             mwp_logger()->error('Failed dumping table', array('table' => $table, 'filename' => $filename, 'pathname' => $pathname, 'error' => $e->getMessage()));
             $this->cleanDumpedTables($result);
             if ($e instanceof MWP_Worker_Exception) {
                 throw $e;
             }
             throw new MWP_Worker_Exception(MWP_Worker_Exception::BACKUP_DATABASE_FAILED, $e->getMessage(), array('message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()));
         }
     }
     return $this->createResult(array('tables' => $result));
 }
 /**
  * @param MWP_IncrementalBackup_Database_DumperInterface $dumper
  * @param array                                          $tables
  *
  * @return MWP_IncrementalBackup_Model_FetchFilesResult
  */
 protected function dumpToSingleStream(MWP_IncrementalBackup_Database_DumperInterface $dumper, array $tables)
 {
     $stream = $dumper->createStream($tables);
     $file = new MWP_IncrementalBackup_Model_File();
     $file->setPathname('tables.sql');
     $file->setStream($stream);
     $result = new MWP_IncrementalBackup_Model_FetchFilesResult();
     $result->setServerStatistics(MWP_IncrementalBackup_Model_ServerStatistics::factory());
     $result->setFiles(array($file));
     return $result;
 }