Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

StDataBaseI.cc

Go to the documentation of this file.
00001 /*************************************************************************** 00002 * 00003 * $Id: StDataBaseI.cc,v 1.2 2001/10/26 20:59:45 porter Exp $ 00004 * 00005 * Author: R. Jeff Porter 00006 *************************************************************************** 00007 * 00008 * Description: Abstract class for Star specific SQL queries 00009 * 00010 *************************************************************************** 00011 * 00012 * $Log: StDataBaseI.cc,v $ 00013 * Revision 1.2 2001/10/26 20:59:45 porter 00014 * fixed new endtime flag from previous checkin. made StDataBaseI available 00015 * at root-cli. 00016 * 00017 * Revision 1.1 2001/01/22 18:37:50 porter 00018 * Update of code needed in next year running. This update has little 00019 * effect on the interface (only 1 method has been changed in the interface). 00020 * Code also preserves backwards compatibility so that old versions of 00021 * StDbLib can read new table structures. 00022 * -Important features: 00023 * a. more efficient low-level table structure (see StDbSql.cc) 00024 * b. more flexible indexing for new systems (see StDbElememtIndex.cc) 00025 * c. environment variable override KEYS for each database 00026 * d. StMessage support & clock-time logging diagnostics 00027 * -Cosmetic features 00028 * e. hid stl behind interfaces (see new *Impl.* files) to again allow rootcint access 00029 * f. removed codes that have been obsolete for awhile (e.g. db factories) 00030 * & renamed some classes for clarity (e.g. tableQuery became StDataBaseI 00031 * and mysqlAccessor became StDbSql) 00032 * 00033 * 00034 **************************************************************************/ 00035 #include "StDataBaseI.hh" 00036 #include "StDbManager.hh" 00037 #include <string.h> 00038 00039 #ifdef __ROOT__ 00040 ClassImp(StDataBaseI) 00041 #endif 00043 00044 StDataBaseI::StDataBaseI() : mdbType(dbStDb), mdbDomain(dbDomainUnknown), mdbName(0), mtypeName(0), mdomainName(0), mdbStore(dbV00) { }; 00045 00046 StDataBaseI::StDataBaseI(StDbType type, StDbDomain domain) : mdbName(0), mtypeName(0), mdomainName(0), mdbStore(dbV00) { setDataBase(type,domain); } 00047 00048 StDataBaseI::StDataBaseI(const char* typeName, const char* domainName) : mdbName(0), mtypeName(0), mdomainName(0), mdbStore(dbV00) { setDataBase(typeName,domainName); } 00049 00051 StDataBaseI::~StDataBaseI(){ 00052 if(mdbName) delete [] mdbName; 00053 if(mtypeName) delete [] mtypeName; 00054 if(mdomainName) delete [] mdomainName; 00055 } 00056 00058 void 00059 StDataBaseI::setDataBase(StDbType type, StDbDomain domain){ 00060 setDbType(type); 00061 setDbDomain(domain); 00062 char* name= StDbManager::Instance()->getDbTypeName(type); 00063 setTypeName(name); if(name) delete [] name; 00064 name= StDbManager::Instance()->getDbDomainName(domain); 00065 setDomainName(name); if(name) delete [] name; 00066 name=StDbManager::Instance()->getDbName(mtypeName,mdomainName); 00067 setDbName(name); if(name) delete [] name; 00068 } 00069 00071 void 00072 StDataBaseI::setDataBase(const char* typeName, const char* domainName){ 00073 setTypeName(typeName); 00074 setDomainName(domainName); 00075 char* name = StDbManager::Instance()->getDbName(mtypeName,mdomainName); 00076 setDbName(name); if(name) delete [] name; 00077 setDbType(StDbManager::Instance()->getDbType(typeName)); 00078 setDbDomain(StDbManager::Instance()->getDbDomain(domainName)); 00079 } 00080 00082 void 00083 StDataBaseI::setDataBase(const char* dbName){ 00084 setDbName(dbName); 00085 StDbManager::Instance()->getDataBaseInfo(dbName,mtypeName,mdomainName); 00086 setDbType(StDbManager::Instance()->getDbType(mtypeName)); 00087 setDbDomain(StDbManager::Instance()->getDbDomain(mdomainName)); 00088 } 00089 00091 void 00092 StDataBaseI::setDbName(const char* dbName) { 00093 00094 if(dbName){ 00095 if(mdbName) delete [] mdbName; 00096 mdbName = new char[strlen(dbName)+1]; 00097 strcpy(mdbName,dbName); 00098 } 00099 } 00100 00102 void 00103 StDataBaseI::setTypeName(const char* typeName) { 00104 00105 if(typeName){ 00106 if(mtypeName) delete [] mtypeName; 00107 mtypeName = new char[strlen(typeName)+1]; 00108 strcpy(mtypeName,typeName); 00109 } 00110 } 00111 00113 void 00114 StDataBaseI::setDomainName(const char* domainName) { 00115 00116 if(domainName){ 00117 if(mdomainName) delete [] mdomainName; 00118 mdomainName = new char[strlen(domainName)+1]; 00119 strcpy(mdomainName,domainName); 00120 } 00121 } 00122 00124 char* 00125 StDataBaseI::getDbName() const { 00126 00127 char* retVal=0; 00128 if(mdbName) { 00129 retVal = new char[strlen(mdbName)+1]; 00130 strcpy(retVal,mdbName); 00131 } 00132 return retVal; 00133 } 00134 00136 char* 00137 StDataBaseI::getTypeName() const { 00138 00139 char* retVal=0; 00140 if(mtypeName) { 00141 retVal = new char[strlen(mtypeName)+1]; 00142 strcpy(retVal,mtypeName); 00143 } 00144 return retVal; 00145 } 00146 00148 char* 00149 StDataBaseI::getDomainName() const { 00150 00151 char* retVal=0; 00152 if(mdomainName) { 00153 retVal = new char[strlen(mdomainName)+1]; 00154 strcpy(retVal,mdomainName); 00155 } 00156 return retVal; 00157 } 00158 00160 00161 char* StDataBaseI::printDbName() { return mdbName; } 00162 char* StDataBaseI::printTypeName() { return mtypeName; } 00163 char* StDataBaseI::printDomainName() { return mdomainName; } 00164 bool StDataBaseI::checkDbName(const char* name) { 00165 return (strcmp(name,mdbName)==0) ? true : false; 00166 } 00167 bool StDataBaseI::checkDbType(const char* name) { 00168 return (strcmp(name,mtypeName)==0) ? true : false; 00169 } 00170 bool StDataBaseI::checkDbDomain(const char* name) { 00171 return (strcmp(name,mdomainName)==0) ? true : false; 00172 }

Generated on Thu Aug 24 14:45:25 2006 for Doxygen by doxygen 1.3.7