00001 /* 00002 Scheme_Table_Popup.cpp 00003 00004 User Interface Definition and Implementation 00005 for Scheme_Table. 00006 00007 Copyright (C) 2005 by D.K. McCombs. 00008 W3 Systems Design 00009 00010 */ 00011 00012 #include <iostream> 00013 #include <iomanip> 00014 #include "cgiTemplates.h" 00015 #include "connectstring" 00016 #include "forms.h" 00017 #include "ocTypes.h" 00018 #include "ocString.h" 00019 #include "read_write_base.hpp" 00020 #include "forms_base.hpp" 00021 #include "cgiTemplates.h" 00022 #include "Scheme_Table.hpp" 00023 #include "openLogin.h" 00024 #include "../../openData/openCatalog.h" 00025 #include "Scheme_Field.hpp" 00026 #include <set> 00027 00028 using namespace std; 00029 openLogin oLogin; 00030 00031 class Scheme_Table_form: public Scheme_Table_Obj, public forms_base 00032 { 00033 public: 00034 Scheme_Table_form(cgiScript & script):Scheme_Table_Obj(),forms_base(script) 00035 { 00036 } 00037 virtual ~Scheme_Table_form(){;} 00038 void form_id_transfer( void ) 00039 { 00040 } 00041 void form_data_transfer( void ) 00042 { 00043 } 00044 bool dbf_action( string mode, changeMap & changes ) 00045 { 00046 return false; 00047 } 00048 00049 // implement pure virtual of form display 00050 bool form_display( void ) 00051 { 00052 bool breturn = true; 00053 ocString sql; 00054 script << makeTop("Scheme_Table_Popup.cgi", "Schema") 00055 << formTemplate.getParagraph("advanced_begin"); 00056 script << "<br class='clearall'>" << endl; 00057 script << formTemplate.getParagraph("advanced_end"); 00058 bool importing = false; 00059 bool tablesSpecified = false; 00060 ocString specifiedTables; 00061 set <string> tableSet; 00062 if(script.RequestMethod() == "POST") 00063 { 00064 importing = true; 00065 if( script.ClientArguments().count("addedTable") > 0 ) 00066 { 00067 tablesSpecified = true; 00068 specifiedTables = script.ClientArguments()["addedTable"].c_str(); 00069 string specTable = specifiedTables.parse("|"); 00070 while( specTable.length() ) 00071 { 00072 tableSet.insert(specTable); 00073 specTable = specifiedTables.parse("|"); 00074 } 00075 } 00076 script << "<h2>DOING IMPORT!</h2>" << endl; 00077 if( tablesSpecified == false ) 00078 { 00079 sql = "delete from Scheme_Table"; 00080 cmd.execute(sql); 00081 sql = "delete from Scheme_Field"; 00082 cmd.execute(sql); 00083 } 00084 } 00085 openCatalog cat(CONNECTSTRING); 00086 if( cat.open() ) 00087 { 00088 cout << "<pre>" << endl; 00089 do 00090 { 00091 cout << "<input type='checkbox' name='addedTable' value='" << cat.name() << "'> Table: " << cat.name() << endl; 00092 if( importing && ( tablesSpecified == false || tableSet.find(cat.name()) != tableSet.end() ) ) 00093 { 00094 key(0); 00095 Name = cat.name(); 00096 db_insert(); 00097 } 00098 openFields & lst = cat.fieldsList(); 00099 for( int i=0; i<lst.size(); i++) 00100 { 00101 cout << " Field: " << lst[i].name() << " type: " << lst[i].type() << endl; 00102 if( importing && ( tablesSpecified == false || tableSet.find(cat.name()) != tableSet.end() ) ) 00103 { 00104 Scheme_Field_Obj fld; 00105 fld.key(0); 00106 fld.Scheme_Table = key(); 00107 fld.Name = lst[i].name(); 00108 fld.Col_Type = lst[i].type(); 00109 if( !fld.db_insert() ) cout << " Error: " << fld.last_result() << endl ; 00110 00111 } 00112 } 00113 } 00114 while( cat.next() ); 00115 cout << "</pre>" << endl << 00116 "<div class=\"buttons\"><input name=\"action\" " 00117 "class=\"action\" value=\" Import \" " 00118 "type=\"submit\"></div>" << endl; 00119 00120 } 00121 00122 script << makeBottom( m_result ) << endl; 00123 return breturn; 00124 } 00125 }; 00126 00127 00128 int main( int argcount, char ** args ) 00129 { 00130 cgiScript script( "text/html", false ); 00131 Scheme_Table_form myFrm(script); 00132 00133 if( oLogin.testLoginStatus() ) 00134 { 00135 script.closeHeader(); 00136 cgiTemplates pgTemplate; 00137 pgTemplate.load("Templates/childPane.htmp"); 00138 script << ocString(pgTemplate.getParagraph("top")).replaceAll("$heading$","Hi Mom!"); 00139 myFrm.loadControlTemplates("Templates/childdivform.htmp"); 00140 myFrm.form_display(); 00141 ocString end = pgTemplate.getParagraph("bottom"); 00142 script << end; 00143 } 00144 else 00145 { 00146 script.Redirect("/"); 00147 } 00148 } 00149 // compile implementations here 00150 #include "read_write_base.cpp" 00151 #include "forms_base.cpp" 00152 00153 #ifdef OPEN_MYDB_H 00154 #include "../../openData/openMySqlCatalog.cpp" 00155 #else 00156 #include "../../openData/openPgSqlCatalog.cpp" 00157 #endif
1.5.5