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

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

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

revision 1.11 by joko, Wed Dec 11 06:53:19 2002 UTC revision 1.14 by joko, Thu Dec 19 16:27:59 2002 UTC
# Line 7  Line 7 
7  ############################################  ############################################
8  #  #
9  #  $Log$  #  $Log$
10    #  Revision 1.14  2002/12/19 16:27:59  joko
11    #  - moved 'sub dropDb' to Data::Storage::Handler::DBI
12    #
13    #  Revision 1.13  2002/12/17 21:54:12  joko
14    #  + feature when using Tangram:
15    #    + what? each object created should delivered with a globally(!?) unique identifier (GUID) besides the native tangram object id (OID)
16    #        + patched Tangram::Storage (jonen)
17    #        + enhanced Data::Storage::Schema::Tangram (joko)
18    #        + enhanced Data::Storage::Handler::Tangram 'sub getObjectByGuid' (jonen)
19    #    + how?
20    #        + each concrete (non-abstract) class gets injected with an additional field/property called 'guid' - this is done (dynamically) on schema level
21    #        + this property ('guid') gets filled on object creation/insertion from 'sub Tangram::Storage::_insert' using Data::UUID from CPAN
22    #        + (as for now) this property can get accessed by calling 'getObjectByGuid' on the already known storage-handle used throughout the application
23    #
24    #  Revision 1.12  2002/12/12 02:50:15  joko
25    #  + this now (unfortunately) needs DBI for some helper functions
26    #  + TODO: these have to be refactored to another scope! (soon!)
27    #
28  #  Revision 1.11  2002/12/11 06:53:19  joko  #  Revision 1.11  2002/12/11 06:53:19  joko
29  #  + updated pod  #  + updated pod
30  #  #
# Line 199  use warnings; Line 217  use warnings;
217  use Data::Storage::Locator;  use Data::Storage::Locator;
218  use Data::Dumper;  use Data::Dumper;
219    
220    # TODO: wipe out!
221    use DBI;
222    
223  # TODO: actually implement level (integrate with Log::Dispatch)  # TODO: actually implement level (integrate with Log::Dispatch)
224  my $TRACELEVEL = 0;  my $TRACELEVEL = 0;
225    
# Line 364  sub getDbName { Line 385  sub getDbName {
385    return $database_name;    return $database_name;
386  }  }
387    
 sub testDsn {  
   my $self = shift;  
   my $dsn = $self->{locator}->{dbi}->{dsn};  
   my $result;  
   if ( my $dbh = DBI->connect($dsn, '', '', {  
                                                       PrintError => 0,  
                                                       } ) ) {  
       
     # TODO: REVIEW  
     $dbh->disconnect();  
       
     return 1;  
   } else {  
     $logger->warning( __PACKAGE__ .  "[$self->{locator}->{type}]" . "->testDsn(): " . "DBI-error: " . $DBI::errstr );  
   }  
 }  
   
388  sub testAvailability {  sub testAvailability {
389    my $self = shift;    my $self = shift;
390    my $status = $self->testDsn();    my $status = $self->testDsn();
# Line 388  sub testAvailability { Line 392  sub testAvailability {
392    return $status;    return $status;
393  }  }
394    
395    sub isConnected {
396      my $self = shift;
397      # TODO: REVIEW!
398      return 1 if $self->{STORAGEHANDLE};
399    }
400    
401  sub dropDb {  sub testDsn {
402    my $self = shift;    my $self = shift;
403    my $dsn = $self->{locator}->{dbi}->{dsn};    my $dsn = $self->{locator}->{dbi}->{dsn};
404      my $result;
   $logger->debug( __PACKAGE__ .  "->dropDb( dsn $dsn )" );  
   
   $dsn =~ s/database=(.+?);//;  
   my $database_name = $1;  
   
   my $ok;  
     
405    if ( my $dbh = DBI->connect($dsn, '', '', {    if ( my $dbh = DBI->connect($dsn, '', '', {
406                                                        PrintError => 0,                                                        PrintError => 0,
407                                                        } ) ) {                                                        } ) ) {
408      if ($database_name) {      
409        if ($dbh->do("DROP DATABASE $database_name;")) {      # TODO: REVIEW
         $ok = 1;  
       }  
     }  
   
410      $dbh->disconnect();      $dbh->disconnect();
411        
412        return 1;
413      } else {
414        $logger->warning( __PACKAGE__ .  "[$self->{locator}->{type}]" . "->testDsn(): " . "DBI-error: " . $DBI::errstr );
415    }    }
     
   return $ok;  
 }  
   
 sub isConnected {  
   my $self = shift;  
   return 1 if $self->{STORAGEHANDLE};  
416  }  }
417    
418  1;  1;
# Line 547  Compare schema (structure diff) with dat Line 541  Compare schema (structure diff) with dat
541           - 'sub getACLByMethodname($id, $context)'           - 'sub getACLByMethodname($id, $context)'
542           - 'sub getACLByName($id, $context)'           - 'sub getACLByName($id, $context)'
543              ( would require a kinda registry to look up these very names pointing to arbitrary locations (code, data, ...) )              ( would require a kinda registry to look up these very names pointing to arbitrary locations (code, data, ...) )
544      - add more hooks and various levels
545      - better integrate introduced 'getObjectByGuid'-mechanism from Data::Storage::Handler::Tangram
546    
547    
548  =head3 LINKS / REFERENCES  =head3 LINKS / REFERENCES

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.14

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