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

cConnection.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: ...                                                             */
00011 /* Module: ......                                                             */
00012 /*                                                                            */
00013 /******************************************************************************/
00014 
00015 #ifndef __C_CONNECTION_H__
00016 #define __C_CONNECTION_H__
00017 
00018 // Common POLiTe Header(s)
00019 #include <lTypes.h>
00020 #include <lExceptions.h>
00021 
00022 class DLL_External Connection
00023 {
00024 #ifdef POLITE_TEST_FRIEND
00025         friend POLITE_TEST_FRIEND;
00026 #endif // POLITE_TEST_FRIEND
00027 
00028 friend class Database;
00029 friend class Cursor;
00030 friend class RefBase;
00031 friend class Object;
00032 friend class ProtoBase;
00033 friend class PersistentObject;
00034 friend class ObjectBuffer;
00035 friend class ResultBase;
00036 friend class Relation;
00037 friend class OneToOneRelationBase;
00038 friend class OneToManyRelationBase;
00039 friend class ManyToOneRelationBase;
00040 friend class ManyToManyRelationBase;
00041 friend class ChainedRelationBase;
00042 
00043 protected:
00044         unsigned short _Strategies;
00045         char *_UserName;                                        //user's login name
00046         char *_Password;             //user's password
00047         class Database *_Database;      //the database this connection is
00048                                                                                         //connected to
00049         int _Handle;                                            //order in the global table of connections
00050         int _LocalHandle;                               //order in the local table of connections
00051         class Cursor *_DefaultCursor;//default cursor;
00052 
00053         virtual bool _Sql(const char * const SqlCommand) = 0;
00054         virtual bool _Commit() = 0;
00055         virtual bool _Rollback() = 0;
00056         virtual bool _Savepoint(const char * const Name) = 0;
00057         virtual bool _RollbackToSavepoint(const char * const Name) = 0;
00058 
00059         virtual bool _NextOID(long int &nxtoid, long int &nxtsn) = 0;
00060         // generates new OID and Serial Number for new object
00061         virtual bool _NextSN(long int curoid, long int &nxtsn) = 0;
00062         // generates new Serial Number for object
00063 
00064         Connection(
00065                 class Database *DB,
00066                 const char *UserName,
00067                 const char *Password,
00068                 const int LocHandle,
00069                 const int GlobHandle
00070                 );
00071 
00072 public:
00073         ~Connection();
00074 
00075 
00076 public:
00077         virtual bool Sql(const char *SqlCommand);
00078         virtual bool Commit();
00079         virtual bool Rollback();
00080         virtual bool Savepoint(const char *Name);
00081         virtual bool RollbackToSavepoint(const char *Name);
00082         virtual bool Disconnect();
00083         virtual bool Abort();
00084         virtual bool Autocommit(bool ac) = 0;
00085         virtual Connection &operator << (
00086                 const char *SqlCommand
00087                 );
00088         Connection &operator << (
00089                 const class Cmd &Command
00090                 );
00091         //Tests, if the Database connections are the same
00092         bool operator == (const class Connection &DbConn) const;
00093         //Tests, if the Database connections are not the same
00094         bool operator != (const class Connection &DbConn) const;
00095 
00096         // Get and set corresponging patrs of attribute _Strategies
00097         // that holds all concurency strategies
00098         virtual enum UpdatingStrategy CurrentUpdatingStrategy() const
00099         // Returns Update Strategy part of attribute _Strategies
00100         {
00101                 return (enum UpdatingStrategy)(_Strategies & US_MASK);
00102         };
00103         virtual bool SetUpdatingStrategy(enum UpdatingStrategy anUpdateStrategy);
00104         virtual enum WaitingStrategy CurrentWaitingStrategy() const
00105         {
00106                 return (enum WaitingStrategy)(_Strategies & WS_MASK);
00107         };
00108         virtual bool SetWaitingStrategy(enum WaitingStrategy aWaitingStrategy);
00109         virtual enum LockingStrategy CurrentLockingStrategy() const
00110         {
00111                 return (enum LockingStrategy)(_Strategies & LS_MASK);
00112         };
00113         virtual bool SetLockingStrategy(enum LockingStrategy aLockingStrategy);
00114         virtual enum ReadingStrategy CurrentReadingStrategy() const
00115         {
00116                 return (enum ReadingStrategy)(_Strategies & RS_MASK);
00117         };
00118         virtual bool SetReadingStrategy(enum ReadingStrategy aReadingStrategy);
00119 
00120 protected:
00121         char *_GetUserName() {return _UserName;};
00122         char *_GetPassword() {return _Password;};
00123         //Obtaining of the new cursor
00124         virtual class Cursor *_GetNewCursor() = 0;
00125         //Manipulating with the default cursor
00126         virtual bool _Open();
00127         virtual bool _Prepare(const char *SqlCommand);
00128         virtual bool _PreExecBind(
00129                 const char *const VarName,
00130                 const void *VarAddr,
00131                 const int VarLen,
00132                 const char VarType,
00133                 const short *VarInd = NULL
00134                 );
00135         virtual bool _Execute();
00136         virtual bool _PreFetchBind(
00137                 const int Position,
00138                 const void *VarAddr,
00139                 const int VarLen,
00140                 const char VarType,
00141                 const short *VarInd = NULL
00142                 );
00143         virtual bool _FetchNext();
00144         virtual bool _FetchPrev();
00145         virtual bool _Close();
00146 };
00147 
00148 #endif //__C_CONNECTION_H__

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