annotate variant_effect_predictor/Bio/EnsEMBL/DBSQL/MiscSetAdaptor.pm @ 3:d30fa12e4cc5 default tip

Merge heads 2:a5976b2dce6f and 1:09613ce8151e which were created as a result of a recently fixed bug.
author devteam <devteam@galaxyproject.org>
date Mon, 13 Jan 2014 10:38:30 -0500
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 =head1 LICENSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 This software is distributed under a modified Apache license.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 For license details, please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 =head1 CONTACT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 developers list at <dev@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 <helpdesk@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 Bio::EnsEMBL::DBSQL::MiscSetAdaptor - Provides database interaction for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 Bio::EnsEMBL::MiscSet objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 my $msa = $registry->get_adaptor( 'Human', 'Core', 'MiscSet' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 my $misc_set = $msa->fetch_by_dbID(1234);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 $misc_set = $msa->fetch_by_code('clone');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 This class provides database interactivity for MiscSet objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 MiscSets are used to classify MiscFeatures into groups.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 =head1 METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 package Bio::EnsEMBL::DBSQL::MiscSetAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 use Bio::EnsEMBL::MiscSet;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 use Bio::EnsEMBL::DBSQL::BaseAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 use Bio::EnsEMBL::Utils::Exception qw(throw warning);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 @ISA = qw(Bio::EnsEMBL::DBSQL::BaseAdaptor);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 Arg [...] : Superclass args. See Bio::EnsEMBL::DBSQL::BaseAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 Description: Instantiates a Bio::EnsEMBL::DBSQL::MiscSetAdaptor and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 caches the contents of the MiscSet table.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 Returntype : Bio::EnsEMBL::MiscSet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 Caller : MiscFeatureAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 my $class = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 my $self = $class->SUPER::new(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 $self->{'_id_cache'} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 $self->{'_code_cache'} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 # cache the entire contents of the misc set table
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 # the table is small and it removes the need to repeatedly query the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 # table or join to the table
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 $self->fetch_all();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 =head2 fetch_all
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 Arg [1] : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 Example : foreach my $ms (@{$msa->fetch_all()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 print $ms->code(), ' ', $ms->name(), "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 Description: Retrieves every MiscSet defined in the DB.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 NOTE: In a multi-species database, this method will
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 return all the entries matching the search criteria, not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 just the ones associated with the current species.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 Returntype : listref of Bio::EnsEMBL::MiscSets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 sub fetch_all {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 my $sth = $self->prepare
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 ('SELECT misc_set_id, code, name, description, max_length FROM misc_set');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 my ($dbID, $code, $name, $desc, $max_len);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 $sth->bind_columns(\$dbID, \$code, \$name, \$desc, \$max_len);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 my @all;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 while($sth->fetch()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 my $ms = Bio::EnsEMBL::MiscSet->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 (-DBID => $dbID,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 -ADAPTOR => $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 -CODE => $code,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 -NAME => $name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 -DESCRIPTION => $desc,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 -LONGEST_FEATURE => $max_len);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 $self->{'_id_cache'}->{$dbID} = $ms;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 $self->{'_code_cache'}->{lc($code)} = $ms;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 push @all, $ms;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 return \@all;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 =head2 fetch_by_dbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 Arg [1] : int $dbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 The internal identifier of the misc set to retrieve
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 Example : my $ms = $msa->fetch_by_dbID($dbID);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 Description: Retrieves a misc set via its internal identifier
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 Returntype : Bio::EnsEMBL::MiscSet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 sub fetch_by_dbID {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 my $dbID = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 if(!$self->{'_id_cache'}->{$dbID}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 # on a cache miss reread the whole table and reload the cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 $self->fetch_all();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 return $self->{'_id_cache'}->{$dbID};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 =head2 fetch_by_code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 Arg [1] : string $code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 The unique code of the MiscSet to retrieve
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 Example : my $ms = $msa->fetch_by_code('clone');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 Description: Retrieves a MiscSet via its code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 Returntype : Bio::EnsEMBL::MiscSet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 sub fetch_by_code {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 my $code = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 if(!$self->{'_code_cache'}->{lc($code)}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 # on cache miss, reread whole table and reload cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 $self->fetch_all();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 return $self->{'_code_cache'}->{lc($code)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 =head2 store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 Arg [1] : list of MiscSets @mist_sets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 Example : $misc_set_adaptor->store(@misc_sets);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 Description: Stores a list of MiscSets in the database, and sets the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 dbID and adaptor attributes of the stored sets.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 Exceptions : throw on incorrect arguments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 warning if a feature is already stored in this database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 Caller : MiscFeatureAdaptor::store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 sub store {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 my @misc_sets = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 # we use 'insert ignore' so that inserts can occur safely on the farm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 # otherwise 2 processes could try to insert at the same time and one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 # would fail
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 my $sth = $self->prepare
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 ("INSERT IGNORE INTO misc_set " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 "SET code = ?, " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 " name = ?, " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 " description = ?, " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 " max_length = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 my $db = $self->db();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 SET:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 foreach my $ms (@misc_sets) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 if(!ref($ms) || !$ms->isa('Bio::EnsEMBL::MiscSet')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 throw("List of MiscSet arguments expected.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 if($ms->is_stored($db)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 warning("MiscSet [".$ms->dbID."] is already stored in this database.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 next SET;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 $sth->bind_param(1,$ms->code,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 $sth->bind_param(2,$ms->name,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 $sth->bind_param(3,$ms->description,SQL_LONGVARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 $sth->bind_param(4,$ms->longest_feature,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 my $num_inserted = $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 my $dbID;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 if($num_inserted == 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 # insert failed because set with this code already exists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 my $sth2 = $self->prepare("SELECT misc_set_id from misc_set " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 "WHERE code = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 $sth2->bind_param(1,$ms->code,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 $sth2->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 if($sth2->rows() != 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 throw("Could not retrieve or store MiscSet, code=[".$ms->code."]\n".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 "Wrong database user/permissions?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 ($dbID) = $sth2->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 $dbID = $sth->{'mysql_insertid'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 $ms->dbID($dbID);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 $ms->adaptor($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 # update the internal caches
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 $self->{'_id_cache'}->{$dbID} = $ms;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 $self->{'_code_cache'}->{lc($ms->code())} = $ms;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 =head2 update
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 Arg [1] : Bio::EnsEMBL::MiscSet $miscset
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 Example : $adaptor->update($miscset)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 Description: Updates this misc_set in the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 Returntype : int 1 if update is performed, undef if it is not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 Exceptions : throw if arg is not an misc_set object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 Caller : ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 sub update {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 my $m = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 if (!ref($m) || !$m->isa('Bio::EnsEMBL::MiscSet')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 throw("Expected Bio::EnsEMBL::MiscSet argument.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 if(!$m->is_stored($self->db())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 my $sth = $self->prepare("UPDATE misc_set ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 "SET code =?, name =?, description = ?, max_length = ? ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 "WHERE misc_set_id = ?");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 $sth->bind_param(1,$m->code,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 $sth->bind_param(2,$m->name,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 $sth->bind_param(3,$m->description,SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 $sth->bind_param(4,$m->longest_feature,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 $sth->bind_param(5,$m->dbID,SQL_INTEGER);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 # update the internal caches
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 $self->{'_id_cache'}->{$m->dbID} = $m;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 $self->{'_code_cache'}->{lc($m->code())} = $m;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 1;