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 )