(REF) GenerateData - Use overrideable 'echo'. Use exceptions.
authorTim Otten <totten@civicrm.org>
Wed, 16 Sep 2020 08:08:03 +0000 (01:08 -0700)
committerTim Otten <totten@civicrm.org>
Wed, 16 Sep 2020 11:09:04 +0000 (04:09 -0700)
This removes elements of GenerateData which perform direct output to the user. there
are basically two cases:

1. Outputting advisory/status info (e.g. "echo"). This now goes through a method, which
   can be overriden/replaced.

2. Displaying errors from DAO-calls. Now-a-days, DAO-calls can raise their own exceptions,
   so we don't need to sprinkle it without error-outputs.

CRM/Core/CodeGen/GenerateData.php
sql/GenerateData.php

index 182fbd6432cdc59367323f7b933ee3f50c36d170..3d7268f5208117abb485e4a2300e15709791958d 100644 (file)
@@ -79,13 +79,22 @@ class CRM_Core_CodeGen_GenerateData {
     $this->generate('AccountingEntries');
   }
 
+  /**
+   * Write a log message.
+   *
+   * @param string $message
+   */
+  public function write($message) {
+    echo $message;
+  }
+
   /**
    * Public wrapper for calling private "add" functions
    * Provides user feedback
    * @param $itemName
    */
   public function generate($itemName) {
-    echo "Generating $itemName\n";
+    $this->write("Generating $itemName\n");
     $fn = "add$itemName";
     $this->$fn();
   }
@@ -296,7 +305,7 @@ class CRM_Core_CodeGen_GenerateData {
       $items = $this->sampleData[$key];
     }
     if (!$items) {
-      echo "Error: no items found for '$key'\n";
+      $this->write("Error: no items found for '$key'\n");
       return FALSE;
     }
     return $items[$this->randomInt(0, count($items) - 1)];
@@ -424,11 +433,7 @@ class CRM_Core_CodeGen_GenerateData {
    */
   private function _insert(&$dao) {
     if (self::ADD_TO_DB) {
-      if (!$dao->insert()) {
-        echo "ERROR INSERT: " . mysqli_error($dao->getConnection()->connection) . "\n";
-        print_r($dao);
-        exit(1);
-      }
+      $dao->insert();
     }
   }
 
@@ -438,11 +443,7 @@ class CRM_Core_CodeGen_GenerateData {
    */
   private function _update(&$dao) {
     if (self::ADD_TO_DB) {
-      if (!$dao->update()) {
-        echo "ERROR UPDATE: " . mysqli_error($dao->getConnection()->connection) . "\n";
-        print_r($dao);
-        exit(1);
-      }
+      $dao->update();
     }
   }
 
index 84732496f5140ae918b28351fe2228080c5e77c2..977a251b06de235c2bb97d64e263148b501fcc85 100644 (file)
 
 
 require_once '../civicrm.config.php';
-
-// autoload
-require_once 'CRM/Core/ClassLoader.php';
-CRM_Core_ClassLoader::singleton()->register();
+CRM_Core_Config::singleton();
 
 echo ("Starting data generation on " . date("F dS h:i:s A") . "\n");
-$gcd = new CRM_Core_CodeGen_GenerateData();
-$gcd->generateAll();
+try {
+  $scope = CRM_Core_TemporaryErrorScope::useException();
+  $gcd = new CRM_Core_CodeGen_GenerateData();
+  $gcd->generateAll();
+}
+catch (Exception $e) {
+  echo CRM_Core_Error::formatTextException($e);
+}
 echo ("Ending data generation on " . date("F dS h:i:s A") . "\n");