EdgeExpressDB
view release on metacpan or search on metacpan
lib/EEDB/Experiment.pm view on Meta::CPAN
my $str = $self->xml_start;
$str .= $self->metadataset->xml;
$str .= $self->xml_end;
return $str;
}
#################################################
#
# DBObject override methods
#
#################################################
sub store {
my $self = shift;
my $db = shift;
if($db) { $self->database($db); }
my $dbh = $self->database->get_connection;
my $sql = "INSERT ignore INTO experiment ".
"(exp_accession, display_name, platform, series_name, series_point, is_active) ".
"VALUES(?,?,?,?,?,?)";
my $sth = $dbh->prepare($sql);
$sth->execute($self->exp_accession,
$self->display_name,
$self->platform,
$self->series_name,
$self->series_point,
$self->is_active
);
my $dbID = $sth->{'mysql_insertid'};
$sth->finish;
unless($dbID) {
$sql = "select experiment_id from experiment where exp_accession=?";
$dbID = $self->fetch_col_value($self->database, $sql, $self->exp_accession);
}
$self->primary_id($dbID);
#now do the symbols and metadata
$self->store_metadata;
return $self;
}
sub store_metadata {
my $self = shift;
die("error no database to store metadata\n") unless($self->database);
my $mdata_list = $self->metadataset->metadata_list;
foreach my $mdata (@$mdata_list) {
if(!defined($mdata->primary_id)) {
$mdata->store($self->database);
$mdata->store_link_to_experiment($self);
}
}
}
sub update {
my $self = shift;
die("error no database set\n") unless($self->database);
dies("Experiment with undef id") unless(defined($self->primary_id));
my $dbc = $self->database->get_connection;
my $sql = "UPDATE experiment SET display_name=? WHERE experiment_id=?";
my $sth = $dbc->prepare($sql);
$sth->execute($self->display_name,
$self->id);
$sth->finish;
}
##### DBObject instance override methods #####
sub mapRow {
my $self = shift;
my $rowHash = shift;
my $dbh = shift;
my $dbID = $rowHash->{'experiment_id'};
if(($__riken_EEDB_experiment_global_should_cache != 0) and ($self->database())) {
my $cached_self = $__riken_EEDB_experiment_global_id_cache->{$self->database() . $dbID};
if(defined($cached_self)) {
return $cached_self;
}
}
$self->primary_id($rowHash->{'experiment_id'});
$self->series_name($rowHash->{'series_name'});
$self->exp_accession($rowHash->{'exp_accession'});
$self->display_name($rowHash->{'display_name'});
$self->platform($rowHash->{'platform'});
$self->series_point($rowHash->{'series_point'});
$self->is_active($rowHash->{'is_active'});
if($__riken_EEDB_experiment_global_should_cache != 0) {
$__riken_EEDB_experiment_global_id_cache->{$self->database() . $self->id} = $self;
$__riken_EEDB_experiment_global_name_cache->{$self->database() . $self->exp_accession} = $self;
}
return $self;
}
##### public class methods for fetching by utilizing DBObject framework methods #####
sub fetch_by_id {
my $class = shift;
my $db = shift;
my $id = shift;
if($__riken_EEDB_experiment_global_should_cache != 0) {
my $feature = $__riken_EEDB_experiment_global_id_cache->{$db . $id};
if(defined($feature)) { return $feature; }
}
my $sql = "SELECT * FROM experiment WHERE experiment_id=?";
( run in 0.633 second using v1.01-cache-2.11-cpan-39bf76dae61 )