Browse Source

Issue #72: Updating API to include 2.1 improvements: a75d8b3

Stephen Ficklin 7 năm trước cách đây
mục cha
commit
15708b7300
1 tập tin đã thay đổi với 55 bổ sung69 xóa
  1. 55 69
      tripal_chado/api/modules/tripal_chado.cv.api.inc

+ 55 - 69
tripal_chado/api/modules/tripal_chado.cv.api.inc

@@ -839,10 +839,6 @@ function tripal_insert_cv($name, $definition) {
  *   An associative array with the following keys:
  *    - update_existing: By default this is TRUE.  If the term exists it is
  *      automatically updated.
- *    - force_db_change:  Sometimes a term may need to switch from one
- *      database to another.  If the term already exists, but associated
- *      with another term the insert (or update, rather) will fail.  Set
- *      this variable to TRUE to force the change to occur.
  *
  * @return
  *   A cvterm object
@@ -883,7 +879,7 @@ function tripal_insert_cvterm($term, $options = array()) {
     $dbname = $term['db_name'];
   }
   else {
-    $dbname = 'local';
+    $dbname = 'internal';
   }
 
   if (isset($options['update_existing'])) {
@@ -914,7 +910,7 @@ function tripal_insert_cvterm($term, $options = array()) {
     }
   }
   if (!$name and !$id) {
-    tripal_report_error('tripal_chado', TRIPAL_WARNING, "Cannot find cvterm without 'id' or 'name'", NULL);
+    tripal_report_error('tripal_cv', TRIPAL_WARNING, "Cannot find cvterm without 'id' or 'name'", NULL);
     return 0;
   }
   if (!$id) {
@@ -934,13 +930,11 @@ function tripal_insert_cvterm($term, $options = array()) {
   // Check that we have a database name, give a different message if it's a
   // relationship.
   if ($is_relationship and !$dbname) {
-    tripal_report_error('tripal_chado', TRIPAL_WARNING,
-      "A database name is not provided for this relationship term: $id", NULL);
+    tripal_report_error('tripal_cv', TRIPAL_WARNING, "A database name is not provided for this relationship term: $id", NULL);
     return 0;
   }
   if (!$is_relationship and !$dbname) {
-    tripal_report_error('tripal_chado', TRIPAL_WARNING,
-      "A database identifier is missing from the term: $id", NULL);
+    tripal_report_error('tripal_cv', TRIPAL_WARNING, "A database identifier is missing from the term: $id", NULL);
     return 0;
   }
 
@@ -950,8 +944,7 @@ function tripal_insert_cvterm($term, $options = array()) {
     $cv = tripal_insert_cv($cvname, '');
   }
   if (!$cv) {
-    tripal_report_error('tripal_chado', TRIPAL_WARNING,
-      "Cannot find namespace '$cvname' when adding/updating $id", NULL);
+    tripal_report_error('tripal_cv', TRIPAL_WARNING, "Cannot find namespace '$cvname' when adding/updating $id", NULL);
     return 0;
   }
 
@@ -976,7 +969,7 @@ function tripal_insert_cvterm($term, $options = array()) {
     $db = tripal_insert_db(array('name' => $dbname));
   }
   if (!$db) {
-    tripal_report_error('tripal_chado', TRIPAL_WARNING, "Cannot find database '$dbname' in Chado.", NULL);
+    tripal_report_error('tripal_cv', TRIPAL_WARNING, "Cannot find database '$dbname' in Chado.", NULL);
     return 0;
   }
 
@@ -999,8 +992,8 @@ function tripal_insert_cvterm($term, $options = array()) {
     $dbxref = $result[0];
     if (!$dbxref) {
       tripal_report_error('tripal_cv', TRIPAL_ERROR,
-        'Unable to access the dbxref record for the :term cvterm. Term Record: !record',
-        array(':term' => $name, '!record' => print_r($cvterm, TRUE))
+          'Unable to access the dbxref record for the :term cvterm. Term Record: !record',
+          array(':term' => $name, '!record' => print_r($cvterm, TRUE))
       );
       return FALSE;
     }
@@ -1010,47 +1003,40 @@ function tripal_insert_cvterm($term, $options = array()) {
     $result = chado_select_record('db', array('*'), $values);
     $db_check = $result[0];
 
-    // If the database from the existing record doesn't match the one that
-    // has been provided then we have a problem.  The term already exists
-    // but we don't want to just switch the term, the callee must force it.
-    if ($db_check->name != $db->name) {
-      if (array_key_exists('force_db_change', $options) and
-          $options['force_db_change'] != TRUE) {
-        tripal_report_error('tripal_cv', TRIPAL_ERROR,
-            'The term already exists, but associated with a different database record: \'!db\'. It cannot be added: !record',
-            array(':term' => $name, '!db' => $db_check->name, '!record' => print_r($cvterm, TRUE))
-        );
-        return FALSE;
-      }
-
-      // Look to see if the correct dbxref record already exists for this
-      // database.
-      $values = array(
-        'db_id' => $db->db_id,
-        'accession' => $accession,
-      );
-      $result = chado_select_record('dbxref', array('*'), $values);
-
-      // If we already have a good dbxref then we want to update our cvterm
-      // to use this dbxref.
-      if (count($result) > 0) {
-        $dbxref = $result[0];
-        $match = array('cvterm_id' => $cvterm->cvterm_id);
-        $values = array('dbxref_id' => $dbxref->dbxref_id);
-        $success = chado_update_record('cvterm', $match, $values);
-        if (!$success) {
-          tripal_report_error('tripal_chado', TRIPAL_WARNING, "Failed to correct the dbxref id for the cvterm " .
-            "'$name' (id: $accession), for database $dbname", NULL);
-          return 0;
-        }
-      }
-      // If we don't have the dbxref then we want to delete our cvterm and let
-      // the code below recreate it with the correct info.
-      else {
-        $match = array('cvterm_id' => $cvterm->cvterm_id);
-        chado_delete_record('cvterm', $match);
-      }
-    }
+    //     // The database name for this existing term does not match that of the
+    //     // one provided to this function.  The CV name matches otherwise we
+    //     // wouldn't have made it this far. So, let's swap the database for
+    //     // this term.
+    //     if ($db_check->name != $db->name) {
+
+    //       // Look to see if the correct dbxref record already exists for this
+    //       // database.
+    //       $values = array(
+    //         'db_id' => $db->db_id,
+    //         'accession' => $accession,
+    //       );
+    //       $result = chado_select_record('dbxref', array('*'), $values);
+
+    //       // If we already have a good dbxref then we want to update our cvterm
+    //       // to use this dbxref.
+    //       if (count($result) > 0) {
+    //         $dbxref = $result[0];
+    //         $match = array('cvterm_id' => $cvterm->cvterm_id);
+    //         $values = array('dbxref_id' => $dbxref->dbxref_id);
+    //         $success = chado_update_record('cvterm', $match, $values);
+    //         if (!$success) {
+    //           tripal_report_error('tripal_cv', TRIPAL_WARNING, "Failed to correct the dbxref id for the cvterm " .
+    //             "'$name' (id: $accession), for database $dbname", NULL);
+    //           return 0;
+    //         }
+    //       }
+    //       // If we don't have the dbxref then we want to delete our cvterm and let
+    //       // the code below recreate it with the correct info.
+    //       else {
+    //         $match = array('cvterm_id' => $cvterm->cvterm_id);
+    //         chado_delete_record('cvterm', $match);
+    //       }
+    //     }
 
     // Check that the accession matches.  Sometimes an OBO can define a term
     // multiple times but with different accessions.  If this is the case we
@@ -1064,8 +1050,8 @@ function tripal_insert_cvterm($term, $options = array()) {
         'accession' => $accession
       ));
       if (!$dbxref_new) {
-        tripal_report_error('tripal_chado', TRIPAL_WARNING, "Failed to find or insert the dbxref record for cvterm, " .
-          "$name (id: $accession), for database $dbname", NULL);
+        tripal_report_error('tripal_cv', TRIPAL_WARNING, "Failed to find or insert the dbxref record for cvterm, " .
+            "$name (id: $accession), for database $dbname", NULL);
         return 0;
       }
 
@@ -1084,8 +1070,8 @@ function tripal_insert_cvterm($term, $options = array()) {
         );
         $success = chado_insert_record('cvterm_dbxref', $values, $options);
         if (!$success) {
-          tripal_report_error('tripal_chado', TRIPAL_WARNING, "Failed to find or insert the cvterm_dbxref record for a " .
-            "duplicated cvterm:  $name (id: $accession), for database $dbname", NULL);
+          tripal_report_error('tripal_cv', TRIPAL_WARNING, "Failed to find or insert the cvterm_dbxref record for a " .
+              "duplicated cvterm:  $name (id: $accession), for database $dbname", NULL);
           return 0;
         }
       }
@@ -1094,7 +1080,6 @@ function tripal_insert_cvterm($term, $options = array()) {
       $cvterm = $result->fetchObject();
       return $cvterm;
     }
-
     // Continue on, we've fixed the record if the db_id did not match.
     // We can now perform and updated if we need to.
   }
@@ -1110,8 +1095,8 @@ function tripal_insert_cvterm($term, $options = array()) {
       'accession' => $accession
     ));
     if (!$dbxref) {
-      tripal_report_error('tripal_chado', TRIPAL_WARNING, "Failed to find or insert the dbxref record for cvterm, " .
-        "$name (id: $accession), for database $dbname", NULL);
+      tripal_report_error('tripal_cv', TRIPAL_WARNING, "Failed to find or insert the dbxref record for cvterm, " .
+          "$name (id: $accession), for database $dbname", NULL);
       return 0;
     }
 
@@ -1131,18 +1116,18 @@ function tripal_insert_cvterm($term, $options = array()) {
       $success = chado_insert_record('cvterm', $ins_values);
       if (!$success) {
         if (!$is_relationship) {
-          tripal_report_error('tripal_chado', TRIPAL_WARNING, "Failed to insert the term: $name ($dbname)", NULL);
+          tripal_report_error('tripal_cv', TRIPAL_WARNING, "Failed to insert the term: $name ($dbname)", NULL);
           return 0;
         }
         else {
-          tripal_report_error('tripal_chado', TRIPAL_WARNING, "Failed to insert the relationship term: $name (cv: " . $cvname . " db: $dbname)", NULL);
+          tripal_report_error('tripal_cv', TRIPAL_WARNING, "Failed to insert the relationship term: $name (cv: " . $cvname . " db: $dbname)", NULL);
           return 0;
         }
       }
     }
     // This dbxref already exists in the cvterm table.
     else {
-      tripal_report_error('tripal_chado', TRIPAL_WARNING, "The dbxref already exists for another cvterm record: $name (cv: " . $cvname . " db: $dbname)", NULL);
+      tripal_report_error('tripal_cv', TRIPAL_WARNING, "The dbxref already exists for another cvterm record: $name (cv: " . $cvname . " db: $dbname)", NULL);
       return 0;
     }
     $result = chado_query($cvtermsql, array(':accession' => $accession, ':name' => $dbname));
@@ -1161,7 +1146,7 @@ function tripal_insert_cvterm($term, $options = array()) {
     );
     $success = chado_update_record('cvterm', $match, $upd_values);
     if (!$success) {
-      tripal_report_error('tripal_chado', TRIPAL_WARNING, "Failed to update the term: $name", NULL);
+      tripal_report_error('tripal_cv', TRIPAL_WARNING, "Failed to update the term: $name", NULL);
       return 0;
     }
 
@@ -1200,16 +1185,17 @@ function tripal_insert_cvterm($term, $options = array()) {
     }
 
     // Finally grab the updated details.
-    $result = chado_query($cvtermsql, array(':accession' => $dbxref->accession, ':name' => $dbname));
+    $result = chado_query($cvtermsql, array(':accession' => $accession, ':name' => $dbname));
     $cvterm = $result->fetchObject();
   }
   else {
-     // do nothing, we have the cvterm but we don't want to update
+    // do nothing, we have the cvterm but we don't want to update
   }
   // return the cvterm
   return $cvterm;
 }
 
+
 /**
  * TODO: deprecate this function
  *