--- nfo/perl/libs/Data/Storage/Handler/Tangram.pm 2003/04/05 21:24:09 1.31 +++ nfo/perl/libs/Data/Storage/Handler/Tangram.pm 2003/04/08 22:52:22 1.32 @@ -1,8 +1,11 @@ ############################################ # -# $Id: Tangram.pm,v 1.31 2003/04/05 21:24:09 joko Exp $ +# $Id: Tangram.pm,v 1.32 2003/04/08 22:52:22 joko Exp $ # # $Log: Tangram.pm,v $ +# Revision 1.32 2003/04/08 22:52:22 joko +# modified 'querySchema': better behaviour regarding filtering result +# # Revision 1.31 2003/04/05 21:24:09 joko # modified 'sub getChildNodes': now contains code from 'querySchema' # @@ -235,7 +238,10 @@ my $self = shift; my $mode = shift; + my $filter = shift; + $mode ||= 'core'; + $filter ||= 'all'; $logger->debug( __PACKAGE__ . "->getChildNodes($mode)" ); @@ -277,12 +283,12 @@ push @concret_names, $_ if (!Class::Tangram::class_is_abstract($_)); $o_cnt++; } - - my $result = { - all => \@object_names, - concrete => \@concret_names, - }; - return $result; + + if ($filter eq 'all') { + return \@object_names; + } elsif ($filter eq 'concrete') { + return \@concret_names; + } } @@ -554,7 +560,7 @@ # HACK: special case: querying by id does not translate into a common tangram query # just load the object by given id(ent) - if ($query->{criterias}->[0]->{key} eq 'id' && $query->{criterias}->[0]->{op} eq 'eq') { + if ($query->{criterias} && ($query->{criterias}->[0]->{key} eq 'id' && $query->{criterias}->[0]->{op} eq 'eq')) { #print "LOAD!!!", "\n"; #exit; #return Set::Object->new( $self->{COREHANDLE}->load($query->{criterias}->[0]->{val}) );