BioPerl
view release on metacpan or search on metacpan
Bio/DB/SeqFeature/Store.pm view on Meta::CPAN
Status : ABSTRACT METHOD; MUST BE IMPLEMENTED BY AN ADAPTOR
This method is the back end for init_database(). It must be
implemented by an adaptor that inherits from
Bio::DB::SeqFeature::Store. It returns true on success. @features = $db->features(-seqid=>'Chr1');
=cut
sub _init_database { shift->throw_not_implemented }
=head2 _store
Title : _store
Usage : $success = $db->_store($indexed,@objects)
Function: store seqfeature objects into database
Returns : true on success
Args : a boolean flag indicating whether objects are to be indexed,
and one or more objects
Status : ABSTRACT METHOD; MUST BE IMPLEMENTED BY AN ADAPTOR
This method is the back end for store() and store_noindex(). It should
write the seqfeature objects into the database. If indexing is
requested, the features should be indexed for query and
retrieval. Otherwise the features should be stored without indexing
(it is not required that adaptors respect this).
If the object has no primary_id (undef), then the object is written
into the database and assigned a new primary_id. If the object already
has a primary_id, then the system will perform an update, replacing
whatever was there before.
In practice, the implementation will serialize each object using the
freeze() method and then store it in the database under the
corresponding primary_id. The object is then updated with the
primary_id.
=cut
# _store($indexed,@objs)
sub _store {
my $self = shift;
my $indexed = shift;
my @objs = @_;
$self->throw_not_implemented;
}
=head2 _fetch
Title : _fetch
Usage : $feature = $db->_fetch($primary_id)
Function: fetch feature from database
Returns : feature
Args : primary id
Status : ABSTRACT METHOD; MUST BE IMPLEMENTED BY AN ADAPTOR
This method is the back end for fetch(). It accepts a primary_id and
returns a feature object. It must be implemented by the adaptor.
In practice, the implementation will retrieve the serialized
Bio::SeqfeatureI object from the database and pass it to the thaw()
method to unserialize it and synchronize the primary_id.
=cut
# _fetch($id)
sub _fetch { shift->throw_not_implemented }
=head2 _fetch_many
Title : _fetch_many
Usage : $feature = $db->_fetch_many(@primary_ids)
Function: fetch many features from database
Returns : feature
Args : primary id
Status : private -- does not need to be implemented
This method fetches many features specified by a list of IDs. The
default implementation simply calls _fetch() once for each
primary_id. Implementors can override it if needed for efficiency.
=cut
# _fetch_many(@ids)
# this one will fall back to many calls on fetch() if you don't
# override it
sub _fetch_many {
my $self = shift;
return map {$self->_fetch($_)} @_;
}
=head2 _update_indexes
Title : _update_indexes
Usage : $success = $db->_update_indexes($feature)
Function: update the indexes for a feature
Returns : true on success
Args : A seqfeature object
Status : ABSTRACT METHOD; MUST BE IMPLEMENTED BY AN ADAPTOR
This method is called by reindex() to update the searchable indexes
for a feature object that has changed.
=cut
# this is called to index a feature
sub _update_indexes { shift->throw_not_implemented }
=head2 _start_reindexing, _end_reindexing
Title : _start_reindexing, _end_reindexing
Usage : $db->_start_reindexing()
$db->_end_reindexing
Function: flag that a series of reindexing operations is beginning/ending
Returns : true on success
Args : none
Status : MAY BE IMPLEMENTED BY AN ADAPTOR (optional)
These methods are called by reindex() before and immediately after a
series of reindexing operations. The default behavior is to do
nothing, but these methods can be overridden by an adaptor in order to
perform optimizations, turn off autocommits, etc.
( run in 1.035 second using v1.01-cache-2.11-cpan-39bf76dae61 )