Преглед изворни кода

Bug (Issue #2479599): Only legacy materialized views were detected as Mviews; Fix: Added a check when integrating chado tables to see if the chado table is actually a materialized view

Lacey Sanderson пре 9 година
родитељ
комит
f8259a17e5
1 измењених фајлова са 24 додато и 0 уклоњено
  1. 24 0
      tripal_views/includes/tripal_views_integration.inc

+ 24 - 0
tripal_views/includes/tripal_views_integration.inc

@@ -31,6 +31,16 @@ function tripal_views_integrate_all_chado_tables() {
   // First integrate all of the Chado tables. Those that are base tables
   // get special treatment.
   $tables = chado_get_table_names(TRUE);
+
+  // Some chado tables might have been created via the Tripal Custom Tables
+  // or Tripal Materialized Views interfaces. We need to ensure that the
+  // corresponding mview_id and table_id are associated with these tables.
+  // @TODO: Add some way to show which integrations are for custom tables.
+  //$custom_tables = chado_get_custom_table_names();
+  $mview_tables = chado_get_custom_table_names();
+
+  // Hardcode a list of base tables since there isn't really a programatic way
+  // to determine which tables in the chado schema should be base tables.
   $base_tables = array(
     'acquisition', 'analysis', 'assay', 'biomaterial', 'contact', 'cv', 'cvterm',
     'db', 'dbxref', 'environment', 'expression', 'feature', 'featuremap', 'genotype',
@@ -39,15 +49,29 @@ function tripal_views_integrate_all_chado_tables() {
     'project', 'protocol', 'pub', 'stock', 'study', 'synonym'
   );
 
+  // For each chado table, generate an integration array, keeping the above
+  // details in mind, and save that integration with Tripal Views through the API.
   foreach ($tables as $tablename) {
     $priority = 10;
     if (!tripal_is_table_integrated($tablename, $priority)) {
+
+      // Assuming that we have a default chado table, genereate an integration
+      // array describing it's Tripal Views integration.
       if (in_array($tablename, $base_tables)) {
         $table_integration_array = tripal_views_get_integration_array_for_chado_table($tablename, TRUE, $priority);
       }
       else {
         $table_integration_array = tripal_views_get_integration_array_for_chado_table($tablename, FALSE, $priority);
       }
+
+      // Check to see if this table is a Materialized view and if it is,
+      // treat it specially :).
+      if (in_array($tablename, $mview_tables)) {
+        $table_integration_array['type'] = 'mview';
+      }
+
+      // As long as we were able to generate an integration array,
+      // Integrate It!
       if ($table_integration_array) {
         tripal_add_views_integration($table_integration_array);
       }