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