/**
  * @see sfTask
  */
 protected function execute($arguments = array(), $options = array())
 {
     $databaseManager = new sfDatabaseManager($this->configuration);
     $connection = $databaseManager->getDatabase($options['connection'] ? $options['connection'] : null)->getConnection();
     $buildSql = new sfPropelBuildSqlTask($this->dispatcher, $this->formatter);
     $buildSql->setCommandApplication($this->commandApplication);
     $buildSql->run();
     $this->logSection("sql-diff", "building database patch");
     $i = new dbInfo();
     $i->loadFromDb(Propel::getConnection($options['connection']));
     $i2 = new dbInfo();
     $sqlDir = sfConfig::get('sf_data_dir') . '/sql';
     $dbmap = file("{$sqlDir}/sqldb.map");
     foreach ($dbmap as $mapline) {
         if ($mapline[0] == '#') {
             continue;
         }
         //it is a comment
         list($sqlfile, $dbname) = explode('=', trim($mapline));
         if ($dbname == $options['connection']) {
             $i2->loadFromFile("{$sqlDir}/{$sqlfile}");
         }
     }
     $diff = $i->getDiffWith($i2);
     $filename = sfConfig::get('sf_data_dir') . "/sql/{$options['connection']}.diff.sql";
     if ($diff == '') {
         $this->logSection("sql-diff", "no difference found");
     }
     $this->logSection('sql-diff', "writing file {$filename}");
     file_put_contents($filename, $diff);
 }