Bio::Phylo::Mediators::TaxaMediator(3)

NAME
Bio::Phylo::Mediators::TaxaMediator - Mediator for links between taxa and other objects

SYNOPSIS
 # no direct usage

DESCRIPTION
This module manages links between taxon objects and other objects linked to them. It is an implementation of the Mediator design pattern (e.g. see <http://www.atug.com/andypatterns/RM.htm>, <http://home.earthlink.net/~huston2/dp/mediator.html>).

Methods defined in this module are meant only for internal usage by Bio::Phylo.

METHODS

  CONSTRUCTOR

new()
    TaxaMediator constructor.

     Type    : Constructor
     Title   : new
     Usage   : my $mediator = Bio::Phylo::Taxa::TaxaMediator->new;
     Function: Instantiates a Bio::Phylo::Taxa::TaxaMediator
               object.
     Returns : A Bio::Phylo::Taxa::TaxaMediator object (singleton).
     Args    : None.

  METHODS

register()
    Stores argument in invocant's cache.

     Type    : Method
     Title   : register
     Usage   : $mediator->register( $obj );
     Function: Stores an object in mediator's cache, if relevant
     Returns : $self
     Args    : An object, $obj
     Comments: This method is called every time an object is instantiated.

unregister()
    Removes argument from invocant's cache.

     Type    : Method
     Title   : unregister
     Usage   : $mediator->unregister( $obj );
     Function: Cleans up mediator's cache of $obj and $obj's relations
     Returns : $self
     Args    : An object, $obj
     Comments: This method is called every time an object is destroyed.

set_link()
    Creates link between objects.

     Type    : Method
     Title   : set_link
     Usage   : $mediator->set_link( -one => $obj1, -many => $obj2 );
     Function: Creates link between objects
     Returns : $self
     Args    : -one  => $obj1 (source of a one-to-many relationship)
               -many => $obj2 (target of a one-to-many relationship)
     Comments: This method is called from within, for example, set_taxa
               method calls. A call like $taxa->set_matrix( $matrix ),
               and likewise a call like $matrix->set_taxa( $taxa ), are
               both internally rerouted to:

               $mediator->set_link(
                    -one  => $taxa,
                    -many => $matrix
               );

get_link()
    Retrieves link between objects.

     Type    : Method
     Title   : get_link
     Usage   : $mediator->get_link(
                   -source => $obj,
                   -type   => _CONSTANT_,
               );
     Function: Retrieves link between objects
     Returns : Linked object
     Args    : -source => $obj (required, the source of the link)
               -type   => a constant from Bio::Phylo::Util::CONSTANT

               (-type is optional, used to filter returned results in
               one-to-many query).

     Comments: This method is called from within, for example, get_taxa
               method calls. A call like $matrix->get_taxa()
               and likewise a call like $forest->get_taxa(), are
               both internally rerouted to:

               $mediator->get_link(
                   -source => $self # e.g. $matrix or $forest
               );

               A call like $taxa->get_matrices() is rerouted to:

               $mediator->get_link( -source => $taxa, -type => _MATRIX_ );

remove_link()
    Removes link between objects.

     Type    : Method
     Title   : remove_link
     Usage   : $mediator->remove_link( -one => $obj1, -many => $obj2 );
     Function: Removes link between objects
     Returns : $self
     Args    : -one  => $obj1 (source of a one-to-many relationship)
               -many => $obj2 (target of a one-to-many relationship)

               (-many argument is optional)

     Comments: This method is called from within, for example,
               unset_taxa method calls. A call like $matrix->unset_taxa()
               is rerouted to:

               $mediator->remove_link( -many => $matrix );

               A call like $taxa->unset_matrix( $matrix ); is rerouted to:

               $mediator->remove_link( -one => $taxa, -many => $matrix );

SEE ALSO
There is a mailing list at <https://groups.google.com/forum/#!forum/bio-phylo> for any user or developer questions and discussions.

Bio::Phylo::Manual
    Also see the manual: Bio::Phylo::Manual and <http://rutgervos.blogspot.com>.

CITATION
If you use Bio::Phylo in published research, please cite it:

Rutger A Vos, Jason Caravas, Klaas Hartmann, Mark A Jensen and Chase Miller, 2011. Bio::Phylo - phyloinformatic analysis using Perl. BMC Bioinformatics 12:63. <http://dx.doi.org/10.1186/1471-2105-12-63>