From 9a49aa067653a1ea6e22e8e876d01aec63e21e10 Mon Sep 17 00:00:00 2001
From: Alistair Rust <rust@sanger.ac.uk>
Date: Tue, 17 Dec 2002 17:51:52 +0000
Subject: [PATCH] Access to relevant_xref_id stuff.

---
 modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm | 48 +++++++++++++++++++++++-
 modules/Bio/EnsEMBL/Gene.pm              | 30 +++++++++++++++
 2 files changed, 76 insertions(+), 2 deletions(-)

diff --git a/modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm
index f2075b0989..944d5a3761 100644
--- a/modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm
+++ b/modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm
@@ -711,9 +711,17 @@ sub store {
        $type = $gene->type;
    }
 
+   my $xref_id = 0;
+#   if (defined ($gene->relevant_xref)) {
+#     $xref_id = $gene->relevant_xref;
+#   }
+#   else {
+#     $xref_id = 0;
+#   }
+
    my $sth2 = $self->prepare("INSERT INTO gene(type, analysis_id, 
-                                               transcript_count) 
-                              VALUES('$type', $analysisId, $trans_count)" );
+                                               transcript_count, relevant_xref_id) 
+                              VALUES('$type', $analysisId, $trans_count, $xref_id)" );
    $sth2->execute();
 
    
@@ -941,6 +949,7 @@ sub get_external_name {
   return $xref;
 }
 
+
 =head2 get_external_dbname
 
   Arg [1]    : int $dbID
@@ -982,6 +991,41 @@ sub get_external_dbname {
 }
 							
 
+=head2 get_relevant_xref_id
+
+  Arg [1]    : int $dbID
+               the database identifier of the gene for which the name of
+               external db from which its external name is derived.
+  Example    : $external_dbname = $gene_adaptor->get_relevant_xref_id(42);
+  Description: Retrieves the relevant_xref_id for a gene.
+  Returntype : int
+  Exceptions : thrown if $dbId arg is not defined
+  Caller     : general
+
+=cut
+
+sub get_relevant_xref_id {
+  my ($self, $dbID) = @_;
+
+  if( !defined $dbID ) {
+      $self->throw("Must call with a dbID");
+  }
+
+  my $sth = $self->prepare("SELECT relevant_xref_id 
+                            FROM   gene 
+                            WHERE  gene_id = ?
+                           ");
+  $sth->execute($dbID);
+
+  my ($xref_id) = $sth->fetchrow_array();
+  if( !defined $xref_id ) {
+    return undef;
+  }
+
+  return $xref_id;
+}
+
+
 
 1;
 __END__
diff --git a/modules/Bio/EnsEMBL/Gene.pm b/modules/Bio/EnsEMBL/Gene.pm
index 8f3e1e55a6..89dea7b25b 100755
--- a/modules/Bio/EnsEMBL/Gene.pm
+++ b/modules/Bio/EnsEMBL/Gene.pm
@@ -914,4 +914,34 @@ sub species {
 }
 
 
+=head2 relevant_xref
+
+  Arg [1]    : int $relevant_xref_id
+  Example    : $gene->relevant_xref(42);
+  Description: get/set/lazy_loaded relevant_xref_id for this gene
+  Returntype : int
+  Exceptions : none
+  Caller     : general
+
+=cut
+
+sub relevant_xref{
+
+    my ($self,$value) = @_;
+    
+    if( defined $value ) {
+      $self->{'relevant_xref'} = $value;
+      return;
+    }
+
+    if( exists $self->{'relevant_xref'} ) {
+      return $self->{'relevant_xref'};
+    }
+
+    $self->{'relevant_xref'} = $self->adaptor->get_relevant_xref_id($self->dbID);
+
+    return $self->{'relevant_xref'};
+}
+
+
 1;
-- 
GitLab