source: LATMOS-Accounts/lib/LATMOS/Accounts/Bases.pm @ 3

Last change on this file since 3 was 3, checked in by nanardon, 15 years ago
  • basics doc and functions
  • Property svn:keywords set to Id Rev
File size: 2.3 KB
Line 
1package LATMOS::Accounts::Bases;
2
3use 5.010000;
4use strict;
5use warnings;
6use LATMOS::Accounts::Bases::Objects;
7
8our $VERSION = (q$Rev$ =~ /^Rev: (\d+) /)[0];
9
10=head1 NAME
11
12LATMOS::Accounts::Bases - Base class for account data bases
13
14=head1 SYNOPSIS
15
16  use LATMOS::Accounts::Bases;
17  my $base = LATMOS::Accounts::Bases->new('type', %options);
18  ...
19
20=head1 DESCRIPTION
21
22This module provide basic functions for various account base
23
24=head1 FUNTIONS
25
26=cut
27
28=head2 new($type, %options)
29
30Return, if success, a new data base account object, $type is
31account base type, %options to setup the base.
32
33=cut
34
35sub new {
36    my ($class, $type, %options) = @_;
37
38    my $pclass = ucfirst(lc($type));
39    eval "require LATMOS::Accounts::Bases::$pclass;";
40    if ($@) { return } # error message ?
41    return "LATMOS::Accounts::Bases::$pclass"->new(%options);
42}
43
44=head2 get_object($type, $id)
45
46Return an object of $type (typically user or group) having identifier
47$id.
48
49=cut
50
51sub get_object {
52    my ($self, $otype, $id) = @_;
53
54    return LATMOS::Accounts::Bases::Objects->new($self, $otype, $id);
55}
56
57=head2 is_transactionnal
58
59Return True is the database support commit and rollback
60
61=cut
62
63sub is_transactionnal {
64    my ($self) = @_;
65    return($self->can('_rollback') && $self->can('_commit'));
66}
67
68=head2 commit
69
70Save change into the database if change are not done immediately.
71This should always be called as you don't know when change are applied.
72
73Return always true if database does not support any transaction.
74
75The driver should provides a _commit functions to save data.
76
77=cut
78
79sub commit {
80    my ($self) = @_;
81    return $self->can('_commit') ? $self->_commit : 1;
82}
83
84=head2 rollback
85
86If database support transaction, rollback changes. Return false
87if database does not support.
88
89If supported, driver should provides a _rollback functions
90
91=cut
92
93sub rollback {
94    my ($self) = @_;
95    return $self->can('_rollback') ? $self->_commit : 0;
96}
97
981;
99
100__END__
101
102=head1 SEE ALSO
103
104=head1 AUTHOR
105
106Thauvin Olivier, E<lt>olivier.thauvin.ipsl.fr.thauvin@latmos.ipsl.fr<gt>
107
108=head1 COPYRIGHT AND LICENSE
109
110Copyright (C) 2009 by Thauvin Olivier
111
112This library is free software; you can redistribute it and/or modify
113it under the same terms as Perl itself, either Perl version 5.10.0 or,
114at your option, any later version of Perl 5 you may have available.
115
116=cut
Note: See TracBrowser for help on using the repository browser.