Пример #1
0
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')
Пример #2
0
    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')