protected function execute(Gpf_Rpc_Params $params)
 {
     $form = new Gpf_Rpc_Form($params);
     $updateFile = $this->getNextUpdateFile();
     if ($updateFile !== null) {
         try {
             Gpf_Install_CreateDatabaseTask::setStorageEngine($this->createDatabase());
             $updateFile->execute();
         } catch (Exception $e) {
             $form->setErrorMessage($e->getMessage());
             return $form;
         }
         $this->setResponseType($form, self::PART_DONE_TYPE);
         $form->setInfoMessage($this->_('Updated to version %s-%s', $updateFile->getApplication(), $updateFile->getVersion()));
         return $form;
     }
     $task = $this->getUpdateAccountTask();
     try {
         $task->run();
     } catch (Gpf_Tasks_LongTaskInterrupt $e) {
         $this->setResponseType($form, self::PART_DONE_TYPE);
         $form->setInfoMessage($e->getMessage());
         return $form;
     } catch (Exception $e) {
         $form->setErrorMessage($this->_('Error during application update (%s)', $e->getMessage()));
         return $form;
     }
     $this->setNextStep($form);
     return $form;
 }
 protected function execute(Gpf_Rpc_Params $params)
 {
     $form = new Gpf_Rpc_Form($params);
     $form->addValidator(new Gpf_Rpc_Form_Validator_MandatoryValidator(), Gpf_Install_CreateDatabase::DB_HOSTNAME, $this->_('Database Hostname'));
     $form->addValidator(new Gpf_Rpc_Form_Validator_MandatoryValidator(), Gpf_Install_CreateDatabase::DB_USERNAME, $this->_('Username'));
     $form->addValidator(new Gpf_Rpc_Form_Validator_MandatoryValidator(), Gpf_Install_CreateDatabase::DB_NAME, $this->_('Database Name'));
     if (!$form->validate()) {
         return $form;
     }
     $createDatabaseTask = new Gpf_Install_CreateDatabaseTask();
     $createDatabaseTask->setDBSettings($form->getFieldValue(Gpf_Install_CreateDatabase::DB_HOSTNAME), $form->getFieldValue(Gpf_Install_CreateDatabase::DB_USERNAME), $form->getFieldValue(Gpf_Install_CreateDatabase::DB_NAME), $form->getFieldValue(Gpf_Install_CreateDatabase::DB_PASSWORD));
     try {
         $createDatabaseTask->run();
     } catch (Gpf_Tasks_LongTaskInterrupt $e) {
         $this->setResponseType($form, self::PART_DONE_TYPE);
         $form->setInfoMessage($e->getMessage());
         return $form;
     } catch (Exception $e) {
         $form->setErrorMessage($e->getMessage());
         return $form;
     }
     $this->setNextStep($form);
     return $form;
 }