Jens Rehsack > DBD-Sys-0.102 > DBD::Sys::Plugin

Download:
DBD-Sys-0.102.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.102   Source  

NAME ^

DBD::Sys::Plugin - embed own tables to DBD::Sys

SYNOPSIS ^

This package is not intended to be used directly.

DESCRIPTION ^

DBD::Sys is developed to use a unique, well known interface (SQL) to access data from underlying system which is available in tabular context (or easily could transformed into).

The major goal of DBD::Sys is the ability to have an interface to collect relevant data to operate a system - regardless the individual type. Therefore it uses plugins to provide the accessible tables and can be extended by adding plugins.

Plugin structure

Each plugin must be named DBD::Sys::Plugin::Plugin-Name. This package can provide an external callable method named get_supported_tables which must return a hash containing the provided tables as key and the classes which implement the tables as associated value, e.g.:

  package DBD::Sys::Plugin::Foo;

  use base qw(DBD::Sys::Plugin);

  sub get_supported_tables()
  {
      (
          mytable => 'DBD::Sys::Plugin::Foo::MyTable';
      )
  }

If the table is located in additional module, it must be required either by the plugin package on loading or at least when it's returned by get_supported_tables.

If this method is not provided, the namespace below the plugin name will be scanned for tables using Module::Pluggable::Object:

  sub DBD::Sys::Plugin::get_supported_tables
  {
      my $proto = blessed($_[0]) || $_[0];
      my $finder = Module::Pluggable::Object->new(
                                                   require     => 1,
                                                   search_path => [$proto],
                                                   inner       => 0,
      );
      my @tableClasses = $finder->plugins();
      ...
  }

It's strongly recommended to derive the table classes from DBD::Sys::Table, but it's required that it is a SQL::Eval::Table and provides the get_col_names and collect_data methods:

  package DBD::Sys::Plugin::Foo::MyTable;

  use base qw(DBD::Sys::Table);

  sub get_col_names() { qw(col1 col2 col3) }

  sub collect_data()
  {
      # ...

      return \@data;
  }

METHODS ^

get_supported_tables

This method is using Module::Pluggable::Object to find all tables in the namespace of the class derived from DBD::Sys::Plugin. It's called (once at initialization) in package context and returns a hash with the supported tables as key and the according classes as value.

A plugin what knows it's tables might override this method and return a static hash.

get_priority

This method returns the default priority of a plugin (and table): 1000. See "new" in DBD::Sys::CompositeTable for more information about priorities of plugin and table classes.

AUTHOR ^

    Jens Rehsack
    CPAN ID: REHSACK
    rehsack@cpan.org
    http://search.cpan.org/~rehsack/

COPYRIGHT ^

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the LICENSE file included with this module.

SUPPORT ^

Free support can be requested via regular CPAN bug-tracking system at http://rt.cpan.org/NoAuth/Bugs.html?Dist=DBD-Sys. There is no guaranteed reaction time or solution time, but it's always tried to give accept or reject a reported ticket within a week. It depends on business load. That doesn't mean that ticket via rt aren't handles as soon as possible, that means that soon depends on how much I have to do.

Business and commercial support should be acquired from the authors via preferred freelancer agencies.

syntax highlighting: