Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __cdb_DALaccess_h__
00012 #define __cdb_DALaccess_h__
00013
00014
00015 #include <acsutil.h>
00016 #include <cdbExport.h>
00017
00018 #include <cdb.h>
00019 #include <cdbDALC.h>
00020 #include <cdbDALS.h>
00021 #include <cdbDAOImpl.h>
00022
00023
00024 namespace cdb {
00025
00026 class DALChangeListenerImpl;
00027
00028 class cdb_EXPORT DALaccess : public Table
00029 {
00030 public:
00031 DALaccess( int argc, char *argv[], CORBA::ORB_ptr orb = CORBA::ORB::_nil() );
00032 virtual ~DALaccess();
00033 static Table* createTable( int argc, char** argv, CORBA::ORB_ptr orb );
00034
00035
00036 virtual Boolean isInitialized() { return m_initialized; }
00037
00038 Boolean CreateRecord(const String &strRecordName,
00039 Boolean bTruncate = FALSE);
00040
00041 ULong GetRecordState(const String &strRecordName);
00042
00043 Boolean GetField(const String &strRecordName,
00044 const String &strFieldName,
00045 Field &fld);
00046
00047 Boolean SetField(const String &strRecordName,
00048 const String &strFieldName,
00049 const Field &fld,
00050 Boolean bCreate = TRUE);
00051
00052 Boolean RemoveField(const String &strRecordName,
00053 const String &strFieldName);
00054
00055 Boolean GetRecord(const String &strRecordName,
00056 Record &rec,
00057 Boolean bCreate = FALSE,
00058 Boolean bAppend = FALSE);
00059
00060 Boolean SetRecord(const String &strRecordName,
00061 const Record &rec,
00062 Boolean bCreate = TRUE,
00063 Boolean bAll = TRUE);
00064 Boolean RemoveRecord(const String &strRecordName);
00065
00066 virtual Boolean GetChildren(const String &strRecordName,
00067 StringArray &astrChildren);
00068
00069 void UseLocalDAOs( int localDAOs = 1 ) { m_useLocalDAO = localDAOs; }
00070
00071 static void forceDAL(CDB::DAL_ptr dal) { m_forcedDAL = CDB::DAL::_duplicate(dal); }
00072 static void exitFunction() { exitStarts = 1; }
00073 protected:
00074
00075 char* resolveDALserverIOR( int argc, char *argv[] );
00076 DAOImpl* getDAO( const String &strRecordName );
00077
00078
00079 CORBA::ORB_var m_orb;
00080 CDB::DAL_var m_dal;
00081 Boolean m_initialized;
00082 int m_useLocalDAO;
00083 Boolean m_destroyORB;
00084 int m_useCacheListener;
00085
00086 typedef std::map<String, DAOImpl*> MapStrRec;
00087 MapStrRec m_mpRecords;
00088
00089 CDB::DALChangeListener_var changeListenerObj;
00090 long changeListenerID;
00091
00092 friend class DALChangeListenerImpl;
00093
00094 static int exitStarts;
00095
00096 static CDB::DAL_var m_forcedDAL;
00097
00098 };
00099
00100 class DALChangeListenerImpl : public POA_CDB::DALChangeListener
00101 {
00102 public:
00103 virtual void object_changed (
00104 const char * curl
00105
00106 );
00107
00108 DALaccess::MapStrRec* pMap;
00109
00110 };
00111
00112 };
00113
00114 #endif // __cdb_DALaccess_h__
00115
00116
00117