def generate_database_config(db_list,filename): f = open(filename+'.tmp','w') f.writelines([''' #include "internal/database_config.hpp" namespace das{ void DatabaseConfig::prepare_config() { ''']) for db in db_list: f.writelines([''' { DatabaseInfo &info = db_map_["''',str(db['alias']),'''"]; info.host = "''',str(db['host']),'''"; info.port = ''',str(db['port']),'''; info.db_name = "''',str(db['db_name']),'''"; info.db_type = "''',str(db['db_type']),'''"; ''']) if(db.has_key('mysql_socket')): f.writelines([' info.mysql_socket = "'+str(db['mysql_socket'])+'";\n']) f.writelines(l for l in storage_engine_tree_visit(db['storage_engine'],'')) f.writelines([' }\n']) f.writelines([''' } } ''']) f.close() _odb.comp_mv(filename,filename+'.tmp')
def visit_type_list(self,_): ddl_info_path = _os.path.join(self._src_dir, 'ddl_info.cpp') f = open(ddl_info_path+'.tmp', 'w') f.writelines('#include "'+ddl+'.hpp"\n' for ddl in set(self._db_map.values())) f.writelines(['#include "ddl/types/ddl_types.hpp"']) f.writelines(['\nvoid\n','DdlInfo::init()\n','{\n']) f.writelines(" "+l + "\n" for l in self._init_types) f.writelines(" "+l + "\n" for l in self._init_images) f.writelines(" "+l + "\n" for l in self._init_columns) f.writelines(" "+l + "\n" for l in self._init_keywords) f.writelines(" "+l + "\n" for l in self._init_associations) f.writelines(['\n']) f.writelines(' ddl_map_["'+db+'"] = '+ddl+'::get_instance();\n' for (db,ddl) in self._db_map.items()) f.writelines(['}\n']) f.close() _odb.comp_mv(ddl_info_path,ddl_info_path+'.tmp') db_plf_path = _os.path.join(self._src_dir, 'database_plf.cpp') f = open(db_plf_path+'.tmp', 'w') f.writelines([''' #include "plf/database.hpp" #include "ddl/types.hpp" boost::unordered_map< std::string, shared_ptr<das::plf::Functor> > das::plf::Database::f_; namespace das{ namespace plf{ void Database::init() { if(!f_.empty()) return; ''']) for t in self._type_list.type_map.keys(): if t != "essentialMetadata": f.writelines([' f_.insert(std::pair< std::string, shared_ptr<Functor> >("'+t+'",shared_ptr<Functor>(new FunctorImp<'+t+'>)));\n']) f.writelines([''' } } } ''']) f.close() _odb.comp_mv(db_plf_path,db_plf_path+'.tmp') for ddl_name in self._DdlInfo_children.keys(): ddl_path = _os.path.join(self._src_dir, ddl_name+'.hpp') f = open(ddl_path+'.tmp', 'w') const = [' '+ddl_name+'()\n',' {\n'] const.extend(" "+l+'\n' for l in self._DdlInfo_children[ddl_name]) const.append(' }\n') _write_ddl_class(f,ddl_name,const) f.close() _odb.comp_mv(ddl_path,ddl_path+'.tmp')