--- nfo/perl/libs/Data/Storage/Handler/AutoSymbol.pm 2003/04/18 17:20:21 1.1 +++ nfo/perl/libs/Data/Storage/Handler/AutoSymbol.pm 2003/05/13 08:02:13 1.2 @@ -1,13 +1,27 @@ ## ------------------------------------------------------------------------- -## $Id: AutoSymbol.pm,v 1.1 2003/04/18 17:20:21 joko Exp $ +## $Id: AutoSymbol.pm,v 1.2 2003/05/13 08:02:13 joko Exp $ ## ------------------------------------------------------------------------- ## $Log: AutoSymbol.pm,v $ +## Revision 1.2 2003/05/13 08:02:13 joko +## removed xml stuff +## ## Revision 1.1 2003/04/18 17:20:21 joko ## intial commit ## ## ------------------------------------------------------------------------- +=pod + +=head1 DESCRIPTION + + Should handle primitives (scalar, HASH, ARRAY) transparently. + After that: Enhance to FILEHANDLE and/or OBJECT. + + +=cut + + package Data::Storage::Handler::AutoSymbol; use strict; @@ -21,51 +35,59 @@ use Data::Dumper; +use Data::Storage::Result::Hash; -sub sendQuery_tmp { +sub getChildNodes { my $self = shift; - my $xpq = shift; - my $options = shift; - $self->log( "xpq='$xpq'", 'debug' ); + my $storage = $self->{reference}; - # trace - #print Dumper($self); - #exit; - - my $file = $self->{filename}; - - if (!$file) { - $self->log("No filename given.", 'error'); - return; + my $nodes; + if (not ref $storage) { + $nodes = [ $storage ]; + } elsif (ref $storage eq 'HASH') { + $nodes = [ sort keys %$storage ]; } - if (! -e $file) { - $self->log("File not found: '$file'.", 'error'); - return; - } + return $nodes; - #print "file: $file", "\n"; - #print "xpq: $xpq", "\n"; - - # filter nodes by xpath-query - my $xp = XML::XPath->new( filename => $file ); - my $nodeset = $xp->find($xpq); +} + +sub sendQuery { + my $self = shift; + my $query = shift; + my $options = shift; + + #print "query: ", Dumper($query); - # build result xml - my $buffer; - foreach my $node ($nodeset->get_nodelist) { - $buffer .= XML::XPath::XMLParser::as_string($node) . "\n\n"; + my $slot; + # by list + #$slot = $query->{node}; + # by item + $slot = $query->{options}->{GUID}; + + my $storage = $self->{reference}; + + my $payload; + if (not ref $storage) { + $payload = $storage; + } elsif (ref $storage eq 'HASH') { + if ($slot) { + # TODO: enhance using ref_slot + $payload = $storage->{$slot}; + } else { + $payload = $storage; } - #$buffer .= ''; - #$buffer = "$buffer"; - - # trace - #print $buffer, "\n"; - #exit; + } + + #print "payload: ", Dumper($payload); + #return; - $self->{buffer} = $buffer; + if ($payload) { + my $result = Data::Storage::Result::Hash->new( RESULTHANDLE => $payload ); + return $result; + } } @@ -79,21 +101,6 @@ return not defined $self->{buffer}; } -sub getChildNodes { - my $self = shift; - - my $storage = $self->{storage}; - - my $nodes; - if (not ref $storage) { - $nodes = [ $storage ]; - } elsif (ref $storage eq 'HASH') { - $nodes = [ sort keys %$storage ]; - } - - return $nodes; - -} 1; __END__