annotate variant_effect_predictor/Bio/DB/Biblio/soap.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: soap.pm,v 1.5 2002/10/22 07:45:14 lapp Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module Bio::DB::Biblio::soap.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Martin Senger <senger@ebi.ac.uk>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 # For copyright and disclaimer see below.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 Bio::DB::Biblio::soap - A SOAP-based access to a bibliographic query service
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Do not use this object directly, it is recommended to access it and use
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 it through the I<Bio::Biblio> module:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 use Bio::Biblio;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 my $biblio = new Bio::Biblio (-access => 'soap');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 This object contains the real implementation of a Bibliographic Query
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 Service as defined in L<Bio::DB::BiblioI> - using a SOAP protocol
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 to access a WebService (a remote server) that represents a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 bibliographic repository.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 Bioperl modules. Send your comments and suggestions preferably to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 the Bioperl mailing list. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 http://bioperl.org/MailList.shtml - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 of the bugs and their resolution. Bug reports can be submitted via
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 email or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 bioperl-bugs@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 =head1 AUTHOR
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 Martin Senger (senger@ebi.ac.uk)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 =head1 COPYRIGHT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 Copyright (c) 2002 European Bioinformatics Institute. All Rights Reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 This module is free software; you can redistribute it and/or modify
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 it under the same terms as Perl itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 =head1 DISCLAIMER
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 This software is provided "as is" without warranty of any kind.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 =head1 BUGS AND LIMITATIONS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 =over
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 =item *
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 Methods returning a boolean value (I<has_next>, I<exists> and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 I<contains>) can be used only with SOAP::Lite version 0.52 and newer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 (probably due to a bug in the older SOAP::Lite).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 =item *
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 It does not use WSDL. Coming soon...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 =item *
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 There is an open question to discuss: should the service return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 citations as type I<string> or rather as type I<base64>? What is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 faster? What is better for keeping non-ASCII characters untouched? How
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 the decision would be influenced if the transparent compression
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 support is introduced?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 =item *
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 More testing and debugging needed to ensure that returned citations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 are properly transferred even if they contain foreign characters.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 =back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 The main documentation details are to be found in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 L<Bio::DB::BiblioI>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 Here is the rest of the object methods. Internal methods are preceded
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 with an underscore _.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 package Bio::DB::Biblio::soap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 use vars qw(@ISA $VERSION $Revision $DEFAULT_SERVICE $DEFAULT_NAMESPACE);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 use Bio::Biblio; # TBD: ?? WHY SHOULD I DO THIS ??
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 use SOAP::Lite
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 on_fault => sub {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 my $soap = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 my $res = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 my $msg =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 ref $res ? "--- SOAP FAULT ---\n" . $res->faultcode . " " . $res->faultstring
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 : "--- TRANSPORT ERROR ---\n" . $soap->transport->status;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 Bio::DB::Biblio::soap->throw ( -text => $msg );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 @ISA = qw(Bio::Biblio);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 BEGIN {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 # set the version for version checking
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 $VERSION = do { my @r = (q$Revision: 1.5 $ =~ /\d+/g); sprintf "%d.%-02d", @r };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 $Revision = q$Id: soap.pm,v 1.5 2002/10/22 07:45:14 lapp Exp $;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 # where to go...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 $DEFAULT_SERVICE = 'http://industry.ebi.ac.uk/soap/openBQS';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 # ...and what to find there
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 $DEFAULT_NAMESPACE = 'http://industry.ebi.ac.uk/openBQS';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 # -----------------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 =head2 _initialize
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 Usage : my $obj = new Bio::Biblio (-access => 'soap' ...);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 (_initialize is internally called from this constructor)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 Returns : nothing interesting
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 Args : This module recognises and uses following arguments:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 -namespace => 'urn'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 The namespace used by the WebService that is being
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 accessed. It is a string which guarantees its world-wide
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 uniqueness - therefore it often has a style of a URL -
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 but it does not mean that such pseudo-URL really exists.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 Default is 'http://industry.ebi.ac.uk/openBQS'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 (which well corresponds with the default '-location' -
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 see module Bio::Biblio).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 -destroy_on_exit => '0'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 Default value is '1' which means that all Bio::Biblio
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 objects - when being finalised - will send a request
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 to the remote WebService to forget the query collections
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 they represent.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 If you change it to '0' make sure that you know the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 query collection identification - otherwise you will
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 not be able to re-established connection with it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 This can be done by calling method get_collection_id.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 -collection_id => '...'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 It defines what query collection will this object work
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 with. Use this argument when you know a collection ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 of an existing query collection and when you wish to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 re-established connection with it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 By default, the collection IDs are set automatically
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 by the query methods - they return Bio::Biblio objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 already having a collection ID.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 A missing or undefined collection ID means that the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 object represents the whole bibliographic repository
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 (which again means that some methods, like get_all,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 will be probably refused).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 -soap => a SOAP::Lite object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 Usually all Bio::Biblio objects share an instance of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 the underlying SOAP::Lite module. But you are free
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 to have more - perhaps with different characteristics.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 See the code for attributes of the default SOAP::Lite
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 -httpproxy => 'http://server:port'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 In addition to the 'location' parameter, you may need
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 to specify also a location/URL of a HTTP proxy server
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 (if your site requires one).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 Additionally, the main module Bio::Biblio recognises
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 also:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 -access => '...'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 -location => '...'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 It populates calling object with the given arguments, and then - for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 some attributes and only if they are not yet populated - it assigns
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 some default values.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 This is an actual new() method (except for the real object creation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 and its blessing which is done in the parent class Bio::Root::Root in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 method _create_object).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 Note that this method is called always as an I<object> method (never as
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 a I<class> method) - and that the object who calls this method may
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 already be partly initiated (from Bio::Biblio::new method); so if you
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 need to do some tricks with the 'class invocation' you need to change
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 Bio::Biblio::new method, not this one.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 sub _initialize {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 my ($self, @args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 # make a hashtable from @args
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 my %param = @args;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 @param { map { lc $_ } keys %param } = values %param; # lowercase keys
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 # copy all @args into this object (overwriting what may already be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 # there) - changing '-key' into '_key'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 my $new_key;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 foreach my $key (keys %param) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 ($new_key = $key) =~ s/^-/_/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 $self->{ $new_key } = $param { $key };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 # finally add default values for those keys who have default value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 # and who are not yet in the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 $self->{'_location'} = $DEFAULT_SERVICE unless $self->{'_location'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 $self->{'_namespace'} = $DEFAULT_NAMESPACE unless $self->{'_namespace'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 $self->{'_destroy_on_exit'} = 1 unless defined $self->{'_destroy_on_exit'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 unless ($self->{'_soap'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 if (defined $self->{'_httpproxy'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 $self->{'_soap'} = SOAP::Lite
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 -> uri ($self->{'_namespace'})
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 -> proxy ($self->{'_location'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 proxy => ['http' => $self->{'_httpproxy'}]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 $self->{'_soap'} = SOAP::Lite
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 -> uri ($self->{'_namespace'})
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 -> proxy ($self->{'_location'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 # -----------------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 # objects representing query collections are being destroyed if they
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 # have attribute '_destroy_on_exit' set to true - which is a default
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 # value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 sub DESTROY {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 my $soap = $self->{'_soap'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 my $destroy = $self->{'_destroy_on_exit'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 return unless $destroy;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 my $collection_id = $self->{'_collection_id'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 return unless $collection_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 # ignore all errors here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 $soap->destroy (SOAP::Data->type (string => $collection_id));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 # some methods must be called with an argument containing a collection
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 # ID; here we return a proper error message explaining it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 sub _no_id_msg {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 my $package = ref $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 my $method = (caller(1))[3];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 my $strip_method = $method;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 $strip_method =~ s/^$package\:\://;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 return <<"END_OF_MSG";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 Method '$method' works only if its object has a query collection ID.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 Perhaps you need to use:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 \tnew Bio::Biblio (-collection_id => '1234567')->$strip_method;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 or to obtain a collection ID indirectly from a query method:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 \tnew Bio::Biblio->find ('keyword')->$strip_method;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 END_OF_MSG
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 # some methods do not work with older SOAP::Lite version; here we
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 #return message explaining it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 sub _old_version_msg {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 my $method = (caller(1))[3];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 return <<"END_OF_MSG";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 Method '$method' works only with SOAP::Lite
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 version 0.52 and newer (the problem is with returning a boolean value from the server).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 END_OF_MSG
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 # some controlled vocabulary methods needs two parameters; here we
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 # return message explaining it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 sub _two_params_msg {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 my $method = (caller(1))[3];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 return <<"END_OF_MSG";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 Method '$method' expects two parameters: vocabulary name and a value.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 END_OF_MSG
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 # some controlled vocabulary methods needs a vocabulary name; here we
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 # return message explaining it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 sub _missing_name_msg {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 my $method = (caller(1))[3];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 return <<"END_OF_MSG";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 Method '$method' expects vocabulary name as parameter.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 END_OF_MSG
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 # return a copy of a given array, with all its elements replaced
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 # with the SOAP-Data objects defining elements type as 'string'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 sub _as_strings {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 my ($ref_input_array) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 my (@result) = map { SOAP::Data->new (type => 'string', value => $_) } @$ref_input_array;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 return \@result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 # ---------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 # Here are the methods implementing Bio::DB::BiblioI interface
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 # (documentation is in Bio::DB::BiblioI)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 # ---------------------------------------------------------------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 sub get_collection_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 $self->{'_collection_id'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 sub get_count {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 my $soap = $self->{'_soap'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 my ($collection_id) = $self->{'_collection_id'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 if ($collection_id) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 $soap->getBibRefCount (SOAP::Data->type (string => $collection_id))->result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 $soap->getBibRefCount->result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 # try: 94033980
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 sub get_by_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 my ($self, $citation_id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 $self->throw ("Citation ID is expected as a parameter of method 'get_by_id'.")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 unless $citation_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 my $soap = $self->{'_soap'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 $soap->getById (SOAP::Data->type (string => $citation_id))->result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 sub find {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 my ($self, $keywords, $attrs) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 my (@keywords, @attrs);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 # $keywords can be a comma-delimited scalar or a reference to an array
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 if ($keywords) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 my $ref = ref $keywords;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 @keywords = split (/,/, $keywords) unless $ref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 @keywords = @$keywords if $ref =~ /ARRAY/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 $self->throw ("No keywords given in 'find' method.\n")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 unless (@keywords);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 # ...and the same with $attrs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 if ($attrs) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 my $ref = ref $attrs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 @attrs = split (/,/, $attrs) unless $ref;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 @attrs = @$attrs if $ref =~ /ARRAY/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 my $soap = $self->{'_soap'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 my $collection_id = $self->{'_collection_id'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 my $new_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 if ($collection_id) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 if (@attrs) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 $new_id = $soap->find (SOAP::Data->type (string => $collection_id),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 &_as_strings (\@keywords),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 &_as_strings (\@attrs))->result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 $new_id = $soap->find (SOAP::Data->type (string => $collection_id),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 &_as_strings (\@keywords))->result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 if (@attrs) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 $new_id = $soap->find (&_as_strings (\@keywords),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 &_as_strings (\@attrs))->result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 $new_id = $soap->find (&_as_strings (\@keywords))->result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 # clone itself but change the collection ID to a new one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 return $self->new (-collection_id => $new_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 -parent_collection_d => $collection_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 sub get_all_ids {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 my $soap = $self->{'_soap'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 my ($collection_id) = $self->{'_collection_id'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 $self->throw ($self->_no_id_msg) unless $collection_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 $soap->getAllIDs (SOAP::Data->type (string => $collection_id))->result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 sub get_all {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 my $soap = $self->{'_soap'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 my ($collection_id) = $self->{'_collection_id'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 $self->throw ($self->_no_id_msg) unless $collection_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 $soap->getAllBibRefs (SOAP::Data->type (string => $collection_id))->result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 sub has_next {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 my $soap = $self->{'_soap'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 my ($collection_id) = $self->{'_collection_id'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 $self->throw ($self->_no_id_msg) unless $collection_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 $self->throw ($self->_old_version_msg) if $SOAP::Lite::VERSION < 0.52;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 $soap->hasNext (SOAP::Data->type (string => $collection_id))->result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 sub get_next {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 my $soap = $self->{'_soap'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 my ($collection_id) = $self->{'_collection_id'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 $self->throw ($self->_no_id_msg) unless $collection_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 my $ra = $soap->getNext (SOAP::Data->type (string => $collection_id))->result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 $self->{'_collection_id'} = shift @{ $ra };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 shift @{ $ra };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 sub get_more {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 my ($self, $how_many) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 my $soap = $self->{'_soap'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 my $collection_id = $self->{'_collection_id'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 $self->throw ($self->_no_id_msg) unless $collection_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 unless (defined ($how_many) and $how_many =~ /^\d+$/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 warn ("Method 'get_more' expects a numeric argument. Changing to 1.\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 $how_many = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 unless ($how_many > 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 warn ("Method 'get_more' expects a positive argument. Changing to 1.\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 $how_many = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 my $ra = $soap->getMore (SOAP::Data->type (string => $collection_id),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 SOAP::Data->type (int => $how_many))->result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 $self->{'_collection_id'} = shift @{ $ra };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 $ra;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 sub reset_retrieval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 my $soap = $self->{'_soap'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 my ($collection_id) = $self->{'_collection_id'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 $self->throw ($self->_no_id_msg) unless $collection_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 $self->{'_collection_id'} = $soap->resetRetrieval (SOAP::Data->type (string => $collection_id))->result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 sub exists {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 my $soap = $self->{'_soap'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 my ($collection_id) = $self->{'_collection_id'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 $self->throw ($self->_no_id_msg) unless $collection_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 $self->throw ($self->_old_version_msg) if $SOAP::Lite::VERSION < 0.52;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 $soap->exists (SOAP::Data->type (string => $collection_id))->result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 sub destroy {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 my $soap = $self->{'_soap'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 my ($collection_id) = $self->{'_collection_id'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 $self->throw ($self->_no_id_msg) unless $collection_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 $soap->destroy (SOAP::Data->type (string => $collection_id));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 sub get_vocabulary_names {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 my $soap = $self->{'_soap'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 $soap->getAllVocabularyNames->result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 sub contains {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 my ($self, $vocabulary_name, $value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 my $soap = $self->{'_soap'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 $self->throw ($self->_old_version_msg) if $SOAP::Lite::VERSION < 0.52;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 $self->throw ($self->_two_params_msg)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 unless defined $vocabulary_name and defined $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 $soap->contains (SOAP::Data->type (string => $vocabulary_name),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 SOAP::Data->type (string => $value))->result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 sub get_entry_description {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 my ($self, $vocabulary_name, $value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 my $soap = $self->{'_soap'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 $self->throw ($self->_two_params_msg)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 unless defined $vocabulary_name and defined $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 $soap->getEntryDescription (SOAP::Data->type (string => $vocabulary_name),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 SOAP::Data->type (string => $value))->result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 sub get_all_values {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 my ($self, $vocabulary_name) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 my $soap = $self->{'_soap'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 $self->throw ($self->_missing_name_msg)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 unless defined $vocabulary_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 $soap->getAllValues (SOAP::Data->type (string => $vocabulary_name))->result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 sub get_all_entries {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 my ($self, $vocabulary_name) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 my $soap = $self->{'_soap'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 $self->throw ($self->_missing_name_msg)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 unless defined $vocabulary_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 $soap->getAllEntries (SOAP::Data->type (string => $vocabulary_name))->result;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 =head2 VERSION and Revision
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 Usage : print $Bio::DB::Biblio::soap::VERSION;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 print $Bio::DB::Biblio::soap::Revision;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 =head2 Defaults
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 Usage : print $Bio::DB::Biblio::soap::DEFAULT_SERVICE;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 print $Bio::DB::Biblio::soap::DEFAULT_NAMESPACE;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 __END__