annotate variant_effect_predictor/Bio/DB/Biblio/soap.pm @ 1:d6778b5d8382 draft default tip

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