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 )