00001 #ifndef INCLUDE_ORA_TABLEREGISTER_H 00002 #define INCLUDE_ORA_TABLEREGISTER_H 00003 00004 // 00005 #include <string> 00006 #include <set> 00007 #include <map> 00008 #include <vector> 00009 00010 namespace coral{ 00011 class ISchema; 00012 } 00013 00014 namespace ora { 00015 00016 class TableRegister { 00017 00018 public: 00019 00020 explicit TableRegister( coral::ISchema& schema ); 00021 00022 virtual ~TableRegister(); 00023 00024 bool checkTable(const std::string& tableName); 00025 00026 bool checkColumn(const std::string& tableName, const std::string& columnName); 00027 00028 size_t numberOfColumns(const std::string& tableName); 00029 00030 void insertTable(const std::string& tableName); 00031 00032 bool insertColumn(const std::string& tableName, const std::string& columnName ); 00033 00034 bool insertColumns(const std::string& tableName, const std::vector<std::string>& columns ); 00035 00036 private: 00037 00038 void init(); 00039 00040 private: 00041 00042 coral::ISchema& m_schema; 00043 00044 bool m_init; 00045 00046 std::map<std::string,std::set<std::string> > m_register; 00047 00048 const std::string* m_currentTable; 00049 00050 std::set<std::string>* m_currentColumns; 00051 00052 }; 00053 00054 } 00055 00056 #endif