00001 /* 00002 * SystemManager.h 00003 * 00004 * Created on: Apr 20, 2010 00005 * Author: green 00006 */ 00007 00008 #ifndef SYSTEMMANAGER_H_ 00009 #define SYSTEMMANAGER_H_ 00010 00011 #include "Common.h" 00012 #include "RecordFileScan.h" 00013 #include "PageFileManager.h" 00014 #include "RecordManager.h" 00015 #include "IndexManager.h" 00016 #include "RecordFileHandle.h" 00017 00025 static const uint MAX_DATABASE_NAME = 32; 00029 static const uint MAX_RELATION_NAME = 32; 00033 static const uint MAX_ATTRIBUTE_NAME = 32; 00034 00042 struct AttributeInfo { 00043 char name[MAX_ATTRIBUTE_NAME]; 00044 AttributeType type; 00045 int length; 00046 }; 00047 00057 class SystemManager { 00058 public: 00062 static SystemManager* getInstance(); 00063 00075 ReturnCode createDb(const char *dbName); 00076 00088 ReturnCode dropDb(const char* dbName); 00089 00100 ReturnCode openDb(const char *dbName); 00101 00109 ReturnCode closeDb(); 00110 00123 ReturnCode createTable(const char *relName, int attrCount, 00124 AttributeInfo *attributes); 00125 00136 ReturnCode dropTable(const char *relName); 00137 00149 ReturnCode createIndex(const char *relName, const char *attrName); 00150 00162 ReturnCode dropIndex(const char *relName, const char *attrName); 00163 00193 ReturnCode load(const char *relName, const char *fileName); 00194 00206 ReturnCode info(); 00207 00224 ReturnCode info(const char *relName); 00225 00240 ReturnCode print(const char *relName); 00241 00251 bool isOpen(); 00252 00253 private: 00254 SystemManager(); 00255 ~SystemManager(); 00256 00257 static const char* ATTRIBUTE_CATALOG; 00258 static const char* RELATION_CATALOG; 00259 }; 00260 00261 #endif /* SYSTEMMANAGER_H_ */