--- nfo/perl/libs/Data/Storage/Result/Tangram.pm 2003/04/09 07:11:01 1.6 +++ nfo/perl/libs/Data/Storage/Result/Tangram.pm 2003/06/25 22:59:59 1.7 @@ -1,8 +1,11 @@ ############################################ # -# $Id: Tangram.pm,v 1.6 2003/04/09 07:11:01 joko Exp $ +# $Id: Tangram.pm,v 1.7 2003/06/25 22:59:59 joko Exp $ # # $Log: Tangram.pm,v $ +# Revision 1.7 2003/06/25 22:59:59 joko +# tweaked behaviour: only "->close" result if it is of type "Tangram::Cursor" +# # Revision 1.6 2003/04/09 07:11:01 joko # minor fix # @@ -36,8 +39,22 @@ sub DESTROY { my $self = shift; + + my $is_object = 0; + #$logger->debug( __PACKAGE__ . "->" . "DESTROY" ); - $self->{RESULTHANDLE} && $self->{RESULTHANDLE}->can('close') && $self->{RESULTHANDLE}->close(); + #eval { + #print "ref: ", ref($self->{RESULTHANDLE}), "\n"; + + # object handle destructor + if ($self->{resulthandle_type} eq 'Tangram::Cursor') { + #$self->{RESULTHANDLE} && ref($self->{RESULTHANDLE}) && + #ref($self->{RESULTHANDLE}) && $self->{RESULTHANDLE}->can('close') && $self->{RESULTHANDLE}->close(); + $self->{RESULTHANDLE}->close(); + } + + # delete ref? + delete $self->{RESULTHANDLE}; } sub getNextEntry { @@ -49,6 +66,10 @@ # is result already opened? if ($self->{open}) { $self->{entry_count}++; + + # NEW as of 2003-06-24: RESULTHANDLE == ARRAY + return $self->{RESULTHANDLE}->[$self->{entry_count}] if (ref($self->{RESULTHANDLE}) eq 'ARRAY'); + return $self->{RESULTHANDLE}->next() if $self->{resulthandle_type} eq 'Tangram::Cursor'; return $self->{members}->[$self->{entry_count}] @@ -59,6 +80,9 @@ $self->{entry_count} = 0; $self->{open} = 1; + # NEW as of 2003-06-24: RESULTHANDLE == ARRAY + return $self->{RESULTHANDLE}->[$self->{entry_count}] if (ref($self->{RESULTHANDLE}) eq 'ARRAY'); + return $self->{RESULTHANDLE}->execute() if $self->{resulthandle_type} eq 'Tangram::Cursor'; #print Dumper($self->{RESULTHANDLE}->members()); exit;