3 |
# $Id$ |
# $Id$ |
4 |
# |
# |
5 |
# $Log$ |
# $Log$ |
6 |
|
# Revision 1.7 2003/06/25 22:59:59 joko |
7 |
|
# tweaked behaviour: only "->close" result if it is of type "Tangram::Cursor" |
8 |
|
# |
9 |
|
# Revision 1.6 2003/04/09 07:11:01 joko |
10 |
|
# minor fix |
11 |
|
# |
12 |
|
# Revision 1.5 2003/04/09 02:09:47 joko |
13 |
|
# bugfix: check for existance of '->close'-method before calling it on the 'RESULTHANDLE'-instance |
14 |
|
# |
15 |
|
# Revision 1.4 2003/03/27 15:31:15 joko |
16 |
|
# fixes to modules regarding new namespace(s) below Data::Mungle::* |
17 |
|
# |
18 |
|
# Revision 1.3 2003/01/31 06:34:49 joko |
19 |
|
# + fixes to 'getNextEntry' and 'getStatus' |
20 |
|
# |
21 |
|
# Revision 1.2 2002/12/05 08:01:26 joko |
22 |
|
# + sub getStatus utilizing isEmpty to determine if result is set/unset and/or filled/unfilled |
23 |
|
# |
24 |
# Revision 1.1 2002/11/29 04:55:45 joko |
# Revision 1.1 2002/11/29 04:55:45 joko |
25 |
# + initial check-in |
# + initial check-in |
26 |
# |
# |
35 |
|
|
36 |
use base ("Data::Storage::Result::Abstract"); |
use base ("Data::Storage::Result::Abstract"); |
37 |
use Data::Dumper; |
use Data::Dumper; |
38 |
|
use Data::Mungle::Compare::Struct qw( isEmpty ); |
39 |
|
|
40 |
sub DESTROY { |
sub DESTROY { |
41 |
my $self = shift; |
my $self = shift; |
42 |
|
|
43 |
|
my $is_object = 0; |
44 |
|
|
45 |
#$logger->debug( __PACKAGE__ . "->" . "DESTROY" ); |
#$logger->debug( __PACKAGE__ . "->" . "DESTROY" ); |
46 |
$self->{RESULTHANDLE} && $self->{RESULTHANDLE}->close(); |
#eval { |
47 |
|
#print "ref: ", ref($self->{RESULTHANDLE}), "\n"; |
48 |
|
|
49 |
|
# object handle destructor |
50 |
|
if ($self->{resulthandle_type} eq 'Tangram::Cursor') { |
51 |
|
#$self->{RESULTHANDLE} && ref($self->{RESULTHANDLE}) && |
52 |
|
#ref($self->{RESULTHANDLE}) && $self->{RESULTHANDLE}->can('close') && $self->{RESULTHANDLE}->close(); |
53 |
|
$self->{RESULTHANDLE}->close(); |
54 |
|
} |
55 |
|
|
56 |
|
# delete ref? |
57 |
|
delete $self->{RESULTHANDLE}; |
58 |
} |
} |
59 |
|
|
60 |
sub getNextEntry { |
sub getNextEntry { |
66 |
# is result already opened? |
# is result already opened? |
67 |
if ($self->{open}) { |
if ($self->{open}) { |
68 |
$self->{entry_count}++; |
$self->{entry_count}++; |
69 |
|
|
70 |
|
# NEW as of 2003-06-24: RESULTHANDLE == ARRAY |
71 |
|
return $self->{RESULTHANDLE}->[$self->{entry_count}] if (ref($self->{RESULTHANDLE}) eq 'ARRAY'); |
72 |
|
|
73 |
return $self->{RESULTHANDLE}->next() |
return $self->{RESULTHANDLE}->next() |
74 |
if $self->{resulthandle_type} eq 'Tangram::Cursor'; |
if $self->{resulthandle_type} eq 'Tangram::Cursor'; |
75 |
return $self->{members}->[$self->{entry_count}] |
return $self->{members}->[$self->{entry_count}] |
76 |
if $self->{resulthandle_type} eq 'Set::Object'; |
if $self->{resulthandle_type} eq 'Set::Object'; |
77 |
|
|
78 |
|
# open result! |
79 |
} else { |
} else { |
|
# open result |
|
|
$self->{open} = 1; |
|
80 |
$self->{entry_count} = 0; |
$self->{entry_count} = 0; |
81 |
|
$self->{open} = 1; |
82 |
|
|
83 |
|
# NEW as of 2003-06-24: RESULTHANDLE == ARRAY |
84 |
|
return $self->{RESULTHANDLE}->[$self->{entry_count}] if (ref($self->{RESULTHANDLE}) eq 'ARRAY'); |
85 |
|
|
86 |
return $self->{RESULTHANDLE}->execute() |
return $self->{RESULTHANDLE}->execute() |
87 |
if $self->{resulthandle_type} eq 'Tangram::Cursor'; |
if $self->{resulthandle_type} eq 'Tangram::Cursor'; |
88 |
#print Dumper($self->{RESULTHANDLE}->members()); exit; |
#print Dumper($self->{RESULTHANDLE}->members()); exit; |
94 |
} |
} |
95 |
} |
} |
96 |
|
|
97 |
sub getStatus { } |
sub getStatus { |
98 |
|
my $self = shift; |
99 |
|
my $status; |
100 |
|
|
101 |
|
$self->{resulthandle_type} ||= ''; |
102 |
|
|
103 |
|
if ($self->{resulthandle_type} eq 'Tangram::Cursor') { |
104 |
|
=pod |
105 |
|
print Dumper($self->{RESULTHANDLE}); |
106 |
|
$status = { |
107 |
|
err => $self->{RESULTHANDLE}->err, |
108 |
|
errstr => $self->{RESULTHANDLE}->errstr, |
109 |
|
state => $self->{RESULTHANDLE}->state, |
110 |
|
}; |
111 |
|
=cut |
112 |
|
} |
113 |
|
if ($self->{resulthandle_type} eq 'Set::Object') { |
114 |
|
#print Dumper($self->{RESULTHANDLE}->members()); |
115 |
|
$status = { |
116 |
|
empty => isEmpty($self->{RESULTHANDLE}), |
117 |
|
}, |
118 |
|
} |
119 |
|
return $status; |
120 |
|
} |
121 |
|
|
122 |
|
|
123 |
1; |
1; |