00001
00002
00003 #include <fstream>
00004 #include <sstream>
00005 #include <iostream>
00006 #include <iomanip>
00007
00008 #include "ocString.h"
00009 #include "ocFileSys.h"
00010 #include "connectstring"
00011 #include "openDB.hpp"
00012
00013 #define DO_OPEN_LOGGING
00014 #include "openLogger.h"
00015 #include "ocImportParser.h"
00016
00017 #include "read_write_base.hpp"
00018
00019 #include "SysImportFixup.h"
00020 #include "link.hpp"
00021 #include "../../webconsole/metasite_source/global_content.hpp"
00022 #include "../../webconsole/metasite_source/templates.hpp"
00023 #define SUPPRESS_LINK_CREATION
00024 #include "../../webconsole/metasite_source/page.hpp"
00025 #include "../../webconsole/metasite_source/menu.hpp"
00026 #include "../../webconsole/metasite_source/menu_item.hpp"
00027 #include "page_menus.hpp"
00028 #include "../../webconsole/metasite_source/paragraph.hpp"
00029 using namespace std;
00030
00031 void clearTable( string table, long long site_id = 0)
00032 {
00033 openDbFactory DbMaker(PROVIDER, CONNECTSTRING);
00034 openDB & db = DbMaker.db();
00035 openCmdFactory cmdFact( db );
00036 openCMD & cmd = cmdFact.cmd();
00037 ocString sql = "delete from ";
00038 sql += table;
00039 if( site_id )
00040 {
00041 sql += " where site_id = ";
00042 sql.append( site_id );
00043 }
00044 cout << "EXECUTING : " << sql << endl;
00045 cmd.execute(sql);
00046 }
00047
00048 void cleanSysImport( void )
00049 {
00050 clearTable("SysImport_Keys");
00051 }
00052
00053 void importGlobalContent( long long site_id )
00054 {
00055 ocFileParser prsr;
00056 if( prsr.openFile( "Global.csv" ) )
00057 {
00058 clearTable("global_content", site_id );
00059 ocFileCols & cols = prsr.getCols();
00060
00061 prsr.setDelim(",").setCheckQuote(true);
00062
00063 prsr.setColCount(3);
00064
00065 while(prsr.parseLine(false))
00066 {
00067 global_content bobj;
00068 bobj.site_id = site_id;
00069 bobj.name= cols[1].value;
00070 bobj.content = ocString(cols[2].value).replaceAll("\"\"","\"");
00071 if( bobj.db_insert() )
00072 {
00073 cout << prsr.getLineTokens() << endl;
00074 }
00075 }
00076 }
00077 }
00078
00079 void importTemplates( long long site_id )
00080 {
00081 ocFileParser prsr;
00082 if( prsr.openFile( "Templates.csv" ) )
00083 {
00084 clearTable("templates", site_id );
00085 ocFileCols & cols = prsr.getCols();
00086
00087 prsr.setDelim(",").setCheckQuote(true);
00088
00089 prsr.setColCount(3);
00090
00091 while(prsr.parseLine(false))
00092 {
00093 Template bobj;
00094 bobj.site_id = site_id;
00095 bobj.name= cols[1].value;
00096 bobj.path = cols[2].value;
00097 if( bobj.db_insert() )
00098 {
00099 SysImport_Keys keyFix;
00100 keyFix.Table_Name = "templates";
00101 keyFix.Imported_Id = atoll(cols[0].value.c_str());
00102 keyFix.Current_Id = bobj.key();
00103 if(keyFix.insert())
00104 {
00105 cout << prsr.getLineTokens() << endl;
00106 }
00107 }
00108 }
00109 }
00110 }
00111
00112 void importPages( long long site_id )
00113 {
00114 ocFileParser prsr;
00115 if( prsr.openFile( "Page.csv" ) )
00116 {
00117
00118 clearTable("pages", site_id );
00119
00120 ocFileCols & cols = prsr.getCols();
00121
00122
00123 prsr.setDelim(",").setCheckQuote(true);
00124
00125 prsr.setColCount(5);
00126 while(prsr.parseLine(false))
00127 {
00128 cout << cols[0].value << " name " << cols[2].value << endl;
00129 page bobj;
00130 SysImport_Keys keyGet;
00131 if( keyGet.get("templates",atoll(cols[1].value.c_str()) ) )
00132 {
00133 bobj.site_id = site_id;
00134 bobj.template_id = keyGet.Current_Id;
00135 bobj.name = cols[2].value;
00136 bobj.url = cols[3].value;
00137 bobj.meta_description = ocString(cols[4].value).replaceAll("\"\"","\"");
00138 if( bobj.db_insert() )
00139 {
00140 SysImport_Keys keyFix;
00141 keyFix.Table_Name = "page";
00142 keyFix.Imported_Id = atoll(cols[0].value.c_str());
00143 keyFix.Current_Id = bobj.key();
00144 if(keyFix.insert())
00145 {
00146 cout << prsr.getLineTokens() << endl;
00147 }
00148 }
00149 }
00150 else
00151 {
00152 cout << " Error: " << keyGet.last_result() << endl;
00153 }
00154 }
00155 }
00156 }
00157
00158 void importLinks( long long site_id )
00159 {
00160 ocFileParser prsr;
00161 if( prsr.openFile( "Link.csv" ) )
00162 {
00163 clearTable("links", site_id );
00164 ocFileCols & cols = prsr.getCols();
00165
00166 prsr.setDelim(",").setCheckQuote(true);
00167
00168 prsr.setColCount(4);
00169
00170 while(prsr.parseLine(false))
00171 {
00172 links_Obj bobj;
00173 bobj.site_id = site_id;
00174 bobj.name= cols[1].value;
00175 bobj.url = cols[2].value;
00176 bobj.target = cols[3].value;
00177 if( bobj.db_insert() )
00178 {
00179 SysImport_Keys keyFix;
00180 keyFix.Table_Name = "links";
00181 keyFix.Imported_Id = atoll(cols[0].value.c_str());
00182 keyFix.Current_Id = bobj.key();
00183 if(keyFix.insert())
00184 {
00185 cout << prsr.getLineTokens() << endl;
00186 }
00187 }
00188 }
00189 }
00190 }
00191
00192 void importMenus( long long site_id )
00193 {
00194 ocFileParser prsr;
00195 if( prsr.openFile( "Menu.csv" ) )
00196 {
00197 clearTable("menus", site_id );
00198 ocFileCols & cols = prsr.getCols();
00199
00200 prsr.setDelim(",").setCheckQuote(true);
00201
00202 prsr.setColCount(2);
00203
00204 while(prsr.parseLine(false))
00205 {
00206 menu bobj;
00207 bobj.site_id = site_id;
00208 bobj.name= cols[1].value;
00209 if( bobj.db_insert() )
00210 {
00211 SysImport_Keys keyFix;
00212 keyFix.Table_Name = "menus";
00213 keyFix.Imported_Id = atoll(cols[0].value.c_str());
00214 keyFix.Current_Id = bobj.key();
00215 if(keyFix.insert())
00216 {
00217 cout << prsr.getLineTokens() << endl;
00218 }
00219 }
00220 }
00221 }
00222 }
00223
00224 void importMenuItems( long long site_id )
00225 {
00226 ocFileParser prsr;
00227 if( prsr.openFile( "MenuItem.csv" ) )
00228 {
00229 clearTable("menu_items", site_id );
00230 ocFileCols & cols = prsr.getCols();
00231
00232 prsr.setDelim(",").setCheckQuote(true);
00233
00234 prsr.setColCount(9);
00235
00236 while(prsr.parseLine(false))
00237 {
00238 SysImport_Keys keyGet, linkKeyGet;
00239 if( !keyGet.get("menus",atoll(cols[1].value.c_str()) ) )
00240 continue;
00241 if( !linkKeyGet.get("links",atoll(cols[2].value.c_str()) ) )
00242 continue;
00243 menu_item bobj;
00244 bobj.site_id = site_id;
00245
00246 bobj.menu_id = keyGet.Current_Id;
00247 bobj.link_id = linkKeyGet.Current_Id;
00248 bobj.template_tag= cols[3].value;
00249 bobj.locate_tag= cols[4].value;
00250 bobj.target_tag= cols[5].value;
00251 bobj.label_tag= cols[6].value;
00252 bobj.place_order= atol(cols[7].value.c_str());
00253 bobj.place_level= atol(cols[8].value.c_str());
00254
00255 if( bobj.db_insert() )
00256 {
00257 cout << prsr.getLineTokens() << endl;
00258 }
00259 }
00260 }
00261 }
00262
00263 void importPageMenus( long long site_id )
00264 {
00265 ocFileParser prsr;
00266 if( prsr.openFile( "PageMenu.csv" ) )
00267 {
00268 clearTable("page_menus", site_id );
00269 ocFileCols & cols = prsr.getCols();
00270
00271 prsr.setDelim(",").setCheckQuote(true);
00272
00273 prsr.setColCount(5);
00274
00275 while(prsr.parseLine(false))
00276 {
00277 SysImport_Keys keyGet, menuGet;
00278 if( !keyGet.get("page",atoll(cols[2].value.c_str()) ) )
00279 continue;
00280 if( !menuGet.get("menus",atoll(cols[1].value.c_str()) ) )
00281 continue;
00282
00283 page_menus_Obj bobj;
00284 bobj.site_id = site_id;
00285 bobj.menu_id = menuGet.Current_Id;
00286 bobj.page_id = keyGet.Current_Id;
00287 bobj.place_order = atol(cols[3].value.c_str());
00288 bobj.collapsible= atol(cols[4].value.c_str())>0;
00289 if( bobj.db_insert() )
00290 {
00291 cout << prsr.getLineTokens() << endl;
00292 }
00293 }
00294 }
00295 }
00296 void importParagraphs( long long site_id )
00297 {
00298 ocFileParser prsr;
00299 if( prsr.openFile( "Paragraph.csv" ) )
00300 {
00301 clearTable("paragraphs", site_id );
00302 ocFileCols & cols = prsr.getCols();
00303
00304 prsr.setDelim(",").setCheckQuote(true);
00305
00306 prsr.setColCount(7);
00307
00308 while(prsr.parseLine(false))
00309 {
00310
00311
00312 SysImport_Keys keyGet;
00313 if( keyGet.get("page",atoll(cols[1].value.c_str()) ) )
00314 {
00315 paragraph bobj;
00316 bobj.site_id = site_id;
00317 bobj.page_id = keyGet.Current_Id;
00318 bobj.place_order= atol(cols[2].value.c_str());
00319 bobj.template_tag= cols[3].value;
00320 bobj.replace_tag= cols[4].value;
00321 bobj.name= ocString(cols[5].value).replaceAll("\"\"","\"");
00322 bobj.content= ocString(cols[6].value).replaceAll("\"\"","\"");
00323 if( bobj.db_insert() )
00324 {
00325 cout << bobj.content.substr(0,40) << endl;
00326 }
00327 }
00328 }
00329 }
00330 }
00331
00332
00333 int main( int argc, char** argv )
00334 {
00335
00336 string explain =
00337 "Must have one argument: The id for the site "
00338 "set up on THIS system. \n"
00339 "Make sure such a site exists first!\n";
00340
00341 if( argc > 1 )
00342 {
00343
00344 long long site_id = atoll(argv[1]);
00345 if( site_id )
00346 {
00347 cleanSysImport();
00348
00349 importGlobalContent( site_id );
00350
00351 importTemplates( site_id );
00352
00353 importPages( site_id );
00354
00355 importLinks( site_id );
00356
00357 importMenus( site_id );
00358
00359 importMenuItems( site_id );
00360
00361 importPageMenus( site_id );
00362
00363 importParagraphs( site_id );
00364 }
00365 }
00366 else
00367 {
00368 cout << explain << endl;
00369 }
00370 return 0;
00371 }
00372
00373 #include "read_write_base.cpp"