Raw content of BioMart::Configuration::ConfigurationTree # $Id: ConfigurationTree.pm,v 1.6 2008/04/09 12:52:33 syed Exp $ # # BioMart module for BioMart::Configuration::ConfigurationTree # # You may distribute this module under the same terms as perl itself # POD documentation - main docs before the code =head1 NAME BioMart::Configuration::ConfigurationTree =head1 SYNOPSIS BioMart::Configuration::ConfigurationTree represent the whole of the datasetConfig XML recovered from the mart database/server for a particluar dataset =head1 DESCRIPTION BioMart::Configuration::ConfigurationTree is the top level object of the object hierarchy representing the datasetConfig XML which describes the attributes, filters available for each dataset. The ConfigurationTree is a container for BioMart::Configuration::FilterTree and BioMart::Configuration::AttributeTree objects. =head1 AUTHOR Arek Kasprzyk, Syed Haider, Darin London, 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::ConfigurationTree; use strict; use warnings; use base qw(BioMart::Root); use constant DATASETNAME => "dataSetName"; use constant OPTPARAM => "optional_parameters"; use constant RESTRICTEDPARAM => "primaryKeyRestriction"; use constant DEFDATASET => "default_dataset"; use constant VISIBLEFILTERPAGE => "visibleFilterPage"; use constant TITLES => [ DATASETNAME ]; use constant MARTUSERS => "martUsers"; use constant SOFTWAREVERSION => "softwareVersion"; use constant ENTRYLABEL => "entryLabel"; sub _new { my ($self, @param) = @_; $self->SUPER::_new(@param); $self->addParams(TITLES, @param); $self->attr('attTs', []); $self->attr('filtTs', []); $self->attr(OPTPARAM, undef); $self->attr(RESTRICTEDPARAM, undef); $self->attr(DEFDATASET, undef); $self->attr(VISIBLEFILTERPAGE, undef); $self->attr(MARTUSERS, 'default'); $self->attr(SOFTWAREVERSION, undef); $self->attr(ENTRYLABEL, undef); } =head2 dataSetName Usage : my $subName = $ct->dataSetName; $ct->dataSetName($newName); Description : Gets/Sets the name of the Dataset from which this ConfigurationTree originates. Returntype : scalar $name Exceptions : none Caller : caller =cut sub dataSetName { my ($self, $name) = @_; if ($name) { $self->setParam(DATASETNAME, $name); } return $self->getParam(DATASETNAME); } =head2 optionalParameters Usage : my $subName = $ct->optionalParameters; $ct->optionalParameters($newName); Description : Gets/Sets the optionalParameters associated with this configuration. Only used for GenomicSequence processing at the moment. Returntype : scalar $optionalParameters Exceptions : none Caller : caller =cut sub optionalParameters { my ($self, $param) = @_; if ($param) { $self->set(OPTPARAM, $param); } return $self->get(OPTPARAM); } =head2 mart_Users Usage : my $subName = $ct->mart_Users; $ct->mart_Users($newName); Description : Gets/Sets the mart_Users associated with this configuration. Returntype : mart_Users comma separated list Exceptions : none Caller : caller =cut sub mart_Users { my ($self, $param) = @_; if ($param) { $self->set(MARTUSERS, $param); } return $self->get(MARTUSERS); } =head2 software_version Usage : my $subName = $ct->software_version; $ct->software_version($newName); Description : Gets/Sets the software_version associated with this configuration. Returntype : software_version Exceptions : none Caller : caller =cut sub software_version { my ($self, $param) = @_; if ($param) { $self->set(SOFTWAREVERSION, $param); } return $self->get(SOFTWAREVERSION); } =head2 entryLabel Usage : my $subName = $ct->entryLabel; $ct->entryLabel($newName); Description : Gets/Sets the entryLabel associated with this configuration. Returntype : entryLabel Exceptions : none Caller : caller =cut sub entryLabel { my ($self, $param) = @_; if ($param) { $self->set(ENTRYLABEL, $param); } return $self->get(ENTRYLABEL); } =head2 primaryKeyRestriction Usage : my $subName = $ct->primaryKeyRestriction; $ct->primaryKeyRestriction($newName); Description : Gets/Sets the primaryKeyRestriction associated with this configuration. Can be used to restict data in the mart available for querying by certain users Returntype : scalar $primaryKeyRestriction Exceptions : none Caller : caller =cut sub primaryKeyRestriction { my ($self, $param) = @_; if ($param) { $self->set(RESTRICTEDPARAM, $param); } return $self->get(RESTRICTEDPARAM); } =head2 visibleFilterPage Usage : my $subName = $ct->visibleFilterPage; $ct->visibleFilterPage($newName); Description : Gets/Sets the visibleFilterPage associated with this configuration. Returntype : scalar $visibleFilterPage Exceptions : none Caller : caller =cut sub visibleFilterPage { my ($self, $param) = @_; if ($param) { $self->set(VISIBLEFILTERPAGE, $param); } return $self->get(VISIBLEFILTERPAGE); } =head2 defaultDataset Usage : my $subName = $ct->defaultDataset; $ct->defaultDataset($newName); Description : Gets/Sets the defaultDataset setting. If set to true the the dataset using this configuration becomes the default. Returntype : scalar $defaultDataset Exceptions : none Caller : caller =cut sub defaultDataset { my ($self, $param) = @_; if ($param) { $self->set(DEFDATASET, $param); } return $self->get(DEFDATASET); } =head2 addAttributeTree Usage : $ct->addAttributeTree($atree); Description: adds an AttributeTree to this ConfigurationTree. The order of addition of each AttributeTree is maintained. Returntype : na Exceptions : none Caller : caller =cut sub addAttributeTree { my ($self, $attTree) = @_; my $attTs = $self->get('attTs'); push @{$attTs}, $attTree; } =head2 addFilterTree Usage : $ct->addFilterTree($ag); Description: adds a FilterTree to this ConfigurationTree. The order of addition of each FilterTree is maintained. Returntype : na Exceptions : none Caller : caller =cut sub addFilterTree { my ($self, $filtTree) = @_; my $filtTs = $self->get('filtTs'); push @{$filtTs}, $filtTree; } sub getAttributeTreeByName { my ($self, $name) = @_; my $retTree; my $attTs = $self->get('attTs'); foreach my $attT (@{$attTs}) { if (($attT->name() && $name) && $attT->name() eq $name) { $retTree = $attT; last; } } return $retTree; } sub getFilterTreeByName { my ($self, $name) = @_; my $retTree; my $filtTs = $self->get('filtTs'); foreach my $filtT (@{$filtTs}) { if ($filtT->name() eq $name) { $retTree = $filtT; last; } } return $retTree; } sub getAllAttributeTrees { my $self = shift; return $self->get('attTs'); } sub getAllFilterTrees { my $self = shift; return $self->get('filtTs'); } sub getAttributeByName { my ($self, $name) = @_; my $retAtt; my $attTs = $self->get('attTs'); foreach my $attT (@{$attTs}) { $retAtt = $attT->getAttributeByName($name); last if ($retAtt); } return $retAtt; } sub getAttributeByNameKey { my ($self, $name, $key) = @_; my $retAtt; my $attTs = $self->get('attTs'); foreach my $attT (@{$attTs}) { $retAtt = $attT->getAttributeByNameKey($name,$key); last if ($retAtt); } return $retAtt; } sub getFilterByName { my ($self, $name) = @_; my $retFilt; my $filtTs = $self->get('filtTs'); foreach my $filtT (@{$filtTs}) { $retFilt = $filtT->getFilterByName($name); unless ($retFilt) { #then try option my $opt = $filtT->getOptionByName($name); if ($opt) { $retFilt = $opt->filter; } } last if ($retFilt); } return $retFilt if ($retFilt); # if not found may be a filter in an attributePage my $attTs = $self->get('attTs'); foreach my $attT (@{$attTs}) { my $potFilt = $attT->getFilterByName($name); if ($potFilt && $potFilt->isa("BioMart::Configuration::ValueFilter")){ $retFilt = $potFilt; last; } } return $retFilt; } sub getOptionByName { my ($self, $name) = @_; my $retOption; my $filtTs = $self->get('filtTs'); foreach my $filtT (@{$filtTs}) { $retOption = $filtT->getOptionByName($name); last if ($retOption); } return $retOption; } sub toXML { my ($self, $xml) = @_; if ($xml) { $self->{'datasetConfigXML'}=$xml; } return $self->{'datasetConfigXML'}; } 1;