Bio-EnsEMBL
view release on metacpan or search on metacpan
lib/Bio/EnsEMBL/DBSQL/AnalysisAdaptor.pm view on Meta::CPAN
$dbID = $new_analysis->dbID();
$analysis->created( $new_analysis->created() );
}
$dbID ||= $self->last_insert_id('analysis_id', undef, 'analysis');
$sth->finish();
# store description and display_label
if( defined( $analysis->description() ) || defined( $analysis->display_label() )|| defined( $analysis->web_data() )) {
$self->_store_description($analysis, $dbID);
}
$self->{_cache}->{$dbID} = $analysis;
$self->{_logic_name_cache}{lc($analysis->logic_name)} = $analysis;
$analysis->adaptor( $self );
$analysis->dbID( $dbID );
return $dbID;
}
sub _store_description {
my ($self, $analysis, $dbID) = @_;
my $insert_ignore = $self->insert_ignore_clause();
my $sth = $self->prepare(
"${insert_ignore} INTO analysis_description (analysis_id, display_label, description, displayable, web_data) " .
"VALUES (?,?,?,?,?)"
);
my $display_label = $analysis->display_label();
$display_label = '' unless defined $display_label; # SQLite doesn't ignore NOT NULL errors
$sth->bind_param(1,$dbID,SQL_INTEGER);
$sth->bind_param(2,$display_label,SQL_VARCHAR);
$sth->bind_param(3,$analysis->description,SQL_LONGVARCHAR);
$sth->bind_param(4,$analysis->displayable,SQL_TINYINT);
$sth->bind_param(5,$analysis->web_data,SQL_LONGVARCHAR);
$sth->execute();
$sth->finish();
return;
}
=head2 update
Arg [1] : Bio::EnsEMBL::Analysis $anal
Example : $adaptor->update($anal)
Description: Updates this analysis in the database
Returntype : int 1 if update is performed, undef if it is not
Exceptions : throw if arg is not an analysis object
Caller : ?
Status : Stable
=cut
sub update {
my $self = shift;
my $a = shift;
if (!ref($a) || !$a->isa('Bio::EnsEMBL::Analysis')) {
throw("Expected Bio::EnsEMBL::Analysis argument.");
}
if(!$a->is_stored($self->db())) {
return;
}
my $sth = $self->prepare
("UPDATE analysis " .
"SET created = ?, logic_name = ?, db = ?, db_version = ?, db_file = ?, ".
" program = ?, program_version = ?, program_file = ?, ".
" parameters = ?, module = ?, module_version = ?, ".
" gff_source = ?, gff_feature = ? " .
"WHERE analysis_id = ?");
$sth->bind_param(1,$a->created,SQL_DATETIME);
$sth->bind_param(2,$a->logic_name,SQL_VARCHAR);
$sth->bind_param(3,$a->db,SQL_VARCHAR);
$sth->bind_param(4,$a->db_version,SQL_VARCHAR);
$sth->bind_param(5,$a->db_file,SQL_VARCHAR);
$sth->bind_param(6,$a->program,SQL_VARCHAR);
$sth->bind_param(7,$a->program_version,SQL_VARCHAR);
$sth->bind_param(8,$a->program_file,SQL_VARCHAR);
$sth->bind_param(9,$a->parameters,SQL_VARCHAR);
$sth->bind_param(10,$a->module,SQL_VARCHAR);
$sth->bind_param(11,$a->module_version,SQL_VARCHAR);
$sth->bind_param(12,$a->gff_source,SQL_VARCHAR);
$sth->bind_param(13,$a->gff_feature,SQL_VARCHAR);
$sth->bind_param(14,$a->dbID,SQL_INTEGER);
$sth->execute();
$sth->finish();
# also update description & display label - may need to create these if
# not already there
$sth = $self->prepare("SELECT description FROM analysis_description WHERE analysis_id= ?");
$sth->execute($a->dbID);
if ($sth->fetchrow_hashref) { # update if exists
$sth = $self->prepare
("UPDATE analysis_description SET description = ?, display_label = ?, displayable = ?, web_data = ? WHERE analysis_id = ?");
$sth->bind_param(1,$a->description,SQL_LONGVARCHAR);
$sth->bind_param(2,$a->display_label(),SQL_VARCHAR);
$sth->bind_param(3,$a->displayable,SQL_TINYINT);
$sth->bind_param(4,$a->web_data,SQL_LONGVARCHAR);
$sth->bind_param(5,$a->dbID,SQL_INTEGER);
$sth->execute();
} else { # create new entry
if( $a->description() || $a->display_label() || $a->web_data) {
$self->_store_description($a, $a->dbID);
}
( run in 0.888 second using v1.01-cache-2.11-cpan-f56aa216473 )