Raw content of BioMart::Configuration::Option # $Id: # # BioMart module for BioMart::Configuration::Option # # You may distribute this module under the same terms as perl itself # POD documentation - main docs before the code =head1 NAME BioMart::Configuration::Option =head1 SYNOPSIS Object responsible for Options =head1 DESCRIPTION Object responsible for Options contained within a BioMart::BaseFilter implementing object. These Options can represent just simple distinct values for a filter so a drop-down/radio button can be generated. They can also contain a BioMart::BaseFilter implementing object themselves, in which case the root Filter object is an empty container for a drop down list of Filters =head1 AUTHOR - Arek Kasprzyk, Syed Haider, Richard Holland, 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::Option; use strict; use warnings; use Digest::MD5; use base qw(BioMart::Root); use constant NAME => "name"; use constant DESCRIPTION => "description"; use constant DISPLAYNAME => "displayName"; use constant DATASETNAME => "dataSetName"; use constant VALUE => "value"; use constant TITLES => [ NAME, DISPLAYNAME, DATASETNAME, VALUE, DESCRIPTION ]; =head2 _new Usage : no arguments Description: creates a new Option object which can contain a single Attribue object Returntype : BioMart::Configuration::Option Exceptions : none Caller : general =cut sub _new { my ($self, @param) = @_; $self->SUPER::_new(@param); $self->addParams(TITLES, @param); $self->attr('filter',undef); $self->attr('options',[]); $self->attr('pushActions',[]); $self->attr('operation',''); } sub _init { my ($self, @param) = @_; $self->SUPER::_init(@param); my $proto = shift @param; $self->attr('filter', $proto->filter); $self->attr('options', $proto->getAllOptions); $self->attr('pushActions', $proto->getAllPushActions); } =head2 addOption Usage : usage Description: Description Returntype : Exceptions : none Caller : caller =cut sub addOption { my ($self, $option) = @_; my $options = $self->get('options'); push @{$options}, $option; } =head2 getAllOptions Usage : usage Description: Description Returntype : Exceptions : none Caller : caller =cut sub getAllOptions { my $self = shift; return $self->get('options'); } =head2 addPushAction Usage : usage Description: Description Returntype : Exceptions : none Caller : caller =cut sub addPushAction { my ($self, $pa) = @_; my $pas = $self->get('pushActions'); push @{$pas}, $pa; } =head2 getAllPushActions Usage : usage Description: Description Returntype : Exceptions : none Caller : caller =cut sub getAllPushActions { my $self = shift; return $self->get('pushActions'); } =head2 name Usage : my $optionName = $option->name; $option->name($optionName); Description: get/set for internal name Returntype : scalar $name Exceptions : none Caller : general =cut sub name { # stores internal name my ($self, $value) = @_; if ($value){ $self->setParam(NAME, $value); } return $self->getParam(NAME); } =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 value Usage : Arg [1] - (optional) string $display_name Description: get/set for value Returntype : string Exceptions : none Caller : general =cut sub value { # stores display name my ($self, $value) = @_; if ($value){ $self->setParam(VALUE, $value); } return $self->getParam(VALUE); } =head2 dataSetName Usage : my $subName = $option->dataSetName; $option->dataSetName->($newName); Description: get/set for the name of the dataSet which hosts this attribute. Returntype : scalar $name Exceptions : none Caller : general =cut sub operation { my ($self,$operation) = @_; if ($operation) { $self->set('operation',$operation); } return $self->get('operation'); } sub dataSetName { # stores dataset name? my ($self, $value) = @_; if ($value){ $self->setParam(DATASETNAME, $value); } return $self->getParam(DATASETNAME); } =head2 filter Usage : Arg[1] - (optional) BioMart::Configuration::BooleanFilter or ValueFilter object Description: get/set method for the Filter object for this Option Returntype : BioMart::Configuration::BooleanFilter or ValueFilter object Exceptions : none Caller : caller =cut sub filter { # stores filter my ($self, $filter) = @_; if ($filter){ $self->set('filter', $filter); } return $self->get('filter'); } sub _toSQL { my $self = shift; my $filter = $self->filter(); return $filter->toSQL(); } sub _hashCode { my $self = shift; my $digest = Digest::MD5->new; $digest->add($self->SUPER::_hashCode); $digest->add($self->filter()->hashCode); return $digest->hexdigest; } 1;