1 /* @include ensdatabaseadaptor ************************************************ 2 ** 3 ** Ensembl Database Adaptor functions 4 ** 5 ** @author Copyright (C) 1999 Ensembl Developers 6 ** @author Copyright (C) 2006 Michael K. Schuster 7 ** @version $Revision: 1.28 $ 8 ** @modified 2009 by Alan Bleasby for incorporation into EMBOSS core 9 ** @modified $Date: 2012/08/05 10:37:32 $ 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 ENSDATABASEADAPTOR_H 30 #define ENSDATABASEADAPTOR_H 31 32 /* ========================================================================= */ 33 /* ============================= include files ============================= */ 34 /* ========================================================================= */ 35 36 #include "ensdatabaseconnection.h" 37 38 AJ_BEGIN_DECLS 39 40 41 42 43 /* ========================================================================= */ 44 /* =============================== constants =============================== */ 45 /* ========================================================================= */ 46 47 extern const char *ensKDatabaseadaptorRegCollection; 48 extern const char *ensKDatabaseadaptorRegMulti; 49 extern const char *ensKDatabaseadaptorRegSpecies; 50 51 52 53 54 /* @const EnsMDatabaseadaptorGroups ******************************************* 55 ** 56 ** Number of Ensembl Database Adaptor groups 57 ** 58 ** The number of Ensembl Database Adaptor groups has to correlate with the 59 ** EnsEDatabaseadaptorGroup enumeration list and the 60 ** static const char *databaseadaptorGroup[] array. It is used by the 61 ** ensregistry.[ch] module. 62 ** 63 ******************************************************************************/ 64 65 #define EnsMDatabaseadaptorGroups 17 66 67 68 69 70 /* @enum EnsEDatabaseadaptorGroup ********************************************* 71 ** 72 ** Ensembl Database Adaptor Group enumeration 73 ** 74 ** @value ensEDatabaseadaptorGroupNULL Null 75 ** @value ensEDatabaseadaptorGroupCore Core 76 ** @value ensEDatabaseadaptorGroupVega Vega 77 ** @value ensEDatabaseadaptorGroupOtherFeatures Other features 78 ** @value ensEDatabaseadaptorGroupCopyDNA DNA reference 79 ** @value ensEDatabaseadaptorGroupGeneticVariation Genetic variation 80 ** @value ensEDatabaseadaptorGroupFunctionalGenomics Functional genomics 81 ** @value ensEDatabaseadaptorGroupComparativeGenomics Comparative genomics 82 ** @value ensEDatabaseadaptorGroupOntology Ontology 83 ** @value ensEDatabaseadaptorGroupQualityCheck Quality check 84 ** @value ensEDatabaseadaptorGroupPipeline Pipleine 85 ** @value ensEDatabaseadaptorGroupHive Hive 86 ** @value ensEDatabaseadaptorGroupCoreExpressionEST Core expression EST 87 ** @value ensEDatabaseadaptorGroupCoreExpressionGNF Core expression GNF 88 ** @value ensEDatabaseadaptorGroupAncestral Ancestral 89 ** @value ensEDatabaseadaptorGroupWebsite Webiste 90 ** @value ensEDatabaseadaptorGroupProduction Production 91 ** @@ 92 ******************************************************************************/ 93 94 typedef enum EnsODatabaseadaptorGroup 95 { 96 ensEDatabaseadaptorGroupNULL, 97 ensEDatabaseadaptorGroupCore, 98 ensEDatabaseadaptorGroupVega, 99 ensEDatabaseadaptorGroupOtherFeatures, 100 ensEDatabaseadaptorGroupCopyDNA, 101 ensEDatabaseadaptorGroupGeneticVariation, 102 ensEDatabaseadaptorGroupFunctionalGenomics, 103 ensEDatabaseadaptorGroupComparativeGenomics, 104 ensEDatabaseadaptorGroupOntology, 105 ensEDatabaseadaptorGroupQualityCheck, 106 ensEDatabaseadaptorGroupPipeline, 107 ensEDatabaseadaptorGroupHive, 108 ensEDatabaseadaptorGroupCoreExpressionEST, 109 ensEDatabaseadaptorGroupCoreExpressionGNF, 110 ensEDatabaseadaptorGroupAncestral, 111 ensEDatabaseadaptorGroupWebsite, 112 ensEDatabaseadaptorGroupProduction 113 } EnsEDatabaseadaptorGroup; 114 115 116 117 118 /* ========================================================================= */ 119 /* ============================== public data ============================== */ 120 /* ========================================================================= */ 121 122 /* @data EnsPDatabaseadaptor ************************************************** 123 ** 124 ** Ensembl Database Adaptor. 125 ** 126 ** Holds the Ensembl Database Group, the species name and the Ensembl 127 ** Database Connection object connected to this SQL database. 128 ** 129 ** @alias EnsSDatabaseadaptor 130 ** @alias EnsODatabaseadaptor 131 ** 132 ** @alias EnsPAttributeadaptor 133 ** @alias EnsPDatabaseentryadaptor 134 ** @alias EnsPGvgenotypeadaptor 135 ** @alias EnsPGvsynonymadaptor 136 ** @alias EnsPMarkermaplocationadaptor 137 ** @alias EnsPMarkersynonymadaptor 138 ** @alias EnsPSupportingfeatureadaptor 139 ** 140 ** @attr Databaseconnection [EnsPDatabaseconnection] 141 ** Ensembl Database Connection 142 ** @attr Species [AjPStr] Species 143 ** @attr SpeciesNames [AjPList] 144 ** AJAX List of AJAX String (species name) objects 145 ** @attr Group [EnsEDatabaseadaptorGroup] 146 ** Ensembl Database Adaptor Group enumeration 147 ** @attr Multispecies [AjBool] Multi-species database 148 ** @attr Identifier [ajuint] Species identifier, defaults to 1U 149 ** @attr Padding [ajuint] Padding to alignment boundary 150 ** @@ 151 ******************************************************************************/ 152 153 typedef struct EnsSDatabaseadaptor 154 { 155 EnsPDatabaseconnection Databaseconnection; 156 AjPStr Species; 157 AjPList SpeciesNames; 158 EnsEDatabaseadaptorGroup Group; 159 AjBool Multispecies; 160 ajuint Identifier; 161 ajuint Padding; 162 } EnsODatabaseadaptor; 163 164 #define EnsPDatabaseadaptor EnsODatabaseadaptor* 165 166 167 168 169 /* ========================================================================= */ 170 /* =========================== public functions ============================ */ 171 /* ========================================================================= */ 172 173 /* 174 ** Prototype definitions 175 */ 176 177 /* Ensembl Database Adaptor */ 178 179 EnsPDatabaseadaptor ensRegistryGetDatabaseadaptor( 180 EnsEDatabaseadaptorGroup dbag, 181 AjPStr alias); 182 183 EnsPDatabaseadaptor ensRegistryGetReferenceadaptor(EnsPDatabaseadaptor dba); 184 185 EnsPDatabaseadaptor ensDatabaseadaptorNewDatabasename( 186 EnsPDatabaseconnection dbc, 187 AjPStr database); 188 189 EnsPDatabaseadaptor ensDatabaseadaptorNewIni(EnsPDatabaseconnection dbc, 190 AjPStr database, 191 AjPStr species, 192 EnsEDatabaseadaptorGroup dbag, 193 AjBool multi, 194 ajuint identifier); 195 196 EnsPDatabaseadaptor ensDatabaseadaptorNewUrl(const AjPStr url); 197 198 void ensDatabaseadaptorDel(EnsPDatabaseadaptor *Pdba); 199 200 EnsPDatabaseconnection ensDatabaseadaptorGetDatabaseconnection( 201 const EnsPDatabaseadaptor dba); 202 203 EnsEDatabaseadaptorGroup ensDatabaseadaptorGetGroup( 204 const EnsPDatabaseadaptor dba); 205 206 ajuint ensDatabaseadaptorGetIdentifier( 207 const EnsPDatabaseadaptor dba); 208 209 AjBool ensDatabaseadaptorGetMultispecies( 210 const EnsPDatabaseadaptor dba); 211 212 AjPStr ensDatabaseadaptorGetSpecies( 213 const EnsPDatabaseadaptor dba); 214 215 const AjPList ensDatabaseadaptorLoadSpeciesnames(EnsPDatabaseadaptor dba); 216 217 AjBool ensDatabaseadaptorSetDatabaseconnection(EnsPDatabaseadaptor dba, 218 EnsPDatabaseconnection dbc); 219 220 AjBool ensDatabaseadaptorSetGroup(EnsPDatabaseadaptor dba, 221 EnsEDatabaseadaptorGroup dbag); 222 223 AjBool ensDatabaseadaptorSetIdentifier(EnsPDatabaseadaptor dba, 224 ajuint identifier); 225 226 AjBool ensDatabaseadaptorSetMultispecies(EnsPDatabaseadaptor dba, 227 AjBool multi); 228 229 AjBool ensDatabaseadaptorSetSpecies(EnsPDatabaseadaptor dba, AjPStr species); 230 231 AjBool ensDatabaseadaptorTrace(const EnsPDatabaseadaptor dba, ajuint level); 232 233 AjBool ensDatabaseadaptorMatch(const EnsPDatabaseadaptor dba1, 234 const EnsPDatabaseadaptor dba2); 235 236 AjBool ensDatabaseadaptorMatchcomponents(const EnsPDatabaseadaptor dba, 237 const EnsPDatabaseconnection dbc, 238 const AjPStr species, 239 EnsEDatabaseadaptorGroup dbag, 240 AjBool multi, 241 ajuint identifier); 242 243 AjBool ensDatabaseadaptorDisconnect(EnsPDatabaseadaptor dba); 244 245 AjBool ensDatabaseadaptorEscapeC(EnsPDatabaseadaptor dba, 246 char **Ptxt, 247 const AjPStr str); 248 249 AjBool ensDatabaseadaptorEscapeS(EnsPDatabaseadaptor dba, 250 AjPStr *Pstr, 251 const AjPStr str); 252 253 AjBool ensDatabaseadaptorSqlstatementDel(EnsPDatabaseadaptor dba, 254 AjPSqlstatement *Psqls); 255 256 AjPSqlstatement ensDatabaseadaptorSqlstatementNew(EnsPDatabaseadaptor dba, 257 const AjPStr statement); 258 259 AjBool ensDatabaseadaptorFetchSchemabuild(EnsPDatabaseadaptor dba, 260 AjPStr *Pbuild); 261 262 EnsEDatabaseadaptorGroup ensDatabaseadaptorGroupFromStr(const AjPStr group); 263 264 const char *ensDatabaseadaptorGroupToChar(EnsEDatabaseadaptorGroup dbag); 265 266 /* 267 ** End of prototype definitions 268 */ 269 270 271 272 273 AJ_END_DECLS 274 275 #endif /* !ENSDATABASEADAPTOR_H */ 276