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

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

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

revision 1.1 by joko, Thu Oct 17 00:07:14 2002 UTC revision 1.2 by joko, Fri Oct 25 11:45:10 2002 UTC
# Line 3  Line 3 
3  #  $Id$  #  $Id$
4  #  #
5  #  $Log$  #  $Log$
6    #  Revision 1.2  2002/10/25 11:45:10  joko
7    #  + enhanced robustness
8    #  + more logging for debug-levels
9    #
10  #  Revision 1.1  2002/10/17 00:07:14  joko  #  Revision 1.1  2002/10/17 00:07:14  joko
11  #  + new  #  + new
12  #  #
# Line 36  package Data::Storage::Schema::Abstract; Line 40  package Data::Storage::Schema::Abstract;
40      my $class = ref($invocant) || $invocant;      my $class = ref($invocant) || $invocant;
41      my @args = ();      my @args = ();
42      @_ && (@args = @_);      @_ && (@args = @_);
43      #$logger->debug( __PACKAGE__ . "->new(@args)" );      
44      #my $self = { @_ };      #my $self = { @_ };
45    
46      # merge all entries from all hashes in args-array to single array (key, val, key, val)      # merge all entries from all hashes in args-array to single array (key, val, key, val)
# Line 44  package Data::Storage::Schema::Abstract; Line 48  package Data::Storage::Schema::Abstract;
48      map { push(@args_all, %{$_}); } @args;      map { push(@args_all, %{$_}); } @args;
49      # make hash from array      # make hash from array
50      my %args = @args_all;      my %args = @args_all;
51    
52        $logger->debug( __PACKAGE__ . "->new( @args_all )" );
53            
54      my $self = { %args };      my $self = { %args };
55      bless $self, $class;      bless $self, $class;
# Line 76  package Data::Storage::Schema::Abstract; Line 82  package Data::Storage::Schema::Abstract;
82      my $filename = shift;      my $filename = shift;
83      my $exclude_pattern = shift;      my $exclude_pattern = shift;
84      $logger->debug( __PACKAGE__ . "->_parsePackageFile( ... )" );      $logger->debug( __PACKAGE__ . "->_parsePackageFile( ... )" );
85        if (!$filename) {
86          $logger->error( __PACKAGE__ . "->_parsePackageFile: you must specify a filename" );
87          return;
88        }
89        if (! -e $filename) {
90          $logger->error( __PACKAGE__ . "->_parsePackageFile: could not find $filename" );
91        }
92      my @packages = ();      my @packages = ();
93      open(FH, '<' . $filename);      open(FH, '<' . $filename);
94      while (<FH>) {      while (<FH>) {
# Line 109  package Data::Storage::Schema::Abstract; Line 122  package Data::Storage::Schema::Abstract;
122      # parse complete package to build list of classes      # parse complete package to build list of classes
123      if ($#{$classlist} == -1) {      if ($#{$classlist} == -1) {
124        $logger->debug( "_doinit() Initializing all Classes from " . $self->{invocant} );        $logger->debug( "_doinit() Initializing all Classes from " . $self->{invocant} );
125        my $perl_packagename = $self->{invocant};        if (!$self->{invocant}->can('getFilename')) {
126            $logger->error( __PACKAGE__ . "->_doinit: Package $self->{invocant} doesn't contain method 'getFilename'" );
127            return;
128          }
129        my $perl_packagefile = eval('return ' . $self->{invocant} . '::getFilename();');        my $perl_packagefile = eval('return ' . $self->{invocant} . '::getFilename();');
130        my $packages = $self->_parsePackageNamesFromFile($perl_packagefile, $self->{invocant});        my $packages = $self->_parsePackageNamesFromFile($perl_packagefile, $self->{invocant});
131        # TODO:        # TODO:
# Line 120  package Data::Storage::Schema::Abstract; Line 136  package Data::Storage::Schema::Abstract;
136      # build argument to be passed to "Tangram::Schema->new(...)"      # build argument to be passed to "Tangram::Schema->new(...)"
137      my @classes;      my @classes;
138      map {      map {
139        $logger->debug( __PACKAGE__ . "->_doinit() Initializing Class $_" );        $logger->debug( __PACKAGE__ . "->_doinit: Initializing Class $_" );
140        # classname        # classname
141        push @classes, $_;        push @classes, $_;
142        # schema        # schema
143        my $schema;        my $schema;
144        my $evalstr = '$schema = $' . $_ . '::schema;';        my $evalstr = '$schema = $' . $_ . '::schema;';
145        my $res = eval($evalstr);        my $res = eval($evalstr);
       use Data::Dumper;  
146        push @classes, $schema;        push @classes, $schema;
147      } @{$classlist};      } @{$classlist};
148    
# Line 162  package Data::Storage::Schema::Abstract; Line 177  package Data::Storage::Schema::Abstract;
177    sub getSchema {    sub getSchema {
178      my $self = shift;      my $self = shift;
179      if (!$self->{schema}) {      if (!$self->{schema}) {
180        print "schema is not yet initialized!", "\n";        #print "schema is not yet initialized!", "\n";
181        exit;        #exit;
182          $logger->error( __PACKAGE__ . "->getSchema: Schema is not yet initialized!" );
183          return;
184      }      }
185      return $self->{schema};      return $self->{schema};
186    }    }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

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