/home/martin/workspace/OpenStreetNav/src/osmdb/OsmDatabase.cpp
Go to the documentation of this file.
00001 /*
00002  * OsmDatabase.cpp
00003  *
00004  *  Created on: Nov 5, 2011
00005  *      Author: martin
00006  */
00007 
00008 #include "OsmDatabase.h"
00009 #include "../sqllib/sqllib.h"
00010 #include <functional>
00011 #include <vector>
00012 
00013 namespace osmdb
00014 {
00015 
00016 OsmDatabase::OsmDatabase(psql::Database& db):
00017     db(db)
00018 {
00019 }
00020 
00021 OsmDatabase::~OsmDatabase()
00022 {
00023 }
00024 
00025 psql::Database& OsmDatabase::get_db()
00026 {
00027     return db;
00028 }
00029 
00030 void OsmDatabase::create_indexes_and_keys()
00031 {
00032     create_primary_keys();
00033     create_foreign_keys();
00034     create_indexes();
00035 }
00036 
00037 void OsmDatabase::create_indexes()
00038 {
00039     create_edge_indexes();
00040     sqllib::get_create_nodes_loc_index(db).execute();
00041     sqllib::get_create_nodeattr_keyval_index(db).execute();
00042     sqllib::get_create_wayattr_keyval_index(db).execute();
00043     sqllib::get_create_relattr_keyval_index(db).execute();
00044 }
00045 
00046 void OsmDatabase::create_foreign_keys()
00047 {
00048     create_edge_foreign_keys();
00049     sqllib::get_create_waymembers_way_fkey(db).execute();
00050     sqllib::get_create_waymembers_relation_fkey(db).execute();
00051     sqllib::get_create_nodemembers_node_fkey(db).execute();
00052     sqllib::get_create_nodemembers_relation_fkey(db).execute();
00053     sqllib::get_create_nodeattributes_nodes_fkey(db).execute();
00054     sqllib::get_create_wayattributes_ways_fkey(db).execute();
00055     sqllib::get_create_relationattributes_relation_fkey(db).execute();
00056     sqllib::get_create_relmembers_child_fkey(db).execute();
00057     sqllib::get_create_relmembers_parent_fkey(db).execute();
00058 }
00059 
00060 void OsmDatabase::create_primary_keys()
00061 {
00062     sqllib::get_create_nodes_pkey(db).execute();
00063     sqllib::get_create_ways_pkey(db).execute();
00064     sqllib::get_create_relations_pkey(db).execute();
00065     sqllib::get_create_waymembers_pkey(db).execute();
00066     sqllib::get_create_nodemembers_pkey(db).execute();
00067     create_edge_primary_keys();
00068     sqllib::get_create_nodeattributes_pkey(db).execute();
00069     sqllib::get_create_wayattributes_pkey(db).execute();
00070     sqllib::get_create_relationattributes_pkey(db).execute();
00071     sqllib::get_create_relmembers_pkey(db).execute();
00072 }
00073 
00074 void OsmDatabase::drop_indexes_and_keys()
00075 {
00076     drop_indexes();
00077     drop_foreign_keys();
00078     drop_primary_keys();
00079 }
00080 
00081 void OsmDatabase::drop_indexes()
00082 {
00083     sqllib::get_drop_relattr_keyval_index(db).execute();
00084     sqllib::get_drop_wayattr_keyval_index(db).execute();
00085     sqllib::get_drop_nodeattr_keyval_index(db).execute();
00086     sqllib::get_drop_nodes_loc_index(db).execute();
00087     drop_edge_indexes();
00088 }
00089 
00090 void OsmDatabase::drop_foreign_keys()
00091 {
00092     sqllib::get_drop_relationattributes_relation_fkey(db).execute();
00093     sqllib::get_drop_wayattributes_ways_fkey(db).execute();
00094     sqllib::get_drop_nodeattributes_nodes_fkey(db).execute();
00095     drop_edge_foreign_keys();
00096     sqllib::get_drop_nodemembers_relation_fkey(db).execute();
00097     sqllib::get_drop_nodemembers_node_fkey(db).execute();
00098     sqllib::get_drop_waymembers_relation_fkey(db).execute();
00099     sqllib::get_drop_waymembers_way_fkey(db).execute();
00100     sqllib::get_drop_relmembers_child_fkey(db).execute();
00101     sqllib::get_drop_relmembers_parent_fkey(db).execute();
00102 }
00103 
00104 void OsmDatabase::drop_primary_keys()
00105 {
00106     sqllib::get_drop_relmembers_pkey(db).execute();
00107     sqllib::get_drop_relationattributes_pkey(db).execute();
00108     sqllib::get_drop_wayattributes_pkey(db).execute();
00109     sqllib::get_drop_nodeattributes_pkey(db).execute();
00110     sqllib::get_drop_nodemembers_pkey(db).execute();
00111     sqllib::get_drop_waymembers_pkey(db).execute();
00112     sqllib::get_drop_nodes_pkey(db).execute();
00113     sqllib::get_drop_ways_pkey(db).execute();
00114     sqllib::get_drop_relations_pkey(db).execute();
00115     drop_edge_primary_keys();
00116 }
00117 
00118 void OsmDatabase::create_tables()
00119 {
00120     sqllib::get_create_nodes_table(db).execute();
00121     sqllib::get_create_ways_table(db).execute();
00122     create_edge_tables();
00123     sqllib::get_create_node_attributes(db).execute();
00124     sqllib::get_create_way_attributes(db).execute();
00125     sqllib::get_create_relations_table(db).execute();
00126     sqllib::get_create_node_members(db).execute();
00127     sqllib::get_create_way_members_table(db).execute();
00128     sqllib::get_create_relation_attributes(db).execute();
00129     sqllib::get_create_toshow_table(db).execute();
00130     sqllib::get_create_relation_members(db).execute();
00131     sqllib::get_create_import_seq(db).execute();
00132     sqllib::get_create_import_table(db).execute();
00133 
00134 }
00135 
00136 void OsmDatabase::create_edge_tables()
00137 {
00138     sqllib::get_create_edges_table(db).execute();
00139     sqllib::get_create_waynodes_table(db).execute();
00140 }
00141 
00142 void OsmDatabase::create_edge_primary_keys()
00143 {
00144     sqllib::get_create_edges_pkey(db).execute();
00145     sqllib::get_create_waynodes_pkey(db).execute();
00146 }
00147 
00148 void OsmDatabase::create_edge_foreign_keys()
00149 {
00150     sqllib::get_create_waynodes_node_fkey(db).execute();
00151     sqllib::get_create_waynodes_way_fkey(db).execute();
00152     sqllib::get_create_edges_startnode_fkey(db).execute();
00153     sqllib::get_create_edges_endnode_fkey(db).execute();
00154     sqllib::get_create_edges_wayid_fkey(db).execute();
00155 }
00156 
00157 void OsmDatabase::create_edge_indexes()
00158 {
00159     sqllib::get_create_edges_location_index(db).execute();
00160 }
00161 
00162 void OsmDatabase::create_edge_keys_and_indexes()
00163 {
00164     create_edge_primary_keys();
00165     create_edge_foreign_keys();
00166     create_edge_indexes();
00167 }
00168 
00169 void OsmDatabase::drop_edge_primary_keys()
00170 {
00171     sqllib::get_drop_edges_pkey(db).execute();
00172     sqllib::get_drop_waynodes_pkey(db).execute();
00173 }
00174 
00175 void OsmDatabase::drop_edge_foreign_keys()
00176 {
00177     sqllib::get_drop_waynodes_way_fkey(db).execute();
00178     sqllib::get_drop_waynodes_node_fkey(db).execute();
00179     sqllib::get_drop_edges_wayid_fkey(db).execute();
00180     sqllib::get_drop_edges_endnode_fkey(db).execute();
00181     sqllib::get_drop_edges_startnode_fkey(db).execute();
00182 }
00183 
00184 void OsmDatabase::drop_edge_indexes()
00185 {
00186     sqllib::get_drop_edges_location_index(db).execute();
00187 }
00188 
00189 void OsmDatabase::drop_edge_keys_and_indexes()
00190 {
00191     drop_edge_indexes();
00192     drop_edge_foreign_keys();
00193     drop_edge_primary_keys();
00194 }
00195 
00196 }
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines