Provided by: libropkg-perl_0.4-1.4_all bug

NAME

       RoPkg::DBCollection - base class who can be used for collections of database objects

VERSION

       0.1.3

DESCRIPTION

       RoPkg::DBCollection is a class who can be used as a base class for database collection of
       objects. Is used by RoPkg::Simba::Mirrors ,RoPkg::Simba::Commands and
       RoPkg::Simba::Excludes. This class should not be used directly in applications but
       derived.

SUBROUTINES/METHODS

   new()
       The class constructor. Accepts a hash with parameters. The parameters who can be passed to
       new() are:

       dbo - database object (instance of RoPkg::DB)
       dbo_method - database method (for use with RoPkg::DB)
       table - the sql table name where the objects data can be found

       If you don't specify the dbo and dbo_method parameters, a Param::Missing exception is
       raised.

   dbh()
       returns the database handler (DBI object) used by the class.

   _count($fields)
       Returns the number of records who match the fields specified in $fields. This method
       should be overriden by the child classes.  The $fields must me specified in SQL::Abstract
       format. Please refer to the SQL::Abstract documentation for more details about $fields
       format.

   _get($class_name, $fields, $order_by)
       Returns a array of initialized objects. The values are read from the database. $class_name
       is the name of the class who's gonna be instanciated. When creating the class instance dbo
       and dbo_method parameters are passed to the new() method.  The records from the database
       must match the $fields parameter and the order is given by $order_by. For more details of
       these 2 parameters please refer to SQL::Abstract documentation.
        Exceptions throwed:

       Param::Missing - when $class_name has not been specified
       Param::Wrong - when $class_name is not a class name
       DB::NoResults - when the query returned 0 results

SYNOPSIS

        package RoPkg::Tester;

        use strict;
        use warnings;

        use Scalar::Util qw(blessed);
        use RoPkg::Exceptions;
        use RoPkg::DBCollection;
        use vars qw(@ISA);

        @ISA=qw(RoPkg::DBCollection);

        sub new {
          my ($class, %opt) = @_;
          my $self;

          $self = $class->SUPER::new(%opt);
          $self->{table} = 'Mirrors';

          return $self;
        }

        sub Count {
          my ($self) = @_;

          if (!blessed($self)) {
            OutsideClass->throw(
              error    => 'Called outside class instance',
              pkg_name => 'RoPkg::Tester',
            );
          }

          return $self->_count();
        }

        sub Get {
          my ($self, $fields) = @_;

          if (!blessed($self)) {
            OutsideClass->throw(
              error    => 'Called outside class instance',
              pkg_name => 'RoPkg::Tester'
            );
          }

          return $self->_get('RoPkg::Simba::Mirror');
        }

        1;

        sub main {
          my ($dbc, $dbp);

          $dbp = new RoPkg::DB();
          $dbp->Add(
                  'dbi:mysql:database=mirrors_db;host=localhost',
                  'root',
                  '',
                  'mirrors'
                );

          $dbc = new RoPkg::Tester(
                   dbo => $dbp,
                   dbo_method => 'db_mirrors'
                 );

          print $dbc->Count(),$/;

          my @mirrors = $dbc->Get();
        }

        main();

DIAGNOSTICS

       This module comes with tests. To run them, unpack the source and use 'make test' command.

PERL CRITIC

       This modules is perlcritic level 2 compliant (with 1 exception)

CONFIGURATION AND ENVIRONMENT

       This module does not use any configuration files or environment variables.  However, it is
       possible that some dependencies to do so. Please read the man page of each dependency to
       find out more information.

DEPENDENCIES

       This module use the following modules:

       *) SQL::Abstract
       *) DBI
       *) Scalar::Util
       *) RoPkg

INCOMPATIBILITIES

       None known to the author

BUGS AND LIMITATIONS

       None known to the author

SEE ALSO

       RoPkg::Exceptions RoPkg::DB RoPkg::DBObject RoPkg::Simba::Mirrors

AUTHOR

       Subredu Manuel <diablo@iasi.roedu.net>

LICENSE AND COPYRIGHT

       Copyright (C) 2006 Subredu Manuel.  All Rights Reserved.  This module is free software;
       you can redistribute it and/or modify it under the same terms as Perl itself.  The LICENSE
       file contains the full text of the license.