Raw content of BioMart::Configuration::VirtualSchema # $Id: # # BioMart module for BioMart::Configuration::VirtualSchema # # You may distribute this module under the same terms as perl itself # POD documentation - main docs before the code =head1 NAME BioMart::Configuration::VirtualSchema =head1 SYNOPSIS Represents the virtualSchema defined in the martRegistry XML =head1 DESCRIPTION All BioMart::Configuration::Location implementing objects are contained within a BioMart::Configuration::VirtualSchema objects in the BioMart::Registry. At the very least if no virtualSchema is defined in the registry configuration a single "default" virtualSchema is generated to contain all Locations and Dataset. Datasets contained in different virtualSchemas cannot be used in the same BioMart::Query. =head1 AUTHOR - Damian Smedley =head1 CONTACT This module is part of the BioMart project http://www.biomart.org Questions can be posted to the mart-dev mailing list: mart-dev@ebi.ac.uk =head1 METHODS =cut package BioMart::Configuration::VirtualSchema; use strict; use warnings; use base qw(BioMart::Root); use constant NAME => "name"; use constant DISPLAYNAME => "displayName"; use constant TITLES => [ NAME, DISPLAYNAME, ]; sub _new { my ($self, @param) = @_; $self->SUPER::_new(@param); $self->addParams(TITLES, @param); $self->attr('default', 0); $self->attr('locations', []); $self->attr('visible',1); } =head2 name Usage : my $name = $virtualSchema->name(); $virtualSchemaName->name($newname); Description: sets/gets the name of the VirtualSchema Returntype : string name Exceptions : none Caller : caller =cut sub name { my ($self, $newName) = @_; if ($newName) { $self->setParam(NAME, $newName); } return $self->getParam(NAME); } =head2 displayName Usage : my $displayName = $virtualSchema->displayName(); $virtualSchemaDisplayName->displayName($newdisplayName); Description: sets/gets the displayName of the VirtualSchema Returntype : string displayName Exceptions : none Caller : caller =cut sub displayName { my ($self, $newDisplayName) = @_; if ($newDisplayName) { $self->setParam(DISPLAYNAME, $newDisplayName); } return $self->getParam(DISPLAYNAME); } =head2 default Usage : my $default = $virtualSchema->default(); $virtualSchemaDefault->default($newname); Description: sets/gets the default flag of the VirtualSchema Returntype : string name Exceptions : none Caller : caller =cut sub default { my ($self, $newName) = @_; if ($newName) { $self->set('default', $newName); } return $self->get('default'); } =head2 visible Usage : my $visible = $virtualSchema->visible(); $virtualSchema->visible($newname); Description: sets/gets the visible flag of the VirtualSchema Returntype : string name Exceptions : none Caller : caller =cut sub visible { my ($self, $newName) = @_; if (defined($newName)) { $self->set('visible', $newName); } return $self->get('visible'); } =head2 addLocation Usage : usage Description: Description Returntype : Exceptions : none Caller : caller =cut sub addLocation { my ($self, $location) = @_; my $locations = $self->get('locations'); push @{$locations}, $location; } =head2 removeLocation Usage : usage Description: Description Returntype : Exceptions : none Caller : caller =cut sub removeLocation { my ($self,$location) = @_; my $locations = $self->getAllLocations; my $i = 0; foreach my $loc (@$locations){ if ($loc->name eq $location->name){ splice @$locations,$i,1; last; } $i++; } } =head2 getAllLocations Usage : usage Description: [deprecated] to be replaced with getAllMarts Returntype : Exceptions : none Caller : caller =cut sub getAllLocations { my $self = shift; return $self->get('locations'); } =head2 getAllMarts Usage : getAllMarts(martusers-required, visible as 1-optional) Description: Replaced the old getAllLocations call Returntype : Exceptions : none Caller : caller =cut sub getAllMarts { my ($self, $visible) = @_; if(!$visible) { return $self->get('locations'); } if ($visible == 1) { my $allMarts = $self->get('locations'); my $Marts; foreach my $mart(@$allMarts) { if($visible eq $mart->visible()) { push @{$Marts}, $mart; } } return $Marts; } } sub getMartByName { my ($self, $name) = @_; my $allMarts = $self->get('locations'); my $Marts; foreach my $mart(@$allMarts) { if($name eq $mart->name()) { return $mart; } } return undef; } =head2 getDatasetByName Usage : usage Description: Description Returntype : Exceptions : none Caller : caller =cut sub getDatasetByName { my ($self,$datasetName) = @_; my $retDataset; LOC:foreach my $location(@{$self->getAllLocations}){ foreach my $dataset(@{$location->getAllDatasets}){ if ($dataset->name eq $datasetName){ $retDataset = $dataset; last LOC; } } } return $retDataset; } 1;