1 /* @include ensqcdatabase *****************************************************
2 **
3 ** Ensembl Quality Check Database functions
4 **
5 ** @author Copyright (C) 1999 Ensembl Developers
6 ** @author Copyright (C) 2006 Michael K. Schuster
7 ** @version $Revision: 1.19 $
8 ** @modified 2009 by Alan Bleasby for incorporation into EMBOSS core
9 ** @modified $Date: 2012/02/04 10:30:24 $ by $Author: mks $
10 ** @@
11 **
12 ** This library is free software; you can redistribute it and/or
13 ** modify it under the terms of the GNU Lesser General Public
14 ** License as published by the Free Software Foundation; either
15 ** version 2.1 of the License, or (at your option) any later version.
16 **
17 ** This library is distributed in the hope that it will be useful,
18 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
19 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20 ** Lesser General Public License for more details.
21 **
22 ** You should have received a copy of the GNU Lesser General Public
23 ** License along with this library; if not, write to the Free Software
24 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
25 ** MA  02110-1301,  USA.
26 **
27 ******************************************************************************/
28 
29 #ifndef ENSQCDATABASE_H
30 #define ENSQCDATABASE_H
31 
32 /* ========================================================================= */
33 /* ============================= include files ============================= */
34 /* ========================================================================= */
35 
36 #include "ensanalysis.h"
37 
38 AJ_BEGIN_DECLS
39 
40 
41 
42 
43 /* ========================================================================= */
44 /* =============================== constants =============================== */
45 /* ========================================================================= */
46 
47 /* @enum EnsEQcdatabaseClass **************************************************
48 **
49 ** Ensembl Quality Check Database Class enumeration
50 **
51 ** @value ensEQcdatabaseClassNULL Null
52 ** @value ensEQcdatabaseClassUnknown Unknown
53 ** @value ensEQcdatabaseClassReference Reference database
54 ** @value ensEQcdatabaseClassTest Test database
55 ** @value ensEQcdatabaseClassBoth Reference and test database
56 ** @value ensEQcdatabaseClassGenome Genome database
57 ** @@
58 ******************************************************************************/
59 
60 typedef enum EnsOQcdatabaseClass
61 {
62     ensEQcdatabaseClassNULL,
63     ensEQcdatabaseClassUnknown,
64     ensEQcdatabaseClassReference,
65     ensEQcdatabaseClassTest,
66     ensEQcdatabaseClassBoth,
67     ensEQcdatabaseClassGenome
68 } EnsEQcdatabaseClass;
69 
70 
71 
72 
73 /* @enum EnsEQcdatabaseType ***************************************************
74 **
75 ** Ensembl Quality Check Database Type enumeration
76 **
77 ** @value ensEQcdatabaseTypeNULL Null
78 ** @value ensEQcdatabaseTypeUnknown Unknown sequence database
79 ** @value ensEQcdatabaseTypeDNA DNA sequence database
80 ** @value ensEQcdatabaseTypeProtein Protein sequence database
81 ** @@
82 ******************************************************************************/
83 
84 typedef enum EnsOQcdatabaseType
85 {
86     ensEQcdatabaseTypeNULL,
87     ensEQcdatabaseTypeUnknown,
88     ensEQcdatabaseTypeDNA,
89     ensEQcdatabaseTypeProtein
90 } EnsEQcdatabaseType;
91 
92 
93 
94 
95 /* ========================================================================= */
96 /* ============================== public data ============================== */
97 /* ========================================================================= */
98 
99 /* @data EnsPQcdatabaseadaptor ************************************************
100 **
101 ** Ensembl Quality Check Database Adaptor
102 **
103 ** @alias EnsSQcdatabaseadaptor
104 ** @alias EnsOQcdatabaseadaptor
105 **
106 ** @attr Adaptor [EnsPBaseadaptor] Ensembl Base Adaptor
107 ** @attr CacheByIdentifier [AjPTable] Identifier cache
108 ** @attr CacheByName [AjPTable] Name cache
109 ** @@
110 ******************************************************************************/
111 
112 typedef struct EnsSQcdatabaseadaptor
113 {
114     EnsPBaseadaptor Adaptor;
115     AjPTable CacheByIdentifier;
116     AjPTable CacheByName;
117 } EnsOQcdatabaseadaptor;
118 
119 #define EnsPQcdatabaseadaptor EnsOQcdatabaseadaptor*
120 
121 
122 
123 
124 /* @data EnsPQcdatabase *******************************************************
125 **
126 ** Ensembl Quality Check Database
127 **
128 ** @alias EnsSQcdatabase
129 ** @alias EnsOQcdatabase
130 **
131 ** @attr Use [ajuint] Use counter
132 ** @cc Bio::EnsEMBL::Storable
133 ** @attr Identifier [ajuint] SQL database-internal identifier
134 ** @attr Adaptor [EnsPQcdatabaseadaptor] Ensembl Database Adaptor
135 ** @cc Bio::EnsEMBL::QC::SequenceDB
136 ** @cc 'sequence_db' SQL table
137 ** @attr Analysis [EnsPAnalysis] Ensembl Analysis
138 ** @attr Name [AjPStr] Name
139 ** @attr Release [AjPStr] Release
140 ** @attr Date [AjPStr] Date
141 ** @attr Format [AjPStr] Format
142 ** @attr Class [EnsEQcdatabaseClass] Class
143 ** @attr Type [EnsEQcdatabaseType] Type
144 ** @attr DatabaseadaptorSpecies [AjPStr] Ensembl Database Adaptor species
145 ** @attr DatabaseadaptorGroup [EnsEDatabaseadaptorGroup] Ensembl Database
146 ** Adaptor Group enumeration
147 ** @attr Padding [ajuint] Padding to alignment boundary
148 ** @attr Host [AjPStr] Host
149 ** @attr Directory [AjPStr] Directory
150 ** @attr File [AjPStr] File
151 ** @attr UrlExternal [AjPStr] External URL
152 ** @attr UrlInternal [AjPStr] Internal URL
153 ** @@
154 ******************************************************************************/
155 
156 typedef struct EnsSQcdatabase
157 {
158     ajuint Use;
159     ajuint Identifier;
160     EnsPQcdatabaseadaptor Adaptor;
161     EnsPAnalysis Analysis;
162     AjPStr Name;
163     AjPStr Release;
164     AjPStr Date;
165     AjPStr Format;
166     EnsEQcdatabaseClass Class;
167     EnsEQcdatabaseType Type;
168     AjPStr DatabaseadaptorSpecies;
169     EnsEDatabaseadaptorGroup DatabaseadaptorGroup;
170     ajuint Padding;
171     AjPStr Host;
172     AjPStr Directory;
173     AjPStr File;
174     AjPStr UrlExternal;
175     AjPStr UrlInternal;
176 } EnsOQcdatabase;
177 
178 #define EnsPQcdatabase EnsOQcdatabase*
179 
180 
181 
182 
183 /* ========================================================================= */
184 /* =========================== public functions ============================ */
185 /* ========================================================================= */
186 
187 /*
188 ** Prototype definitions
189 */
190 
191 /* Ensembl Quality Check Database */
192 
193 EnsPQcdatabase ensQcdatabaseNewCpy(const EnsPQcdatabase qcdb);
194 
195 EnsPQcdatabase ensQcdatabaseNewIni(EnsPQcdatabaseadaptor qcdba,
196                                    ajuint identifier,
197                                    EnsPAnalysis analysis,
198                                    AjPStr name,
199                                    AjPStr release,
200                                    AjPStr date,
201                                    AjPStr format,
202                                    EnsEQcdatabaseClass qcdbc,
203                                    EnsEQcdatabaseType qcdbt,
204                                    AjPStr dbaspecies,
205                                    EnsEDatabaseadaptorGroup dbag,
206                                    AjPStr host,
207                                    AjPStr directory,
208                                    AjPStr file,
209                                    AjPStr externalurl);
210 
211 EnsPQcdatabase ensQcdatabaseNewRef(EnsPQcdatabase qcdb);
212 
213 void ensQcdatabaseDel(EnsPQcdatabase *Pqcdb);
214 
215 EnsPQcdatabaseadaptor ensQcdatabaseGetAdaptor(
216     const EnsPQcdatabase qcdb);
217 
218 EnsPAnalysis ensQcdatabaseGetAnalysis(
219     const EnsPQcdatabase qcdb);
220 
221 EnsEQcdatabaseClass ensQcdatabaseGetClass(
222     const EnsPQcdatabase qcdb);
223 
224 EnsEDatabaseadaptorGroup ensQcdatabaseGetDatabaseadaptorGroup(
225     const EnsPQcdatabase qcdb);
226 
227 AjPStr ensQcdatabaseGetDatabaseadaptorSpecies(
228     const EnsPQcdatabase qcdb);
229 
230 AjPStr ensQcdatabaseGetDate(
231     const EnsPQcdatabase qcdb);
232 
233 AjPStr ensQcdatabaseGetDirectory(
234     const EnsPQcdatabase qcdb);
235 
236 AjPStr ensQcdatabaseGetFile(
237     const EnsPQcdatabase qcdb);
238 
239 AjPStr ensQcdatabaseGetFormat(
240     const EnsPQcdatabase qcdb);
241 
242 AjPStr ensQcdatabaseGetHost(
243     const EnsPQcdatabase qcdb);
244 
245 ajuint ensQcdatabaseGetIdentifier(
246     const EnsPQcdatabase qcdb);
247 
248 AjPStr ensQcdatabaseGetName(
249     const EnsPQcdatabase qcdb);
250 
251 AjPStr ensQcdatabaseGetRelease(
252     const EnsPQcdatabase qcdb);
253 
254 EnsEQcdatabaseType ensQcdatabaseGetType(
255     const EnsPQcdatabase qcdb);
256 
257 AjPStr ensQcdatabaseGetUrlExternal(
258     const EnsPQcdatabase qcdb);
259 
260 AjPStr ensQcdatabaseGetUrlInternal(
261     const EnsPQcdatabase qcdb);
262 
263 AjBool ensQcdatabaseSetAdaptor(EnsPQcdatabase qcdb,
264                                EnsPQcdatabaseadaptor qcdba);
265 
266 AjBool ensQcdatabaseSetAnalysis(EnsPQcdatabase qcdb,
267                                 EnsPAnalysis analysis);
268 
269 AjBool ensQcdatabaseSetClass(EnsPQcdatabase qcdb,
270                              EnsEQcdatabaseClass qcdbc);
271 
272 AjBool ensQcdatabaseSetDatabaseadaptorGroup(EnsPQcdatabase qcdb,
273                                             EnsEDatabaseadaptorGroup dbag);
274 
275 AjBool ensQcdatabaseSetDatabaseadaptorSpecies(EnsPQcdatabase qcdb,
276                                               AjPStr species);
277 
278 AjBool ensQcdatabaseSetDate(EnsPQcdatabase qcdb,
279                             AjPStr date);
280 
281 AjBool ensQcdatabaseSetDirectory(EnsPQcdatabase qcdb,
282                                  AjPStr directory);
283 
284 AjBool ensQcdatabaseSetFile(EnsPQcdatabase qcdb,
285                             AjPStr file);
286 
287 AjBool ensQcdatabaseSetFormat(EnsPQcdatabase qcdb,
288                               AjPStr format);
289 
290 AjBool ensQcdatabaseSetHost(EnsPQcdatabase qcdb,
291                             AjPStr host);
292 
293 AjBool ensQcdatabaseSetIdentifier(EnsPQcdatabase qcdb,
294                                   ajuint identifier);
295 
296 AjBool ensQcdatabaseSetName(EnsPQcdatabase qcdb,
297                             AjPStr name);
298 
299 AjBool ensQcdatabaseSetRelease(EnsPQcdatabase qcdb,
300                                AjPStr release);
301 
302 AjBool ensQcdatabaseSetType(EnsPQcdatabase qcdb,
303                             EnsEQcdatabaseType qcdbt);
304 
305 AjBool ensQcdatabaseSetUrlExternal(EnsPQcdatabase qcdb,
306                                    AjPStr url);
307 
308 AjBool ensQcdatabaseSetUrlInternal(EnsPQcdatabase qcdb,
309                                    AjPStr url);
310 
311 AjBool ensQcdatabaseTrace(const EnsPQcdatabase qcdb, ajuint level);
312 
313 size_t ensQcdatabaseCalculateMemsize(const EnsPQcdatabase qcdb);
314 
315 AjBool ensQcdatabaseMatch(const EnsPQcdatabase qcdb1,
316                           const EnsPQcdatabase qcdb2);
317 
318 EnsEQcdatabaseClass ensQcdatabaseClassFromStr(const AjPStr classstr);
319 
320 const char *ensQcdatabaseClassToChar(EnsEQcdatabaseClass qcdbc);
321 
322 EnsEQcdatabaseType ensQcdatabaseTypeFromStr(const AjPStr typestr);
323 
324 const char *ensQcdatabaseTypeToChar(EnsEQcdatabaseType qcdbt);
325 
326 /* Ensembl Quality Check Database Adaptor */
327 
328 EnsPQcdatabaseadaptor ensRegistryGetQcdatabaseadaptor(
329     EnsPDatabaseadaptor dba);
330 
331 EnsPQcdatabaseadaptor ensQcdatabaseadaptorNew(
332     EnsPDatabaseadaptor dba);
333 
334 void ensQcdatabaseadaptorDel(EnsPQcdatabaseadaptor *Pqcdba);
335 
336 EnsPBaseadaptor ensQcdatabaseadaptorGetBaseadaptor(
337     EnsPQcdatabaseadaptor qcdba);
338 
339 EnsPDatabaseadaptor ensQcdatabaseadaptorGetDatabaseadaptor(
340     EnsPQcdatabaseadaptor qcdba);
341 
342 AjBool ensQcdatabaseadaptorFetchAllbyClasstype(EnsPQcdatabaseadaptor qcdba,
343                                                EnsEQcdatabaseClass qcdbc,
344                                                EnsEQcdatabaseType qcdbt,
345                                                AjPList qcdbs);
346 
347 AjBool ensQcdatabaseadaptorFetchByIdentifier(EnsPQcdatabaseadaptor qcdba,
348                                              ajuint identifier,
349                                              EnsPQcdatabase *Pqcdb);
350 
351 AjBool ensQcdatabaseadaptorFetchByName(EnsPQcdatabaseadaptor qcdba,
352                                        const AjPStr name,
353                                        const AjPStr release,
354                                        EnsPQcdatabase *Pqcdb);
355 
356 AjBool ensQcdatabaseadaptorDelete(EnsPQcdatabaseadaptor qcdba,
357                                   EnsPQcdatabase qcdb);
358 
359 AjBool ensQcdatabaseadaptorStore(EnsPQcdatabaseadaptor qcdba,
360                                  EnsPQcdatabase qcdb);
361 
362 AjBool ensQcdatabaseadaptorUpdate(EnsPQcdatabaseadaptor qcdba,
363                                   const EnsPQcdatabase qcdb);
364 
365 
366 /*
367 ** End of prototype definitions
368 */
369 
370 
371 
372 
373 AJ_END_DECLS
374 
375 #endif /* !ENSQCDATABASE_H */
376