/[cvs]/nfo/perl/libs/Data/Storage/Container.pm
ViewVC logotype

Diff of /nfo/perl/libs/Data/Storage/Container.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.6 by joko, Thu Jan 30 21:44:00 2003 UTC revision 1.9 by joko, Thu Mar 27 15:31:08 2003 UTC
# Line 3  Line 3 
3  #  $Id$  #  $Id$
4  #  #
5  #  $Log$  #  $Log$
6    #  Revision 1.9  2003/03/27 15:31:08  joko
7    #  fixes to modules regarding new namespace(s) below Data::Mungle::*
8    #
9    #  Revision 1.8  2003/02/18 19:19:47  joko
10    #  + modified locator handling
11    #
12    #  Revision 1.7  2003/01/30 22:21:52  joko
13    #  + changed 'connect'-behaviour back to old state
14    #  + renamed log-output (now using 'initializing' instead of 'booting' - corresponding to 'initStorage')
15    #
16  #  Revision 1.6  2003/01/30 21:44:00  joko  #  Revision 1.6  2003/01/30 21:44:00  joko
17  #  + temporary fix: (FIXME) now connecting to storage on storagehandle-instantiation  #  + temporary fix: (FIXME) now connecting to storage on storagehandle-instantiation
18  #  #
19  #  Revision 1.5  2003/01/19 02:39:57  joko  #  Revision 1.5  2003/01/19 02:39:57  joko
20  #  + moved 'deep_copy' from module 'libp' to module 'Data::Transform::Deep'  #  + moved 'deep_copy' from module 'libp' to module 'Data.Transform.Deep'
21  #  + preserved order for hashes '$self->{config}' and '$self->{locator}' by using Tie::IxHash  #  + preserved order for hashes '$self->{config}' and '$self->{locator}' by using Tie::IxHash
22  #  #
23  #  Revision 1.4  2002/12/04 07:38:07  jonen  #  Revision 1.4  2002/12/04 07:38:07  jonen
# Line 43  my $logger = Log::Dispatch::Config->inst Line 53  my $logger = Log::Dispatch::Config->inst
53  use Tie::IxHash;  use Tie::IxHash;
54  use Data::Dumper;  use Data::Dumper;
55    
 use Data::Transform::Deep qw( deep_copy );  
56  use Data::Storage;  use Data::Storage;
57  #use Data::Storage::Locator;  use Data::Storage::Locator;
58    use Data::Mungle::Transform::Deep qw( deep_copy );
59    use Data::Mungle::Compare::Struct qw( isEmpty );
60    
61  sub new {  sub new {
62    my $invocant = shift;    my $invocant = shift;
# Line 97  sub initLocator { Line 108  sub initLocator {
108    my $self = shift;    my $self = shift;
109    my $name = shift;    my $name = shift;
110    my $db_config = $self->{config}->{$name};    my $db_config = $self->{config}->{$name};
111      $db_config ||= {};
112    
113    $logger->debug( __PACKAGE__ . "->initLocator( db_config $db_config )" );    $logger->debug( __PACKAGE__ . "->initLocator( name='$name' )" );
114    
115    my $cfg_locator = {};    my $cfg_locator = {};
116        
# Line 108  sub initLocator { Line 120  sub initLocator {
120      $cfg_locator->{$_} = $default->{$_};      $cfg_locator->{$_} = $default->{$_};
121    }    }
122        
   # name it  
   $cfg_locator->{name} = $name;  
     
123    # merge in specific settings    # merge in specific settings
124    my $specific = deep_copy($db_config);    my $specific = deep_copy($db_config);
125    foreach (keys %$specific) {    foreach (keys %$specific) {
# Line 126  sub initLocator { Line 135  sub initLocator {
135    # HACK: set errorhandler if dbi settings are present    # HACK: set errorhandler if dbi settings are present
136    $cfg_locator->{dbi}->{HandleError} = \&_dbErrorHandler if $cfg_locator->{dbi};    $cfg_locator->{dbi}->{HandleError} = \&_dbErrorHandler if $cfg_locator->{dbi};
137    
138      # trace
139        #print "locator:", "\n";
140        #print Dumper($cfg_locator);
141    
142      # check locator metadata
143      if (isEmpty($cfg_locator)) {
144        $logger->warning( __PACKAGE__ . "->initLocator( name='$name' ): Metadata was empty. Please check configuration." );
145        return;
146      }
147    
148      # name it
149      $cfg_locator->{name} = $name;
150    
151    # create new locator object    # create new locator object
152    $self->{locator}->{$name} = Data::Storage::Locator->new( $cfg_locator );    $self->{locator}->{$name} = Data::Storage::Locator->new( $cfg_locator );
153    
# Line 151  sub initStorage { Line 173  sub initStorage {
173    my $name = shift;    my $name = shift;
174    
175    my $locator = $self->getLocator($name);    my $locator = $self->getLocator($name);
176    $logger->info( __PACKAGE__ . " is booting storage declared by locator \"$name\"" );    $logger->info( __PACKAGE__ . " is initializing storage declared by locator \"$name\"" );
177    
178    my $storage = Data::Storage->new($locator);    my $storage = Data::Storage->new($locator);
179        
180    # TODO: do below (after 'testAvailability' and 'testIntegrity') again!!!    # TODO: do below (after 'testAvailability' and 'testIntegrity') again!!!
181    $storage->connect();    #$storage->connect();
182    
183    my $log_prefix = __PACKAGE__ . "->initStorage: ";    my $log_prefix = __PACKAGE__ . "->initStorage: ";
184    $log_prefix .= "dsn=\"$self->{locator}->{$name}->{dsn}\"" if $self->{locator}->{$name}->{dsn};    $log_prefix .= "dsn=\"$self->{locator}->{$name}->{dsn}\"" if $self->{locator}->{$name}->{dsn};
# Line 184  sub initStorage { Line 206  sub initStorage {
206    # don't connect right here, do an implicit connect on (later) usage    # don't connect right here, do an implicit connect on (later) usage
207    # maybe set ->{meta}->{connectmethod} = "connect" here    # maybe set ->{meta}->{connectmethod} = "connect" here
208    #return unless $storage->connect();    #return unless $storage->connect();
209    #$storage->connect() if $locator->{status}->{integrity};    $storage->connect() if $locator->{status}->{integrity};
210    
211    # should we check emptyness?    # should we check emptyness?
212    if ($locator->{status}->{availability} && $locator->{test_emptyness}) {    if ($locator->{status}->{availability} && $locator->{test_emptyness}) {

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.9

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed