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 )