Raw content of BioMart::Configuration::FilterTree # $Id: FilterTree.pm,v 1.3 2008/04/09 12:52:33 syed Exp $ # # BioMart module for BioMart::Configuration::FilterTree # # You may distribute this module under the same terms as perl itself # POD documentation - main docs before the code =head1 NAME BioMart::Configuration::FilterTree =head1 SYNOPSIS Holds a List of BioMart::FilterGroup objects. =head1 DESCRIPTION Object to further define the Filters available to the User Interface by a Dataset. Holds a list of one or more BioMart::FilterGroup objects. =head1 AUTHOR - Arek Kasprzyk, Syed Haider, Richard Holland, 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::FilterTree; use strict; use warnings; use base qw(BioMart::Root); use constant NAMEKEY => "name"; use constant DISPLAYNAME => "displayName"; use constant DESCRIPTION => "description"; use constant HIDEDISPLAY => "hideDisplay"; use constant TITLES => [ NAMEKEY, DISPLAYNAME, DESCRIPTION, HIDEDISPLAY]; sub _new { my ($self, @param) = @_; $self->SUPER::_new(@param); $self->addParams(TITLES, @param); $self->attr('filtGs', []); } =head2 name Usage : my $name = $filt->name(); $filt->name($newname); Description: sets/gets the name of the FilterTree Returntype : string name Exceptions : none Caller : caller =cut sub name { my ($self, $newName) = @_; if ($newName) { $self->setParam(NAMEKEY, $newName); } return $self->getParam(NAMEKEY); } =head2 displayName Usage : Arg [1] - (optional) string $display_name Description: get/set for display name Returntype : string Exceptions : none Caller : general =cut sub displayName { # stores display name my ($self, $value) = @_; if ($value){ $self->setParam(DISPLAYNAME, $value); } return $self->getParam(DISPLAYNAME); } =head2 description Usage : Arg [1] - (optional) string $description Description: get/set for description Returntype : string Exceptions : none Caller : general =cut sub description { # stores description my ($self, $value) = @_; if ($value){ $self->setParam(DESCRIPTION, $value); } return $self->getParam(DESCRIPTION); } =head2 hideDisplay Usage : Arg [1] - (optional) string $hideDisplay Description: get/set for hideDisplay toggle Returntype : string Exceptions : none Caller : general =cut sub hideDisplay { # stores display name my ($self, $value) = @_; if ($value){ $self->setParam(HIDEDISPLAY, $value); } return $self->getParam(HIDEDISPLAY); } =head2 addFilterGroup Usage : $filt->addFilterGroup($fg); Description: adds a FilterGroup to this FilterTree. The order of addition of each FilterGroup is maintained. Returntype : na Exceptions : none Caller : caller =cut sub addFilterGroup { my ($self, $filtGroup) = @_; my $filtGs = $self->get('filtGs'); push @{$filtGs}, $filtGroup; } =head2 getFilterGroupByName Usage : my $fg = $filt->getFilterGroupByName($name); Description: Returns a BioMart::FilterGroup object from this BioMart::FilterTree object, named by the given name. If no object exists in this tree named by the given name, this method returns undef. Returntype : BioMart::FilterGroup or undef if none found with given name. Exceptions : none Caller : caller =cut sub getFilterGroupByName { my ($self, $name) = @_; my $retGroup; my $filtGs = $self->get('filtGs'); foreach my $filtG (@{$filtGs}) { if ($filtG->name() eq $name) { $retGroup = $filtG; last; } } return $retGroup; } =head2 getAllFilterGroups Usage : my $groups = $filt->getAllFilterGroups; foreach my $group (@{$groups}) { ... } Description : Returns a list_ref of all FilterGroups held in this FilterTree. Returntype : list_ref of BioMart::FilterGroup objects Exceptions : none Caller : caller =cut sub getAllFilterGroups { my $self = shift; return $self->get('filtGs'); } =head2 getFilterByName Usage : my $filt = $filt->getFilterByName($name); Description : Get a specific BioMart::Filter object named by $name. May return undef if no object is contained within this FilterTree with the given name. Returntype : BioMart::Filter or undef if none found with given name Exceptions : none Caller : caller =cut sub getFilterByName { my ($self, $name) = @_; my $retFilt; my $filtGs = $self->get('filtGs'); GROUP: foreach my $filtG (@{$filtGs}) { my $filtColls = $filtG->getAllCollections; foreach my $filtCol (@{$filtColls}) { my $filts = $filtCol->getAllFilters; foreach my $filt (@{$filts}) { if ($filt->name eq $name) { $retFilt = $filt; last GROUP; } } } } return $retFilt; } =head2 getOptionByName Usage : my $option = $filtT->getOptionByName($name); Description : Get a specific BioMart::Option object named by $name. May return undef if no object is contained within this FilterTree with the given name. Returntype : BioMart::Option or undef if none found with given name Exceptions : none Caller : caller =cut sub getOptionByName { my ($self, $name) = @_; my $retOption; my $filtGs = $self->get('filtGs'); GROUP: foreach my $filtG (@{$filtGs}) { my $filtColls = $filtG->getAllCollections; foreach my $filtCol (@{$filtColls}) { my $filts = $filtCol->getAllFilters; foreach my $filt (@{$filts}) { my $ops = $filt->getAllOptions; foreach my $op (@{$ops}) { if ($op->name eq $name) { $retOption = $op; last GROUP; } } } } } return $retOption; } 1;