CTM
view release on metacpan or search on metacpan
lib/CTM/Base/MainClass.pm view on Meta::CPAN
#------------------------------------------------------------------------------------------------------
# OBJET : "Classe abstraite" des modules CTM::ReadEM et CTM::ReadServer
# APPLICATION : Control-M
# AUTEUR : Yoann Le Garff
# DATE DE CREATION : 01/10/2014
#------------------------------------------------------------------------------------------------------
# USAGE / AIDE
# perldoc CTM::Base::MainClass
#------------------------------------------------------------------------------------------------------
#-> BEGIN
#----> ** initialisation **
package CTM::Base::MainClass;
use strict;
use warnings;
use base qw/
CTM::Base
/;
use Carp qw/
carp
croak
/;
use String::Util qw/
hascontent
crunch
/;
use Scalar::Util qw/
blessed
/;
use POSIX qw/
:signal_h
/;
use Try::Tiny;
use Perl::OSType qw/
is_os_type
/;
use DBI;
#----> ** variables de classe **
our $VERSION = 0.181;
#----> ** methodes privees **
#-> wrappers methodes DBI
my $_doesTablesExists = sub {
my ($self, @tablesName) = @_;
my @inexistingSQLTables;
for (@tablesName) {
my $sth = $self->_DBI()->table_info(undef, 'public', $_, 'TABLE');
if ($sth->execute()) {
push @inexistingSQLTables, $_ unless ($sth->fetchrow_array());
} else {
return 0, crunch($self->_DBI()->errstr());
}
}
return 1, \@inexistingSQLTables;
};
#----> ** methodes protegees **
#-> constructeurs/destructeurs
sub _new {
my ($class, %params) = @_;
my $subName = (caller 0)[3];
if (caller->isa(__PACKAGE__)) {
my $self = {};
if (defined $params{version} && defined $params{DBMSType} && defined $params{DBMSAddress} && defined $params{DBMSPort} && defined $params{DBMSInstance} && defined $params{DBMSUser}) {
$self->{_version} = $params{version};
$self->{DBMSType} = $params{DBMSType};
$self->{DBMSAddress} = $params{DBMSAddress};
$self->{DBMSPort} = $params{DBMSPort};
$self->{DBMSInstance} = $params{DBMSInstance};
$self->{DBMSUser} = $params{DBMSUser};
$self->{DBMSPassword} = exists $params{DBMSPassword} ? $params{DBMSPassword} : undef;
$self->{DBMSConnectTimeout} = $params{DBMSConnectTimeout} || 0;
$self->{CTM::Base::_verboseObjProperty} = $params{CTM::Base::_verboseObjProperty} || 0;
} else {
croak(CTM::Base::_myErrorMessage($subName, CTM::Base::_myUsageMessage($subName, "<un ou plusieurs parametres obligatoires n'ont pas ete renseignes>")));
}
$self->{CTM::Base::_workingObjProperty} = 0;
$self->{CTM::Base::_errorsObjProperty} = [];
$self->{CTM::Base::_DBIObjProperty} = undef;
$self->{CTM::Base::_sessionIsConnectedObjProperty} = 0;
$class = ref $class || $class;
return bless $self, $class;
} else {
carp(_myErrorMessage($subName, "tentative d'utilisation d'une methode protegee."));
}
return 0;
};
lib/CTM/Base/MainClass.pm view on Meta::CPAN
sub _isSessionAlive {
my ($self, $subName) = (shift, (caller 0)[3]);
if (caller->isa(__PACKAGE__)) {
$self->unshiftError();
if ($self->isSessionSeemAlive()) {
return $self->_DBI()->ping();
} else {
$self->_addError(CTM::Base::_myErrorMessage($subName, "impossible de tester l'etat de la connexion au SGBD car celle ci n'est pas active."));
}
} else {
carp(_myErrorMessage($subName, "tentative d'utilisation d'une methode protegee."));
}
return 0;
}
sub _isSessionSeemAlive {
my $self = shift;
if (caller->isa(__PACKAGE__)) {
return blessed($self->_DBI()) && $self->_DBI()->isa('DBI::db') && $self->{CTM::Base::_sessionIsConnectedObjProperty};
} else {
carp(_myErrorMessage((caller 0)[3], "tentative d'utilisation d'une methode protegee."));
}
return 0;
}
#-> Perl BuiltIn
BEGIN {
*AUTOLOAD = \&CTM::Base::AUTOLOAD;
}
1;
#-> END
__END__
=pod
=head1 NOM
CTM::Base::MainClass
=head1 SYNOPSIS
"Classe abstraite" des modules C<CTM::ReadEM> et C<CTM::ReadServer>.
Pour plus de details, voir la documention POD de C<CTM>.
=head1 DEPENDANCES DIRECTES
C<CTM::Base>
C<Carp>
C<String::Util>
C<Scalar::Util>
C<Try::Tiny>
C<Perl::OSType>
C<DBI>
C<DBD::?>
=head1 NOTES
Ce module est dedie aux modules C<CTM::ReadEM> et C<CTM::ReadServer>.
=head1 LIENS
- Depot GitHub : http://github.com/le-garff-yoann/CTM
=head1 AUTEUR
Le Garff Yoann <pe.weeble@yahoo.fr>
=head1 LICENCE
Voir licence Perl.
=cut
( run in 0.748 second using v1.01-cache-2.11-cpan-39bf76dae61 )