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.