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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.7 - (show annotations)
Fri Jun 6 03:57:25 2003 UTC (21 years, 1 month ago) by joko
Branch: MAIN
Changes since 1.6: +8 -4 lines
disabled debugging output

1 ## ------------------------------------------------------------------------
2 ## $Id: Files.pm,v 1.6 2003/05/13 16:34:26 joko Exp $
3 ## ------------------------------------------------------------------------
4 ## $Log: Files.pm,v $
5 ## Revision 1.6 2003/05/13 16:34:26 joko
6 ## don't use GUID when building xpq filter
7 ##
8 ## Revision 1.5 2003/05/13 08:06:13 joko
9 ## filled "sub sendQuery": query xml document via XPath
10 ##
11 ## Revision 1.4 2003/02/11 05:17:24 joko
12 ## + fix: childnode metadata now gets set propery
13 ##
14 ## Revision 1.3 2003/01/19 03:15:43 joko
15 ## + modified header
16 ##
17 ## Revision 1.2 2003/01/19 02:14:11 joko
18 ## + proposal for more abstract filesystem-query-interface
19 ##
20 ## Revision 1.1 2002/12/03 15:52:53 joko
21 ## + initial check-in
22 ## ------------------------------------------------------------------------
23
24
25 package Data::Storage::Handler::Files;
26
27 use strict;
28 use warnings;
29
30 use base ("Data::Storage::Handler::Abstract");
31
32 use Data::Dumper;
33 #use Data::Storage::Result::Files;
34 use Data::Storage::Result::Hash;
35
36 # get logger instance
37 my $logger = Log::Dispatch::Config->instance;
38
39
40 sub getMetaInfo {
41 my $self = shift;
42 $logger->debug( __PACKAGE__ . "->getMetaInfo()" );
43 return;
44 return {
45 'disconnectMethod' => 'disconnect',
46 };
47 }
48
49 sub connect {
50 my $self = shift;
51 #$self->{COREHANDLE} = $self;
52 #$self->{COREHANDLE} = 1;
53 }
54
55 sub getChildNodes {
56 my $self = shift;
57 #my @nodes;
58 #print "======\n";
59 $logger->debug( __PACKAGE__ . "->getChildNodes()" );
60 #print Dumper($self->{locator});
61 my @keys = keys %{$self->{locator}->{files}};
62 $self->{meta}->{childnodes} = \@keys;
63 return $self->{locator}->{files};
64 }
65
66 sub getFileByName {
67 my $self = shift;
68 my $name = shift;
69 return $self->{locator}->{files}->{$name};
70 }
71
72 # Query xml file by default.
73 # FIXME: Move most code one level deeper into Data::Storage::Handler::XML.
74 sub sendQuery {
75 # transform query to searchrules
76 # addSearchRule( ... )
77 # addSearchRule( ... )
78 # addSearchRule( ... )
79 # runSearch( ... )
80 # returnSearchResult( ... )
81
82 my $self = shift;
83 my $query = shift;
84
85 #print STDERR __PACKAGE__ . ": sendQuery(" . Dumper($query) . ")", "\n";
86
87 my $file = $query->{node};
88 # NEW [2003-04-23]: DataItem compatibility
89 $file ||= $query->{options}->{GUID};
90
91 if (!$file) {
92 print "Filename was empty!", "\n";
93 return;
94 }
95
96 # --- from OEF::YAA::Jobs ---
97 # issue the query
98
99 # V1 - from YAA::Xyz, hardcoded, won't work here
100 #my $xpq = "*/target[\@name=\"$name\"]";
101
102 # V2 - more generic: XPath query builder (three way fallback)
103 my $xpq;
104
105 $xpq = $query->{options}->{filter}->{xpq} if ref $query->{options}->{filter};
106
107 # map a GUID to a xml-name attribute which is searched anywhere ('*/*')
108 #$xpq = '*/' . $query->{options}->{GUID} if (!$xpq && $query->{options}->{GUID});
109 #$xpq = '*/*[@name="' . $query->{options}->{GUID} . '"]' if (!$xpq && $query->{options}->{GUID});
110
111 $xpq = '*' if !$xpq;
112 #print "xpq: $xpq", "\n";
113
114 #$xpq = '*/source/select[@key="SOC"]';
115 # decode somehow(?) special escaped quote (") which could reach us as (e.g.):
116 # 'xpq' => '*[@key=\\"SOC\\"]'
117 $xpq =~ s!\\"!"!g;
118
119 my $mdbe = DesignPattern::Object->fromPackage('Data::Storage::Handler::XML', filename => $file );
120 $mdbe->sendQuery($xpq);
121
122 # V1 - first attempts
123 #my $subtree = $mdbe->toSimpleTree();
124
125 # V2 - will cause major behavior change in result!
126 $mdbe->circumflex('result');
127 my $subtree = $mdbe->toEasyTree();
128 $subtree = $subtree->{content}->[0];
129 # --- from OEF::YAA::Jobs ---
130
131 # V1 - direct mode
132 #print STDERR "subtree: " . Dumper($subtree);
133 #return $subtree;
134
135 #print Dumper($query);
136 #print STDERR "file: $file", "\n";
137 #print STDERR "xpq: $xpq", "\n";
138
139 # V2 - wrapped via a result object providing a more generic api to e.g. iterate through items
140 my $result = Data::Storage::Result::Hash->new( RESULTHANDLE => $subtree );
141 return $result;
142
143 }
144
145 sub addSearchRule {
146
147 }
148
149 sub runSearch {
150
151 }
152
153 1;
154 __END__

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