CTM

 view release on metacpan or  search on metacpan

CHANGES  view on Meta::CPAN

    * 03/10/2014 - correction de typos, ajout de placeholders sur la quasi-totalite des requetes SQL des modules CTM et ajout de la methode publique getErrors().
    * 24/10/2014 - Renommage de la methode getCurrentServices() en getCurrentBIMServices(), de la methode workOnCurrentServices() en workOnCurrentBIMServices() et du module CTM::ReadEM::WorkOnBIMServices en CTM::ReadEM::WorkOnCurrentBIMServices.
    * 24/10/2014 - ajout des fonctions _myVerboseMessage() et _myUsageMessage(), des methodes protegees _tagAtWork() et _tagAtRest() et utilisation du module Sub::Name. Mise en place de constantes afin de regrouper plusieurs informations a propos d'i...
    * 24/10/2014 - correction de nombreux typos.
    * 24/10/2014 - modification des fonctions getExprFor* et des methodes keep* en raison de la fonctionnalite 'lexical_topic' (my $_) qui ne sera probablement pas integree a Perl de maniere stable.
    * 24/10/2014 - mise a jour de la POD.
    * 27/10/2014 - _myVerboseMessage() devient la methode _invokeVerbose(). Ajout de nombreuses methodes protegees/privees et de constantes pour les proprietes les plus importantes et utilisees dans les classes (principalement les proprietes privees)...
    * 27/10/2014 - ajout de la methode publique getParams() pour les sous-modules de CTM::ReadEM.
    * 27/10/2014 - refonte de la POD.
    * 29/10/2014 - suppression de la methode generateSOAPEnvelope(). generateSOAPEnvelope
    * 30/10/2014 - DBMSTimeout -> DBMSConnectTimeout. Passage de la methode protegee _parentClass() en methode publique getParentClass(). getSessionIsConnected() -> getisSessionSeemAlive()
* 0.181 (A VENIR)
    * 01/11/2014 - mise en place des modules CTM, CTM::Base::MainClass et de la classe CTM::ReadServer (cette derniere ne fait rien pour le moment) et reorganisation partielle du code.
    * 05/11/2014 - amelioration des methods keep* et des fonctions liees. Voir modifications de la POD.
    * 05/11/2014 - amelioration de la methode _setSerials et des methodes publiques liees. Ces methodes ont desormais aussi un impact sur les donees de l'objet.
* 0.19 (A VENIR)
    * xx/xx/xxxx - ajout de classes/modules CTM::ReadEM::Work*::Items (un objet par item).
* 0.191 (A VENIR)
    * xx/xx/xxxx - ajout de methodes et des modules destines au requetage sur le Control-M CM (composants du Control-M EM uniquement).
* 0.20 (A VENIR)
    * xx/xx/xxxx - utilisation d'un ORM (DBIx::Class ou Rose::DB::Object).
    * xx/xx/xxxx - implementation d'un timeout pour les appels DBI (execute(), do(), ...) probablement avec DBIx::Timeout.
    * xx/xx/xxxx - debut de la mise a disposition de la classe CTM::ReadServer et de ses sous-modules.
* 0.21 (A VENIR)
    * xx/xx/xxxx - refonte via Moose.

ex/get_bim_services.pl  view on Meta::CPAN


try {
    $session = CTM::ReadEM->new(
        version => $opts{x},
        DBMSType => $opts{T},
        DBMSAddress => $opts{h},
        DBMSPort => $opts{p},
        DBMSInstance => $opts{i},
        DBMSUser => $opts{u},
        DBMSPassword => $opts{P},
        DBMSTimeout => $opts{t},
        verbose => $opts{V}
    );
} catch {
    s/\n//g;
    die $_ . '. ' . usage();
};

$session->connect() || die $session->getError() . '. ' . usage();

my $servicesObj = $session->workOnCurrentBIMServices();

lib/CTM/Base/MainClass.pm  view on Meta::CPAN

    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;
};

sub _connect {
    my ($subName, $self, @tablesToTest) = ((caller 0)[3], @_);
    if (caller->isa(__PACKAGE__)) {
        $self->unshiftError();
        if (defined $self->{_version} && $self->{_version} =~ /^[678]$/ && defined $self->{DBMSType} && $self->{DBMSType} =~ /^(Pg|Oracle|mysql|Sybase|ODBC)$/ && hascontent($self->{DBMSAddress}) && defined $self->{DBMSPort} && $self->{DBMSPort} =~ /^...
            unless ($self->isSessionSeemAlive()) {
                if (eval 'require DBD::' . $self->{DBMSType}) {
                    my $myOSIsUnix = is_os_type('Unix', 'dragonfly');
                    my $ALRMDieSub = sub {
                        die "'DBI' : impossible de se connecter (timeout atteint) a la base '" . $self->{DBMSType} . ", instance '" .  $self->{DBMSInstance} . "' du serveur '" .  $self->{DBMSType} . "'.";
                    };
                    my $oldaction;
                    if ($myOSIsUnix) {
                        my $mask = POSIX::SigSet->new(SIGALRM);
                        my $action = POSIX::SigAction->new(

lib/CTM/Base/MainClass.pm  view on Meta::CPAN

                    } else {
                        local $SIG{ALRM} = \&$ALRMDieSub;
                    }
                    try {
                        my $connectionString = 'dbi:' . $self->{DBMSType};
                        if ($self->{DBMSType} eq 'ODBC') {
                            $connectionString .= ':driver={SQL Server};server=' . $self->{DBMSAddress} . ',' . $self->{DBMSPort} . ';database=' . $self->{DBMSInstance};
                        } else {
                            $connectionString .= ':host=' . $self->{DBMSAddress} . ';database=' . $self->{DBMSInstance} . ';port=' . $self->{DBMSPort};
                        }
                        alarm $self->{DBMSConnectTimeout};
                        $self->{CTM::Base::_DBIObjProperty} = DBI->connect(
                            $connectionString,
                            $self->{DBMSUser},
                            $self->{DBMSPassword},
                            {
                                RaiseError => 0,
                                PrintError => 0,
                                AutoCommit => 1
                            }
                        );

lib/CTM/ReadEM.pm  view on Meta::CPAN

Instance (ou base) du SGBD du Control-M EM auquel se connecter.

=head2 $session->{DBMSUser}

Utilisateur du SGBD du Control-M EM auquel se connecter.

=head2 $session->{DBMSPassword}

Mot de passe du SGBD du Control-M EM auquel se connecter.

=head2 $session->{$DBMSConnectTimeout}

Timeout (en seconde) de la tentavive de connexion au SGBD du Control-M EM.

La valeur 0 signifie qu aucun timeout ne sera applique.

B<ATTENTION>, cette propriete risque de ne pas fonctionner sous Windows (ou sur d'autres OS ne gerant pas les signaux UNIX).

=head2 $session->{verbose}

Active la verbose du module, affiche les requetes SQL executees sur STDERR.

Ce parametre accepte un booleen. Faux par defaut.



( run in 0.397 second using v1.01-cache-2.11-cpan-fd5d4e115d8 )