BioPerl-DB

 view release on metacpan or  search on metacpan

lib/Bio/DB/BioSQL/ReferenceAdaptor.pm  view on Meta::CPAN

           MEDLINE link) as foreign key. Virtual means that in the
           object model there is no such reference, but there is in
           the BioSQL schema.

 Example :
 Returns : TRUE on success, and FALSE otherwise.
 Args    : The object to which to attach foreign key objects.
           A reference to an array of foreign key values, in the order of
           foreign keys returned by get_foreign_key_objects().


=cut

sub attach_foreign_key_objects{
    my ($self,$obj,$fks) = @_;
    my $ok = 1;
    
    if($fks && @$fks && $fks->[0]) {
	my $dbl = $self->_dbxref_adaptor->find_by_primary_key($fks->[0]);
	if($dbl) {
	    if(uc($dbl->database()) eq "PUBMED") {
		$obj->pubmed($dbl->primary_id());
	    } else {
		# we treat everything else as MEDLINE. Not very clean.
		$obj->medline($dbl->primary_id());
	    }
	} else {
	    $ok = 0;
	}
    }
    return $ok;
}

=head2 store_children

 Title   : store_children
 Usage   :
 Function: Inserts or updates the child entities of the given object in
           the datastore.

 Example :
 Returns : TRUE on success, and FALSE otherwise
 Args    : The Bio::DB::PersistentObjectI implementing object for which the
           child objects shall be made persistent.
           Optionally, additional named parameters. A common parameter will
           be -assoc_objs, with a reference to an array of objects to which
           this object should be associated in the database if those objects
           are not retrievable from the persistent object itself.


=cut

sub store_children{
    return 1;
}

=head2 remove_children

 Title   : remove_children
 Usage   :
 Function: This method is to cascade deletes in maintained objects.

           We just return TRUE here, because the dbxref child is only
           virtual.

 Example :
 Returns : TRUE on success and FALSE otherwise
 Args    : The persistent object that was just removed from the database.
           Additional (named) parameter, as passed to remove().


=cut

sub remove_children{
    return 1;
}

=head2 instantiate_from_row

 Title   : instantiate_from_row
 Usage   :
 Function: Instantiates the class this object is an adaptor for, and populates
           it with values from columns of the row.

           This implementation call populate_from_row() to do the real job.
 Example :
 Returns : An object, or undef, if the row contains no values
 Args    : A reference to an array of column values. The first column is the
           primary key, the other columns are expected to be in the order 
           returned by get_persistent_slots().
           Optionally, the object factory to be used for instantiating the
           proper class. The adaptor must be able to instantiate a default
           class if this value is undef.


=cut

sub instantiate_from_row{
    my ($self,$row,$fact) = @_;
    my $obj;

    if($row && @$row) {
	if($fact) {
	    $obj = $fact->create_object();
	} else {
	    $obj = Bio::Annotation::Reference->new();
	}
        # in order to store rank we need a persistent object - sooner or later
        # it will be turned into one anyway
        if (!$obj->isa("Bio::DB::PersistentObjectI")) {
            $obj = $self->create_persistent($obj);
        }
        # now populate
	$self->populate_from_row($obj, $row);
    }
    return $obj;
}

=head2 populate_from_row

 Title   : populate_from_row



( run in 0.660 second using v1.01-cache-2.11-cpan-39bf76dae61 )