EdgeExpressDB

 view release on metacpan or  search on metacpan

lib/EEDB/FeatureSource.pm  view on Meta::CPAN

}

sub is_active {
  my $self = shift;
  return $self->{'is_active'} = shift if(@_);
  $self->{'is_active'}='' unless(defined($self->{'is_active'}));
  return $self->{'is_active'};
}

sub is_visible {
  my $self = shift;
  return $self->{'is_visible'} = shift if(@_);
  $self->{'is_visible'}='' unless(defined($self->{'is_visible'}));
  return $self->{'is_visible'};
}

sub feature_count {
  my $self = shift;
  return $self->{'_feature_count'} = shift if(@_);
  unless(defined($self->{'_feature_count'})) {
    $self->get_feature_count();
  }
  return $self->{'_feature_count'};
}

sub metadataset {
  my $self = shift;
  
  if(!defined($self->{'metadataset'})) {
    $self->{'metadataset'} = new EEDB::MetadataSet;

    if($self->database) {
      my $symbols = EEDB::Symbol->fetch_all_by_feature_source_id($self->database, $self->id);
      $self->{'metadataset'}->add_metadata(@$symbols);

      my $mdata = EEDB::Metadata->fetch_all_by_feature_source_id($self->database, $self->id);
      $self->{'metadataset'}->add_metadata(@$mdata);
    }
  }
  return $self->{'metadataset'};
}


################

sub get_feature_count {
  my $self = shift;
  
  if(!defined($self->database)) { return 0; }
  if(!defined($self->{'_feature_count'})) {
    my $sql = "SELECT count(*) FROM feature WHERE feature_source_id=?";
    $self->{'_feature_count'} = $self->fetch_col_value($self->database, $sql, $self->id);
  }
  return $self->{'_feature_count'};
}

################

sub feature_id_list {
  #returns a simple array of feature_id for all features in this source
  #useful for remote streaming. does as direct query, no cache
  my $self = shift;
  my $sql = "SELECT feature_id FROM feature where feature_source_id=?";
  return $self->fetch_multiple($self->database, $sql, $self->id);
}


################

sub display_desc {
  my $self = shift;
  my $str = sprintf("FeatureSource(%s) %s : %s : %s",
           $self->id, 
           $self->name,
           $self->category,
           $self->import_source
           );  
  return $str;
}

sub display_contents {
  my $self = shift;

  my $str = $self->display_desc;
  $str .= "\n". $self->metadataset->display_contents;   
  return $str;
}

sub xml {
  my $self = shift;
  my $str = $self->xml_start;
  my $count = $self->feature_count;
  if($count) { $str .= sprintf("<feature_count value=\"%d\" />\n",  $count); }
  $str .= "\n". $self->metadataset->xml;
  $str .= $self->xml_end;
  return $str;
}

sub xml_start {
  my $self = shift;
  my $str = sprintf("<featuresource id=\"%s\" name=\"%s\" category=\"%s\" source=\"%s\" comments=\"%s\" ",
           $self->id, 
           $self->name,
           $self->category,
           $self->import_source,
           $self->comments
           );
  $str .= sprintf("peer_uuid=\"%s\" ", $self->database->uuid) if($self->database->uuid);
  $str .= sprintf("import_date=\"%s\" ", $self->import_date) if(defined($self->import_date));
  $str .= ">";

  return $str;
}

sub xml_end {
  my $self = shift;
  return "</featuresource>\n";
}


#################################################



( run in 0.594 second using v1.01-cache-2.11-cpan-140bd7fdf52 )