Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

154 lines (111 sloc) 3.678 kb
# $Id$
#
# (c) Hilmar Lapp, hlapp at gnf.org, 2002.
# (c) GNF, Genomics Institute of the Novartis Research Foundation, 2002.
#
# You may distribute this module under the same terms as perl itself.
# Refer to the Perl Artistic License (see the license accompanying this
# software package, or see http://www.perl.com/language/misc/Artistic.html)
# for the terms under which you may use, modify, and redistribute this module.
#
# THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
=head1 NAME - BioSQL-base.pm
=head1 SYNOPSIS
# synopsis goes here
=head1 DESCRIPTION
This modules provides methods to insert and remove the parent entities
needed by many (probably all) of the different tests for child
entities.
=head1 AUTHOR Hilmar Lapp
Email hlapp at gnf.org
=cut
package BioSQLBase;
use lib 't';
use strict;
use vars qw(@ISA $VERSION);
use Bio::Root::Root;
use DBTestHarness;
@ISA = qw(Bio::Root::Root);
=head2 store_seq
Title : store_seq
Usage : $seq = $biosql->store_seq($stream, "rodent");
Function: Reads the next sequence from the given Bio::SeqIO stream and
stores it under the namespace given by 2nd argument.
Returns : The sequence object that was stored, with the PK in
$seq->primary_id(), and undef if there was no sequence in the stream
Args : SeqIO stream (object) and namespace (a string)
=cut
sub store_seq {
my ($self, $seqio, $namespace) = @_;
my $seq = $seqio->next_seq();
return unless $seq;
my $biodbadaptor = $self->db()->get_BioDatabaseAdaptor;
my $bdbid = $biodbadaptor->fetch_by_name_store_if_needed($namespace);
my $seqadaptor = $self->db()->get_SeqAdaptor;
my $pk = $seqadaptor->store($bdbid, $seq);
$seq->primary_id($pk);
return $seq;
}
=head2 delete_seq
Title : delete_seq
Usage : $ok = $biosql->delete_seq($seq);
Function: Deletes the given sequence from the database.
Returns : True for success and false otherwise.
Args : A Bio::PrimarySeqI compliant object
=cut
sub delete_seq {
my ($self, $seq) = @_;
my $seqadaptor = $self->db()->get_SeqAdaptor;
return $seqadaptor->remove_by_dbID($seq->primary_id());
}
=head2 delete_biodatabase
Title : delete_biodatabase
Usage : $ok = $biosql->delete_biodatabase($biodatabase);
Function: Deletes the given biodatabase (namespace) from the database.
Returns : True for success and false otherwise.
Args : namespace (a string)
=cut
sub delete_biodatabase {
my ($self, $namespace) = @_;
my $biodbadaptor = $self->db()->get_BioDatabaseAdaptor;
return $biodbadaptor->remove_by_name($namespace);
}
=head2 db
Title : db
Usage : $dbadaptor = $biosql->db();
Function:
Returns : The DBAdaptor object in use to wrap the BioSQL database.
Args : On set (optional), the DBAdaptor object to be used.
=cut
sub db {
my ($self, $db) = @_;
if($db) {
$self->{'_db'} = $db;
}
if(! exists($self->{'_db'})) {
$self->{'_db'} = $self->dbharness()->get_DBAdaptor(); # we cache this!
}
return $self->{'_db'};
}
=head2 dbharness
Title : dbharness
Usage : $dbharness = $biosql->dbharness();
Function:
Returns : The DBTestHarness object in use.
Args : On set (optional), the DBTestHarness object to be used.
=cut
sub dbharness {
my ($self, $dbharness) = @_;
if($dbharness) {
$self->{'_dbharness'} = $dbharness;
}
if(! exists($self->{'_dbharness'})) {
$self->{'_dbharness'} = DBTestHarness->new("biosql");
}
return $self->{'_dbharness'};
}
1;
__END__
Jump to Line
Something went wrong with that request. Please try again.