/[cvs]/nfo/perl/libs/Data/Storage/Handler/Files.pm
ViewVC logotype

Diff of /nfo/perl/libs/Data/Storage/Handler/Files.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by joko, Tue Feb 11 05:17:24 2003 UTC revision 1.5 by joko, Tue May 13 08:06:13 2003 UTC
# Line 2  Line 2 
2  ##    $Id$  ##    $Id$
3  ##    ------------------------------------------------------------------------  ##    ------------------------------------------------------------------------
4  ##    $Log$  ##    $Log$
5    ##    Revision 1.5  2003/05/13 08:06:13  joko
6    ##    filled "sub sendQuery": query xml document via XPath
7    ##
8  ##    Revision 1.4  2003/02/11 05:17:24  joko  ##    Revision 1.4  2003/02/11 05:17:24  joko
9  ##    + fix: childnode metadata now gets set propery  ##    + fix: childnode metadata now gets set propery
10  ##  ##
# Line 25  use base ("Data::Storage::Handler::Abstr Line 28  use base ("Data::Storage::Handler::Abstr
28    
29  use Data::Dumper;  use Data::Dumper;
30  #use Data::Storage::Result::Files;  #use Data::Storage::Result::Files;
31    use Data::Storage::Result::Hash;
32    
33  # get logger instance  # get logger instance
34  my $logger = Log::Dispatch::Config->instance;  my $logger = Log::Dispatch::Config->instance;
# Line 62  sub getFileByName { Line 66  sub getFileByName {
66    return $self->{locator}->{files}->{$name};    return $self->{locator}->{files}->{$name};
67  }  }
68    
69    # Query xml file by default.
70    # FIXME: Move most code one level deeper into Data::Storage::Handler::XML.
71  sub sendQuery {  sub sendQuery {
72    # transform query to searchrules    # transform query to searchrules
73    # addSearchRule( ... )    # addSearchRule( ... )
# Line 69  sub sendQuery { Line 75  sub sendQuery {
75    # addSearchRule( ... )    # addSearchRule( ... )
76    # runSearch( ... )    # runSearch( ... )
77    # returnSearchResult( ... )    # returnSearchResult( ... )
78      
79      my $self = shift;
80      my $query = shift;
81      
82      print __PACKAGE__ . ": sendQuery(" . Dumper($query) . ")";
83      
84        my $file = $query->{node};
85        # NEW [2003-04-23]: DataItem compatibility
86        $file ||= $query->{options}->{GUID};
87        
88        if (!$file) {
89          print "Filename was empty!", "\n";
90          return;
91        }
92      
93        # --- from OEF::YAA::Jobs ---
94        # issue the query
95          
96          # V1 - from YAA::Xyz, hardcoded, won't work here
97          #my $xpq = "*/target[\@name=\"$name\"]";
98          
99          # V2 - more generic: XPath query builder (three way fallback)
100          my $xpq;
101          
102          $xpq = $query->{options}->{filter}->{xpq} if ref $query->{options}->{filter};
103          
104          # map a GUID to a xml-name attribute which is searched anywhere ('*/*')
105          #$xpq = '*/' . $query->{options}->{GUID} if (!$xpq && $query->{options}->{GUID});
106          $xpq = '*/*[@name="' . $query->{options}->{GUID} . '"]' if (!$xpq && $query->{options}->{GUID});
107          
108          $xpq = '*' if !$xpq;
109          #print "xpq: $xpq", "\n";
110          
111          #$xpq = '*/source/select[@key="SOC"]';
112          # decode somehow(?) special escaped quote (") which could reach us as (e.g.):
113          # 'xpq' => '*[@key=\\"SOC\\"]'
114          $xpq =~ s!\\"!"!g;
115          
116          my $mdbe = DesignPattern::Object->fromPackage('Data::Storage::Handler::XML', filename => $file );
117          $mdbe->sendQuery($xpq);
118    
119          # V1 - first attempts
120          #my $subtree = $mdbe->toSimpleTree();
121    
122          # V2 - will cause major behavior change in result!
123          $mdbe->circumflex('result');
124          my $subtree = $mdbe->toEasyTree();
125          $subtree = $subtree->{content}->[0];
126        # --- from OEF::YAA::Jobs ---
127    
128        # V1 - direct mode
129        print "subtree: " . Dumper($subtree);
130        #return $subtree;
131    
132        #print Dumper($query);
133        print "xpq: $xpq", "\n";
134      
135        # V2 - wrapped via a result object providing a more generic api to e.g. iterate through items
136        my $result = Data::Storage::Result::Hash->new( RESULTHANDLE => $subtree );
137        return $result;
138    
139  }  }
140    
141  sub addSearchRule {  sub addSearchRule {
# Line 80  sub runSearch { Line 147  sub runSearch {
147  }  }
148    
149  1;  1;
150    __END__

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed