Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

cDatabase.h

Go to the documentation of this file.
00001 /******************************************************************************/
00002 /*                                                                            */
00003 /* POLiTe - Persistent Object Library Test                                    */
00004 /*                                        Ph.D. Thesis by Mgr. Michal Kopecky */
00005 /*                                                                            */
00006 /* Charles University Prague                                                  */
00007 /*                                                                            */
00008 /******************************************************************************/
00009 /*                                                                            */
00010 /* File name: ... cDatabase.h                                                 */
00011 /* Module: ...... Database Abstraction Layer                                  */
00012 /*                                                                            */
00013 /******************************************************************************/
00014 
00015 #ifndef __C_DATABASE_H__
00016 #define __C_DATABASE_H__
00017 
00018 // Standard Header(s)
00019 #include <fstream.h>
00020 
00021 // Common POLiTe Header(s)
00022 #include <lDefs.h>
00023 #include <lExceptions.h>
00024 
00025 class DLL_External Database
00026 {
00027 #ifdef POLITE_TEST_FRIEND
00028         friend POLITE_TEST_FRIEND;
00029 #endif // POLITE_TEST_FRIEND
00030 
00031 friend class Connection;
00032 friend class ObjectBuffer;
00033 
00034 protected:
00035         unsigned short _Strategies;
00036         char *_ConnectString;
00037         class Connection *_Connections[MAX_CONNECTION_PER_DATABASE];
00038         int _FreeConnections[MAX_CONNECTION_PER_DATABASE];
00039         int _FirstFreeConnection;
00040         static class Connection *_AllConnections[MAX_CONNECTION];
00041         static int _FreeAllConnections[MAX_CONNECTION];
00042         static int _FirstFreeAllConnection;
00043 
00044         bool _FindFreeConnectionHandles(int &LocHandle, int &GlobHandle);
00045         void _DisposeConnectionHandles(int &LocHandle, int &GlobHandle);
00046 
00047         virtual bool _Commit();
00048         virtual bool _Rollback();
00049 
00050 public:
00051         Database(const char * const ConnectString = NULL);
00052         ~Database();
00053 
00054         virtual bool Assign(const char *ConnectString);
00055         virtual bool Commit();
00056         virtual bool Rollback();
00057         virtual class Connection *Connect(
00058                 const char *UserName,
00059                 const char *Password
00060                 ) = 0;
00061 
00062         virtual bool WriteDDL(ofstream &S) = 0;
00063         // generates DDL stements nedded for the library to run
00064         virtual char *ColumnTypeDDL(char coltype, int collen) = 0;
00065         // returns correct database column type for given attribute type
00066 
00067         // Get and set corresponging patrs of attribute _Strategies
00068         // that holds all concurency strategies
00069         virtual enum UpdatingStrategy CurrentUpdatingStrategy() const
00070         // Returns Update Strategy part of attribute _Strategies
00071         {
00072                 return (enum UpdatingStrategy)(_Strategies & US_MASK);
00073         };
00074         virtual bool SetUpdatingStrategy(enum UpdatingStrategy anUpdateStrategy);
00075         virtual enum WaitingStrategy CurrentWaitingStrategy() const
00076         {
00077                 return (enum WaitingStrategy)(_Strategies & WS_MASK);
00078         };
00079         virtual bool SetWaitingStrategy(enum WaitingStrategy aWaitingStrategy);
00080         virtual enum LockingStrategy CurrentLockingStrategy() const
00081         {
00082                 return (enum LockingStrategy)(_Strategies & LS_MASK);
00083         };
00084         virtual bool SetLockingStrategy(enum LockingStrategy aLockingStrategy);
00085         virtual enum ReadingStrategy CurrentReadingStrategy() const
00086         {
00087                 return (enum ReadingStrategy)(_Strategies & RS_MASK);
00088         };
00089         virtual bool SetReadingStrategy(enum ReadingStrategy aReadingStrategy);
00090 
00091 };
00092 
00093 #endif //__GC_DATABASE_H__

Generated on Sun Jul 14 20:51:14 2002 for POLiTe by doxygen1.2.16