1 |
## -------------------------------------------------------------------------------- |
## ------------------------------------------------------------------------ |
2 |
## $Id$ |
## $Id$ |
3 |
## -------------------------------------------------------------------------------- |
## ------------------------------------------------------------------------ |
4 |
## $Log$ |
## $Log$ |
5 |
|
## Revision 1.13 2003/01/30 22:27:05 joko |
6 |
|
## + added new abstract methods |
7 |
|
## |
8 |
|
## Revision 1.12 2003/01/30 21:46:32 joko |
9 |
|
## + fixed behaviour of AUTOLOAD-method |
10 |
|
## |
11 |
|
## Revision 1.11 2003/01/20 16:43:18 joko |
12 |
|
## + better argument-property merging |
13 |
|
## + debugging-output !!! |
14 |
|
## + abstract-dummy 'sub createChildNode' |
15 |
|
## |
16 |
## Revision 1.10 2003/01/19 02:31:51 joko |
## Revision 1.10 2003/01/19 02:31:51 joko |
17 |
## + fix to 'sub AUTOLOAD' |
## + fix to 'sub AUTOLOAD' |
18 |
## |
## |
44 |
## |
## |
45 |
## Revision 1.1 2002/10/10 03:44:07 cvsjoko |
## Revision 1.1 2002/10/10 03:44:07 cvsjoko |
46 |
## + new |
## + new |
47 |
## -------------------------------------------------------------------------------- |
## ------------------------------------------------------------------------ |
48 |
|
|
49 |
|
|
50 |
package Data::Storage::Handler::Abstract; |
package Data::Storage::Handler::Abstract; |
54 |
|
|
55 |
use base qw( DesignPattern::Object ); |
use base qw( DesignPattern::Object ); |
56 |
|
|
57 |
|
|
58 |
use Data::Dumper; |
use Data::Dumper; |
59 |
use Tie::SecureHash; |
use Tie::SecureHash; |
60 |
#use Data::Storage::Handler; |
#use Data::Storage::Handler; |
61 |
|
use Data::Transform::Deep qw( merge ); |
62 |
|
|
63 |
|
|
64 |
# get logger instance |
# get logger instance |
65 |
my $logger = Log::Dispatch::Config->instance; |
my $logger = Log::Dispatch::Config->instance; |
109 |
#=cut |
#=cut |
110 |
|
|
111 |
# merge passed-in arguments to constructor as properties into already blessed secure object |
# merge passed-in arguments to constructor as properties into already blessed secure object |
112 |
|
|
113 |
# mungle arguments from array into hash - perl does the job ;) |
# mungle arguments from array into hash - perl does the job ;) |
114 |
my %args = @_; |
#my %args = @_; |
115 |
|
#my %args = (); |
116 |
|
|
117 |
|
#print Dumper(@_); |
118 |
|
|
119 |
# merge attributes one-by-one |
# merge attributes one-by-one |
120 |
# TODO: deep_copy? / merge_deep? |
# TODO: deep_copy? / merge_deep? |
121 |
foreach (keys %args) { |
while (my $elemName = shift @_) { |
122 |
#print "key: $_", "\n"; |
#print "elemName: $elemName", "\n"; |
123 |
$self->{$_} = $args{$_}; |
if (my $elemValue = shift @_) { |
124 |
|
#print Dumper($elemValue); |
125 |
|
#print "elemName=$elemName, elemValue=$elemValue", "\n"; |
126 |
|
$self->{$elemName} = $elemValue; |
127 |
|
} |
128 |
|
#$self->{$_} = $args{$_}; |
129 |
|
#$self->{$_} = $args{$_}; |
130 |
} |
} |
131 |
|
|
132 |
# V3 - rolling our own security (just for {COREHANDLE} - nothing else) - nope, Tie::SecureHash works wonderful |
# V3 - rolling our own security (just for {COREHANDLE} - nothing else) - nope, Tie::SecureHash works wonderful |
216 |
$handlertype ||= ''; |
$handlertype ||= ''; |
217 |
|
|
218 |
my $err_msg_core = __PACKAGE__ . "[$handlertype]" . ": " . "COREHANDLE is undefined while trying to execute method \"$methodname\""; |
my $err_msg_core = __PACKAGE__ . "[$handlertype]" . ": " . "COREHANDLE is undefined while trying to execute method \"$methodname\""; |
219 |
print $err_msg_core, "\n"; |
|
220 |
if ($self->exists('lock_info') && !$self->{lock_info}->{log_lock}) { |
#print $err_msg_core, "\n"; |
221 |
|
|
222 |
|
#if ($self->exists('lock_info') && !$self->{lock_info}->{log_lock}) { |
223 |
$logger->error( $err_msg_core ); |
$logger->error( $err_msg_core ); |
224 |
} |
#} |
225 |
|
|
226 |
return; |
return; |
227 |
|
|
228 |
} |
} |
229 |
#=cut |
#=cut |
230 |
|
|
343 |
$self->_abstract_function('sendCommand'); |
$self->_abstract_function('sendCommand'); |
344 |
} |
} |
345 |
|
|
346 |
|
sub createChildNode { |
347 |
|
my $self = shift; |
348 |
|
$self->_abstract_function('createChildNode'); |
349 |
|
} |
350 |
|
|
351 |
sub existsChildNode_tmp { |
sub existsChildNode_tmp { |
352 |
my $self = shift; |
my $self = shift; |
353 |
$self->_abstract_function('existsChildNode'); |
$self->_abstract_function('existsChildNode'); |
429 |
return; |
return; |
430 |
} |
} |
431 |
|
|
432 |
|
sub getDbName { |
433 |
|
my $self = shift; |
434 |
|
$self->_abstract_function('getDbName'); |
435 |
|
return; |
436 |
|
} |
437 |
|
|
438 |
|
sub testAvailability { |
439 |
|
my $self = shift; |
440 |
|
$self->_abstract_function('testAvailability'); |
441 |
|
return; |
442 |
|
} |
443 |
|
|
444 |
|
sub isConnected { |
445 |
|
my $self = shift; |
446 |
|
$self->_abstract_function('isConnected'); |
447 |
|
return; |
448 |
|
} |
449 |
|
|
450 |
|
sub testDsn { |
451 |
|
my $self = shift; |
452 |
|
$self->_abstract_function('testDsn'); |
453 |
|
return; |
454 |
|
} |
455 |
|
|
456 |
1; |
1; |