00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123 #ifndef STDBMANAGER_HH
00124 #define STDBMANAGER_HH
00125
00126 #include <string.h>
00127 #include "StString.h"
00128
00129 #include "stdb_streams.h"
00130
00131
00132 #include "StDbDefs.hh"
00133
00134 #include "StDbMessService.hh"
00135
00136
00137 class StDbServer;
00138 class StDataBaseI;
00139 class dbEnvList;
00140 class StDbNode;
00141 class StDbConfigNode;
00142 class StDbTable;
00143
00144 #ifdef __ROOT__
00145 #include "TROOT.h"
00146 #endif
00147
00148 class StDbManager {
00149
00150 protected:
00151
00152 bool misVerbose;
00153 bool misQuiet;
00154 StDbMessService* Messenger;
00155 char* muserName;
00156 char* mpWord;
00157
00158 bool misTimeLogged;
00159
00160 StDbManager();
00161 static StDbManager* mInstance;
00162
00163 char* mstringDup(const char* str);
00164
00165 public:
00166
00167
00168 static StDbManager* Instance();
00169 virtual ~StDbManager();
00170
00171
00172
00173 virtual StDbConfigNode* initConfig(const char* dbName) =0;
00174 virtual StDbConfigNode* initConfig(const char* dbName,
00175 const char* configName, int opt=0) =0;
00176 virtual StDbConfigNode* initConfig(StDbType type, StDbDomain domain) =0;
00177 virtual StDbConfigNode* initConfig(StDbType type, StDbDomain domain,
00178 const char* configName, int opt=0) =0;
00179 virtual StDbConfigNode* initConfig(StDbType type, StDbDomain domain,
00180 unsigned int requestTime, int opt=0) =0;
00181 virtual StDbConfigNode* initConfig(const char* dbName,
00182 unsigned int requestTime, int opt=0) =0;
00183
00184 virtual char* getConfigNodeName(StDbType t, StDbDomain d) =0;
00185 virtual char* getExternalVersion(StDbType t,StDbDomain d) =0;
00186 virtual dbEnvList* getEnvList(const char* name) =0;
00187
00188
00189 virtual StDbTable* newDbTable(const char* dbName,const char* tName)=0;
00190 virtual StDbTable* newDbTable(StDbNode* node) =0;
00191
00192
00193 virtual StDataBaseI* findDb(StDbType type, StDbDomain domain) =0;
00194 virtual StDataBaseI* findDb(const char* dbType, const char* dbDomain) =0;
00195 virtual StDataBaseI* findDb(const char* databaseName) =0;
00196 virtual StDbServer* findServer(StDbType type, StDbDomain domain) =0;
00197 virtual StDbServer* findServer(StDbNode* node) =0;
00198 virtual StDbServer* findServer(const char* type, const char* domain) =0;
00199 virtual StDbServer* findServer(const char* databaseName) =0;
00200 virtual StDbServer* findDefaultServer() =0;
00201
00202
00203 virtual char* getDbTypeName(StDbType type) =0;
00204 virtual char* getDbDomainName(StDbDomain domain) =0;
00205 virtual StDbType getDbType(const char* typeName) =0;
00206 virtual StDbDomain getDbDomain(const char* domainName) =0;
00207 virtual char* getDbName(const char* typeName, const char* domName)=0;
00208 virtual char* printDbName(StDbType type, StDbDomain domain) =0;
00209
00210 virtual void blacklistDbDomain(const char* domainName) =0;
00211
00212
00213 virtual void setRequestTime(unsigned int time) =0;
00214 virtual void setRequestTime(const char* time) =0;
00215 virtual unsigned int getUnixRequestTime() =0;
00216 virtual char* getDateRequestTime() =0;
00217 virtual unsigned int getUnixCheckTime() =0;
00218 virtual char* getDateCheckTime() =0;
00219 virtual void setStoreTime(unsigned int time) =0;
00220 virtual void setStoreTime(const char* time) =0;
00221 virtual unsigned int getUnixStoreTime() =0;
00222 virtual char* getDateStoreTime() =0;
00223
00224
00225 virtual bool getDataBaseInfo(const char* dbname,
00226 char*& type, char*& domain) =0;
00227 virtual bool getDataBaseInfo(const char* dbname,
00228 StDbType& type, StDbDomain& domain) =0;
00229
00230
00231 virtual bool IsValid(StDbTable* table) =0;
00232 virtual bool fetchDbTable(StDbTable* table) =0;
00233 virtual bool fetchDbTable(StDbTable* table, char* whereClause) =0;
00234 virtual bool fetchAllTables(StDbConfigNode* node) =0;
00235 virtual bool storeDbTable(StDbTable* table, bool commitWhenDone=true) =0;
00236 virtual bool storeAllTables(StDbConfigNode* node,
00237 bool commitWhenDone=true) =0;
00238 virtual int storeConfig(StDbConfigNode* node, int currentID,
00239 int& configID, bool commitWhenDone=true) =0;
00240
00241
00242 virtual bool rollBackAllTables(StDbConfigNode* node) =0;
00243 virtual bool rollBackAllNodes(StDbConfigNode* node) =0;
00244 virtual bool rollBack(StDbNode* node) =0;
00245 virtual bool rollBack(StDbTable* table) =0;
00246 virtual bool commitAllTables(StDbConfigNode* node) =0;
00247 virtual bool commitAllNodes(StDbConfigNode* node) =0;
00248
00249
00250 virtual void closeAllConnections() =0;
00251 virtual void closeAllConnections(StDbConfigNode* node) =0;
00252 virtual void closeConnection(StDbNode* node) =0;
00253
00254 virtual void printTimeStats() =0;
00255
00256
00257 virtual bool IsVerbose() const;
00258 virtual void setVerbose(bool isVerbose);
00259 virtual bool IsQuiet() const ;
00260 virtual void setQuiet(bool isQuiet);
00261 virtual void turnOffTimeLogging();
00262 virtual void updateMessLevel();
00263 virtual void setMessenger(StDbMessService* service);
00264 virtual StDbMessService* getMessenger();
00265 virtual int printInfo(const char* m1, StDbMessLevel ml,
00266 int lineNumber=0, const char* className=" ",
00267 const char* methodName=" ") ;
00268 virtual int printInfo(const char* m1, const char* m2,
00269 StDbMessLevel ml, int lineNumber=0,
00270 const char* className=" ",
00271 const char* methodName=" ");
00272
00273 virtual char* userName();
00274 virtual char* pWord();
00275 virtual void setUser(const char* userName, const char* pWord);
00276
00277
00278 #ifdef __ROOT__
00279 ClassDef(StDbManager,0)
00280 #endif
00281
00282 };
00283
00284 inline bool StDbManager::IsVerbose() const { return misVerbose;};
00285 inline void StDbManager::setVerbose(bool isVerbose){
00286 misVerbose=isVerbose;
00287 if(isVerbose)misQuiet=false;
00288 updateMessLevel();
00289 };
00290 inline bool StDbManager::IsQuiet() const { return misQuiet;};
00291 inline void StDbManager::setQuiet(bool isQuiet){
00292 misQuiet=isQuiet;
00293 if(isQuiet) misVerbose=false;
00294 updateMessLevel();
00295 }
00296 inline void StDbManager::updateMessLevel(){
00297 Messenger->setMessLevel(dbMWarn);
00298 if(misQuiet)Messenger->setMessLevel(dbMErr);
00299 if(misVerbose)Messenger->setMessLevel(dbMDebug);
00300 }
00301 inline void StDbManager::setMessenger(StDbMessService* service){
00302 delete Messenger;
00303 Messenger=service;
00304 updateMessLevel();
00305 }
00306 inline StDbMessService* StDbManager::getMessenger(){ return Messenger; }
00307 inline char* StDbManager::userName() { return muserName; }
00308 inline char* StDbManager::pWord() { return mpWord; }
00309
00310 #endif
00311
00312
00313
00314
00315
00316
00317
00318
00319