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