Changeset 419 for vtcross/trunk
- Timestamp:
- 08/07/09 11:03:00 (15 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
vtcross/trunk/src/service_management_layer/ServiceManagementLayer.cpp
r411 r419 23 23 * Missions are loaded from an XML file, connected with services provided by components, 24 24 * and run. See the documentation for the "PerformActiveMission" below for important 25 * info. 25 * info. 26 26 */ 27 27 … … 66 66 67 67 struct services_s { 68 char filename[64];69 char tablename[64];70 char command[2048];68 string filename; 69 string tablename; 70 string command; 71 71 sqlite3 *db; 72 72 unsigned int num_columns; … … 74 74 75 75 struct data_s { 76 char filename[64];77 char tablename[64];78 char command[2048];76 string filename; 77 string tablename; 78 string command; 79 79 sqlite3 *db; 80 80 unsigned int num_columns; … … 113 113 { 114 114 char *errorMsg; 115 strcpy(_services_DB->command, "drop table ");116 strcat(_services_DB->command,_services_DB->tablename);117 int rc = sqlite3_exec(_services_DB->db, _services_DB->command , callback, 0, &errorMsg);115 _services_DB->command="drop table "; 116 _services_DB->command.append(_services_DB->tablename); 117 int rc = sqlite3_exec(_services_DB->db, _services_DB->command.c_str(), callback, 0, &errorMsg); 118 118 if( rc!=SQLITE_OK && rc!=101 ) 119 119 fprintf(stderr, "ServiceManagementLayer::Destructor services 'drop table' error: %s\n", errorMsg); 120 strcpy(_services_DB->command, "vacuum");121 rc = sqlite3_exec(_services_DB->db, _services_DB->command , callback, 0, &errorMsg);120 _services_DB->command="vacuum"; 121 rc = sqlite3_exec(_services_DB->db, _services_DB->command.c_str(), callback, 0, &errorMsg); 122 122 if( rc!=SQLITE_OK && rc!=101 ) 123 123 fprintf(stderr, "ServiceManagementLayer::Destructor services 'vacuum' error: %s\n", errorMsg); 124 124 free(_services_DB); 125 125 126 strcpy(_data_DB->command, "drop table ");127 strcat(_data_DB->command,_data_DB->tablename);128 rc = sqlite3_exec(_data_DB->db, _data_DB->command , callback, 0, &errorMsg);126 _data_DB->command="drop table "; 127 _data_DB->command.append(_data_DB->tablename); 128 rc = sqlite3_exec(_data_DB->db, _data_DB->command.c_str(), callback, 0, &errorMsg); 129 129 if( rc!=SQLITE_OK && rc!=101 ) 130 130 fprintf(stderr, "ServiceManagementLayer::Destructor data 'drop table' error: %s\n", errorMsg); 131 strcpy(_data_DB->command, "vacuum");132 rc = sqlite3_exec(_data_DB->db, _data_DB->command , callback, 0, &errorMsg);131 _data_DB->command="vacuum"; 132 rc = sqlite3_exec(_data_DB->db, _data_DB->command.c_str(), callback, 0, &errorMsg); 133 133 if( rc!=SQLITE_OK && rc!=101 ) 134 134 fprintf(stderr, "ServiceManagementLayer::Destructor data 'vacuum' error: %s\n", errorMsg); … … 169 169 ServiceManagementLayer::CreateServicesDB() 170 170 { 171 172 173 sqlite3_stmt *ppStmt; /* OUT: Statement handle */ 174 const char *pzTail; /* OUT: Pointer to unused portion of zSql */ 175 176 177 _services_DB = (services_DB) malloc(sizeof(struct services_s)); 178 // char *errorMsg; 179 180 // create database 181 171 sqlite3_stmt *ppStmt; /* OUT: Statement handle */ 172 const char *pzTail; /* OUT: Pointer to unused portion of zSql */ 173 174 //_services_DB = (services_DB) malloc(sizeof(struct services_s)); 175 _services_DB = new services_s; 182 176 // copy filename 183 strcpy(_services_DB->filename, "Services_Table"); 184 177 _services_DB->filename="Services_Table"; 185 178 // execute create database command 186 179 // database handle 187 180 //_services_DB->db = NULL; 188 sqlite3_open(_services_DB->filename , &(_services_DB->db));181 sqlite3_open(_services_DB->filename.c_str(), &(_services_DB->db)); 189 182 char* cols[] = {(char *)"ID_Num", (char *)"Service_Name"}; 190 183 191 184 192 185 // copy tablename 193 strcpy(_services_DB->tablename, "Services");186 _services_DB->tablename="Services"; 194 187 195 188 //If program execution ends in anything other than a ordered shutdown, DB's will still be there for next run 196 189 //Need to get rid of it so that old data isn't inadvertantly used in the next execution cycle 197 sprintf(_services_DB->command, "DROP TABLE IF EXISTS Services;");198 199 int rc = sqlite3_prepare_v2(_services_DB->db, _services_DB->command , 128, &ppStmt, &pzTail);190 _services_DB->command = "DROP TABLE IF EXISTS Services;"; 191 192 int rc = sqlite3_prepare_v2(_services_DB->db, _services_DB->command.c_str(), 128, &ppStmt, &pzTail); 200 193 if( rc!=SQLITE_OK && rc!=101 ) 201 194 printf("ServiceManagementLayer::CreateServicesDB 'prepare_stmt' error %d\n", rc); … … 208 201 209 202 // generate command 210 strcpy(_services_DB->command, "CREATE TABLE "); 211 strcat(_services_DB->command, _services_DB->tablename); 212 strcat(_services_DB->command, "("); 213 strcat(_services_DB->command, cols[0]); 214 strcat(_services_DB->command, " INT, "); 215 strcat(_services_DB->command, cols[1]); 216 strcat(_services_DB->command, " TEXT"); 217 strcat(_services_DB->command, ");"); 203 _services_DB->command="CREATE TABLE "; 204 _services_DB->command.append(_services_DB->tablename); 205 _services_DB->command.append("("); 206 _services_DB->command.append(cols[0]); 207 _services_DB->command.append(" INT, "); 208 _services_DB->command.append(cols[1]); 209 _services_DB->command.append(" TEXT);"); 218 210 219 211 // execute create table command 220 212 221 rc = sqlite3_prepare_v2(_services_DB->db, _services_DB->command , 128, &ppStmt, &pzTail);213 rc = sqlite3_prepare_v2(_services_DB->db, _services_DB->command.c_str(), 128, &ppStmt, &pzTail); 222 214 if( rc!=SQLITE_OK && rc!=101 ) 223 215 printf("ServiceManagementLayer::CreateServicesDB 'prepare_stmt' error %d\n", rc); … … 236 228 ServiceManagementLayer::CreateDataDB() 237 229 { 238 _data_DB = (data_DB) malloc(sizeof(struct data_s));239 //char *errorMsg;240 sqlite3_stmt *ppStmt; /* OUT: Statement handle */ 241 const char *pzTail; /* OUT: Pointer to unused portion of zSql */230 sqlite3_stmt *ppStmt; /* OUT: Statement handle */ 231 const char *pzTail; /* OUT: Pointer to unused portion of zSql */ 232 233 _data_DB = new data_s;//(data_DB) malloc(sizeof(struct data_s)); 242 234 243 235 // create database 244 236 245 237 // copy filename 246 strcpy(_data_DB->filename, "Data_Table");238 _data_DB->filename="Data_Table"; 247 239 // execute create database command 248 240 // database handle 249 241 //_services_DB->db = NULL; 250 sqlite3_open(_data_DB->filename , &(_data_DB->db));242 sqlite3_open(_data_DB->filename.c_str(), &(_data_DB->db)); 251 243 char* cols[] = {(char *)"Tag", (char *)"Data"}; 252 244 … … 254 246 255 247 // copy tablename 256 strcpy(_data_DB->tablename, "Data");257 sprintf(_data_DB->command, "DROP TABLE IF EXISTS Data;");258 259 int rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command , 128, &ppStmt, &pzTail);248 _data_DB->tablename="Data"; 249 _data_DB->command="DROP TABLE IF EXISTS Data;"; 250 251 int rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), 128, &ppStmt, &pzTail); 260 252 if( rc!=SQLITE_OK && rc!=101 ) 261 253 printf("ServiceManagementLayer::CreateServicesDB 'prepare_stmt' error %d\n", rc); … … 269 261 270 262 // generate command 271 strcpy(_data_DB->command, "CREATE TABLE ");272 strcat(_data_DB->command,_data_DB->tablename);273 strcat(_data_DB->command,"(");274 strcat(_data_DB->command,cols[0]);263 _data_DB->command="CREATE TABLE "; 264 _data_DB->command.append(_data_DB->tablename); 265 _data_DB->command.append("("); 266 _data_DB->command.append(cols[0]); 275 267 //First column is the name of the data (coresponding to the name of the output/input pair) 276 268 //It is the primary key so any subsequent data with the same name will replace the row 277 strcat(_data_DB->command, " TEXT PRIMARY KEY ON CONFLICT REPLACE, "); 278 strcat(_data_DB->command, cols[1]); 279 strcat(_data_DB->command, " TEXT"); 280 strcat(_data_DB->command, ");"); 269 _data_DB->command.append(" TEXT PRIMARY KEY ON CONFLICT REPLACE, "); 270 _data_DB->command.append(cols[1]); 271 _data_DB->command.append(" TEXT);"); 281 272 282 273 // execute create table command 283 274 284 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command , 128, &ppStmt, &pzTail);275 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), 128, &ppStmt, &pzTail); 285 276 if( rc!=SQLITE_OK && rc!=101 ) 286 277 printf("ServiceManagementLayer::CreateDataDB 'prepare_stmt' error %d\n", rc); … … 559 550 //printf("RS_buffer = %s\n", buffer); 560 551 // generate command 561 strcpy(_services_DB->command, "insert into "); 562 strcat(_services_DB->command, _services_DB->tablename); 563 strcat(_services_DB->command, " ("); 564 strcat(_services_DB->command, cols[0]); 565 strcat(_services_DB->command, ", "); 566 strcat(_services_DB->command, cols[1]); 567 strcat(_services_DB->command, ") "); 568 strcat(_services_DB->command, " values("); 569 sprintf(_services_DB->command, "%s%d", _services_DB->command, ID); 570 strcat(_services_DB->command, ", '"); 571 strcat(_services_DB->command, buffer); 572 strcat(_services_DB->command, "');"); 552 _services_DB->command="insert into "; 553 _services_DB->command.append(_services_DB->tablename); 554 _services_DB->command.append(" ("); 555 _services_DB->command.append(cols[0]); 556 _services_DB->command.append(", "); 557 _services_DB->command.append(cols[1]); 558 _services_DB->command.append(") "); 559 _services_DB->command.append(" values("); 560 char temp[3]; 561 memset(temp,0,3); 562 sprintf(temp, "%d", ID); 563 _services_DB->command.append(temp); 564 _services_DB->command.append(", '"); 565 _services_DB->command.append(buffer); 566 _services_DB->command.append("');"); 573 567 574 568 //printf("search command: %s\n", _services_DB->command); 575 569 // execute add command 576 570 char *errorMsg; 577 int rc = sqlite3_exec(_services_DB->db, _services_DB->command , callback, 0, &errorMsg);571 int rc = sqlite3_exec(_services_DB->db, _services_DB->command.c_str(), callback, 0, &errorMsg); 578 572 if( rc!=SQLITE_OK && rc!=101 ) 579 573 fprintf(stderr, "ServiceManagementLayer::RecieveServices DB Error %s\n", errorMsg); … … 613 607 miss[activeMission].services[i].name.compare("shell")){ 614 608 //If it is a service, search the database of registered services to find the ID of the component that registered it 615 strcpy(_services_DB->command, "select "); 616 strcat(_services_DB->command, _services_DB->tablename); 617 strcat(_services_DB->command, ".* from "); 618 strcat(_services_DB->command, _services_DB->tablename); 619 strcat(_services_DB->command, " where Service_Name=="); 620 sprintf(_services_DB->command, "%s'%s';", _services_DB->command, miss[activeMission].services[i].name.c_str()); 609 _services_DB->command="select "; 610 _services_DB->command.append(_services_DB->tablename); 611 _services_DB->command.append(".* from "); 612 _services_DB->command.append( _services_DB->tablename); 613 _services_DB->command.append(" where Service_Name=='"); 614 _services_DB->command.append(miss[activeMission].services[i].name); 615 _services_DB->command.append("';"); 621 616 622 617 sqlite3_stmt * pStatement; 623 int rc = sqlite3_prepare_v2(_services_DB->db, _services_DB->command , -1, &pStatement, NULL);618 int rc = sqlite3_prepare_v2(_services_DB->db, _services_DB->command.c_str(), -1, &pStatement, NULL); 624 619 if (rc == SQLITE_OK){ 625 620 if (sqlite3_step(pStatement) == SQLITE_ROW) … … 630 625 } 631 626 } else { 632 printf("services_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_services_DB->command );627 printf("services_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_services_DB->command.c_str()); 633 628 } 634 629 //printf("s_name=%s\n",miss[activeMission].services[i].name.c_str()); … … 677 672 for(int t = 0; t < k; t++){ 678 673 memset(buffer, 0 , 256); 679 strcpy(_data_DB->command, "select "); 680 strcat(_data_DB->command, _data_DB->tablename); 681 strcat(_data_DB->command, ".* from "); 682 strcat(_data_DB->command, _data_DB->tablename); 683 strcat(_data_DB->command, " where Tag=="); 684 sprintf(_data_DB->command, "%s'%s';", _data_DB->command, miss[activeMission].input[t].c_str()); 674 _data_DB->command="select "; 675 _data_DB->command.append(_data_DB->tablename); 676 _data_DB->command.append(".* from "); 677 _data_DB->command.append(_data_DB->tablename); 678 _data_DB->command.append(" where Tag=='"); 679 _data_DB->command.append(miss[activeMission].input[t]); 680 _data_DB->command.append("';"); 685 681 sqlite3_stmt * pStatement; 686 int rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command , -1, &pStatement, NULL);682 int rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL); 687 683 if (rc == SQLITE_OK){ 688 684 if (sqlite3_step(pStatement) == SQLITE_ROW) 689 685 data=((const char*) sqlite3_column_text(pStatement, 1)); 690 686 else { 691 printf(" data_DB:: Data not yet in DB.\n");687 printf("3data_DB:: Data not yet in DB., %s\n", _data_DB->command.c_str()); 692 688 rc=31337; 693 689 } 694 690 } 695 691 else { 696 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command );692 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command.c_str()); 697 693 } 698 694 sqlite3_finalize(pStatement); … … 722 718 //Load and transmit the input data 723 719 while(i < 10 && !miss[activeMission].services[sourceID].input[i].empty()){ 724 strcpy(_data_DB->command, "select "); 725 strcat(_data_DB->command, _data_DB->tablename); 726 strcat(_data_DB->command, ".* from "); 727 strcat(_data_DB->command, _data_DB->tablename); 728 strcat(_data_DB->command, " where Tag=="); 729 sprintf(_data_DB->command, "%s'%s';", _data_DB->command, miss[activeMission].services[sourceID].input[i].c_str()); 720 _data_DB->command="select "; 721 _data_DB->command.append(_data_DB->tablename); 722 _data_DB->command.append(".* from "); 723 _data_DB->command.append(_data_DB->tablename); 724 _data_DB->command.append(" where Tag=='"); 725 _data_DB->command.append(miss[activeMission].services[sourceID].input[i]); 726 _data_DB->command.append("';"); 730 727 sqlite3_stmt * pStatement; 731 int rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command , -1, &pStatement, NULL);728 int rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL); 732 729 if (rc == SQLITE_OK){ 733 730 if (sqlite3_step(pStatement) == SQLITE_ROW) 734 731 data.append((const char*) sqlite3_column_text(pStatement, 1)); 735 732 else { 736 printf(" data_DB:: Data not yet in DB.\n");733 printf("2data_DB:: Data not yet in DB.\n"); 737 734 rc=31337; 738 735 } 739 736 } 740 737 else { 741 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command );738 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command.c_str()); 742 739 } 743 740 sqlite3_finalize(pStatement); … … 774 771 } 775 772 776 strcpy(_data_DB->command, "insert or replace into ");777 strcat(_data_DB->command,_data_DB->tablename);778 strcat(_data_DB->command," (");779 strcat(_data_DB->command,cols[0]);780 strcat(_data_DB->command,", ");781 strcat(_data_DB->command,cols[1]);782 strcat(_data_DB->command,") ");783 strcat(_data_DB->command," values('");784 strcat(_data_DB->command, miss[activeMission].services[sourceID].output[j].c_str());785 strcat(_data_DB->command,"', '");786 strcat(_data_DB->command, data.c_str());787 strcat(_data_DB->command,"');");773 _data_DB->command="insert or replace into "; 774 _data_DB->command.append(_data_DB->tablename); 775 _data_DB->command.append(" ("); 776 _data_DB->command.append(cols[0]); 777 _data_DB->command.append(", "); 778 _data_DB->command.append(cols[1]); 779 _data_DB->command.append(") "); 780 _data_DB->command.append(" values('"); 781 _data_DB->command.append(miss[activeMission].services[sourceID].output[j]); 782 _data_DB->command.append("', '"); 783 _data_DB->command.append(data); 784 _data_DB->command.append("');"); 788 785 char *errorMsg; 789 rc = sqlite3_exec(_data_DB->db, _data_DB->command , callback, 0, &errorMsg);786 rc = sqlite3_exec(_data_DB->db, _data_DB->command.c_str(), callback, 0, &errorMsg); 790 787 if( rc!=SQLITE_OK && rc!=101 ) 791 788 fprintf(stderr, "SQL error: %s\n", errorMsg); … … 847 844 char buffer[256]; 848 845 char buffer1[256]; 849 char *token, *token2;846 std::string token, token2; 850 847 std::string data2; 851 848 int rc; … … 866 863 t=atoi(buffer); 867 864 for(int m = 0; m < t; m++) { 868 //printf("data=%s\n", data_obsv.c_str());869 865 memset(buffer1, 0, 256); 870 866 ReadMessage(shellSocketFD, buffer1); 871 strcpy(_data_DB->command, "insert into ");872 strcat(_data_DB->command,_data_DB->tablename);873 strcat(_data_DB->command," (");874 strcat(_data_DB->command,cols[0]);875 strcat(_data_DB->command,", ");876 strcat(_data_DB->command,cols[1]);877 strcat(_data_DB->command,") ");867 _data_DB->command="insert into "; 868 _data_DB->command.append(_data_DB->tablename); 869 _data_DB->command.append(" ("); 870 _data_DB->command.append(cols[0]); 871 _data_DB->command.append(", "); 872 _data_DB->command.append(cols[1]); 873 _data_DB->command.append(") "); 878 874 memset(buffer, 0, 256); 879 875 ReadMessage(shellSocketFD, buffer); 880 sprintf(_data_DB->command, "%s values('%s', '1@%s@%s');", _data_DB->command, buffer1, buffer1, buffer); 881 rc = sqlite3_exec(_data_DB->db, _data_DB->command, callback, 0, &errorMsg); 876 _data_DB->command.append(" values('"); 877 _data_DB->command.append(buffer1); 878 _data_DB->command.append("', '1@"); 879 _data_DB->command.append(buffer1); 880 _data_DB->command.append("@"); 881 _data_DB->command.append(buffer); 882 _data_DB->command.append("');"); 883 rc = sqlite3_exec(_data_DB->db, _data_DB->command.c_str(), callback, 0, &errorMsg); 882 884 if( rc!=SQLITE_OK && rc!=101 ) 883 885 fprintf(stderr, "SQL error: %s\n", errorMsg); … … 913 915 for(t = 0; t < 10; t++){ 914 916 if(!miss[activeMission].services[i].output[t].empty()){ 915 //printf("i-numstmts-1 = %d\n", i-numstatements[0]-1);916 917 input=miss[activeMission].services[i-numstatements[0]-1].output[t]; 917 strcpy(_data_DB->command, "SELECT "); 918 strcat(_data_DB->command, _data_DB->tablename); 919 strcat(_data_DB->command, ".* from "); 920 strcat(_data_DB->command, _data_DB->tablename); 921 strcat(_data_DB->command, " where Tag=="); 922 sprintf(_data_DB->command, "%s'%s';", _data_DB->command, input.c_str()); 918 _data_DB->command="SELECT "; 919 _data_DB->command.append(_data_DB->tablename); 920 _data_DB->command.append(".* from "); 921 _data_DB->command.append(_data_DB->tablename); 922 _data_DB->command.append(" where Tag=='"); 923 _data_DB->command.append(input); 924 _data_DB->command.append("';"); 923 925 sqlite3_stmt * pStatement; 924 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command , -1, &pStatement, NULL);926 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL); 925 927 if (rc == SQLITE_OK){ 926 928 if (sqlite3_step(pStatement) == SQLITE_ROW) … … 931 933 } 932 934 } else { 933 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command );935 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command.c_str()); 934 936 } 935 937 sqlite3_finalize(pStatement); 936 938 //printf("data=%s\n", data.c_str()); 937 token = strtok((char *)data.c_str(), "@");938 token = strtok(NULL, "@");939 token = strtok(NULL, "@");940 //printf(" data=%s\n", token);939 int pos = data.find_last_of("@", data.length()-2); 940 token = data.substr(pos+1); 941 token.erase(token.length()-1); 942 //printf("token=%s, %d\n", token.c_str(), pos); 941 943 data.clear(); 942 944 break; 943 945 } 944 946 } 945 //printf("L 0:--- %s %s---\n", miss[activeMission].services[i].output[t].c_str(), token);947 //printf("Level 0:--- %s %s---\n", miss[activeMission].services[i].output[t].c_str(), token); 946 948 bool doit = false; 947 949 if(miss[activeMission].services[i].output[t].find(">") != string::npos){ 948 950 std::string data2; 949 strcpy(_data_DB->command, "SELECT "); 950 strcat(_data_DB->command, _data_DB->tablename); 951 strcat(_data_DB->command, ".* from "); 952 strcat(_data_DB->command, _data_DB->tablename); 953 strcat(_data_DB->command, " where Tag=="); 954 miss[activeMission].services[i].output[t].erase(0, 1); 955 //printf("here! %s\n", miss[activeMission].services[i].output[t].c_str()); 956 sprintf(_data_DB->command, "%s'%s';", _data_DB->command, miss[activeMission].services[i].output[t].c_str()); 951 _data_DB->command="SELECT "; 952 _data_DB->command.append(_data_DB->tablename); 953 _data_DB->command.append(".* from "); 954 _data_DB->command.append(_data_DB->tablename); 955 _data_DB->command.append(" where Tag=='"); 956 _data_DB->command.append(miss[activeMission].services[i].output[t].erase(0, 1)); 957 _data_DB->command.append("';"); 957 958 sqlite3_stmt * pStatement; 958 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command , -1, &pStatement, NULL);959 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL); 959 960 if (rc == SQLITE_OK){ 960 961 if (sqlite3_step(pStatement) == SQLITE_ROW) … … 965 966 } 966 967 } else { 967 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command );968 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command.c_str()); 968 969 } 969 sqlite3_finalize(pStatement); 970 char* token2 = strtok((char *)data2.c_str(), "@"); 971 token2 = strtok(NULL, "@"); 972 token2 = strtok(NULL, "@"); 973 if(atof(token) > atof(token2)) 970 sqlite3_finalize(pStatement); 971 972 int pos = data2.find_last_of("@", data2.length()-2); 973 token2 = data2.substr(pos+1); 974 token2.erase(token2.length()-1); 975 //printf("token2=%s, %d\n", token2.c_str(), pos); 976 if(atof(token.c_str()) > atof(token2.c_str())) 974 977 doit=true; 975 978 //printf("%s %s\n", buffer, token); 976 979 } 977 else if ( strstr(miss[activeMission].services[i].output[t].c_str(), token))980 else if (miss[activeMission].services[i].output[t].find(token) != string::npos) 978 981 doit=true; 979 982 if(doit){ 980 //if(strstr(miss[activeMission].services[i].output[t].c_str(), token)){ 981 //printf("L0:if taken\n"); 983 //printf("Level 0:if taken\n"); 982 984 for(uint16_t k = i+1; k <= i+miss[activeMission].services[i].num_conds; k++){ 983 //printf("transacting data for k=%d\n", k);984 //printf("%s---%d\n", miss[activeMission].services[k].name.c_str(), k);985 985 if(miss[activeMission].services[k].name.compare("if")==0){ 986 //printf("L 1:if detected\n");986 //printf("Level 1:if detected\n"); 987 987 input.clear(); 988 988 check.clear(); 989 989 for(t = 0; t < 10; t++){ 990 990 if(!miss[activeMission].services[k].output[t].empty()){ 991 //printf("i-numstmts = %d\n", i-numstatements-1);992 991 input=miss[activeMission].services[k-numstatements[1]-1].output[t]; 993 strcpy(_data_DB->command, "SELECT "); 994 strcat(_data_DB->command, _data_DB->tablename); 995 strcat(_data_DB->command, ".* from "); 996 strcat(_data_DB->command, _data_DB->tablename); 997 strcat(_data_DB->command, " where Tag=="); 998 sprintf(_data_DB->command, "%s'%s';", _data_DB->command, input.c_str()); 992 _data_DB->command="SELECT "; 993 _data_DB->command.append(_data_DB->tablename); 994 _data_DB->command.append(".* from "); 995 _data_DB->command.append(_data_DB->tablename); 996 _data_DB->command.append(" where Tag=='"); 997 _data_DB->command.append(input); 998 _data_DB->command.append("';"); 999 999 sqlite3_stmt * pStatement; 1000 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command , -1, &pStatement, NULL);1000 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL); 1001 1001 if (rc == SQLITE_OK){ 1002 1002 if (sqlite3_step(pStatement) == SQLITE_ROW) … … 1007 1007 } 1008 1008 } else { 1009 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command );1009 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command.c_str()); 1010 1010 } 1011 1011 sqlite3_finalize(pStatement); 1012 //printf(" data=%s\n", data.c_str());1013 token = strtok((char *)data.c_str(), "@");1014 token = strtok(NULL, "@");1015 token = strtok(NULL, "@");1016 //printf(" data=%s\n", token);1012 //printf("Level 1:data=%s\n", data.c_str()); 1013 int pos = data.find_last_of("@", data.length()-2); 1014 token = data.substr(pos+1); 1015 token.erase(token.length()-1); 1016 //printf("Level 1:token=%s\n", token); 1017 1017 break; 1018 1018 } 1019 1019 } 1020 //printf("L1:--- %s %s---\n", miss[activeMission].services[k].output[t].c_str(), token);1021 1020 bool doit = false; 1022 //printf("here! %s\n", miss[activeMission].services[k].output[t].c_str());1023 1021 if(miss[activeMission].services[k].output[t].find(">") != string::npos){ 1024 1022 std::string data2; 1025 strcpy(_data_DB->command, "SELECT ");1026 strcat(_data_DB->command,_data_DB->tablename);1027 strcat(_data_DB->command,".* from ");1028 strcat(_data_DB->command,_data_DB->tablename);1029 strcat(_data_DB->command, " where Tag==");1030 miss[activeMission].services[k].output[t].erase(0, 1);1031 sprintf(_data_DB->command, "%s'%s';", _data_DB->command, miss[activeMission].services[k].output[t].c_str());1023 _data_DB->command="SELECT "; 1024 _data_DB->command.append(_data_DB->tablename); 1025 _data_DB->command.append(".* from "); 1026 _data_DB->command.append(_data_DB->tablename); 1027 _data_DB->command.append(" where Tag=='"); 1028 _data_DB->command.append(miss[activeMission].services[k].output[t].erase(0, 1)); 1029 _data_DB->command.append("';"); 1032 1030 sqlite3_stmt * pStatement; 1033 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command , -1, &pStatement, NULL);1031 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL); 1034 1032 if (rc == SQLITE_OK){ 1035 1033 if (sqlite3_step(pStatement) == SQLITE_ROW) … … 1040 1038 } 1041 1039 } else { 1042 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command );1040 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command.c_str()); 1043 1041 } 1044 1042 sqlite3_finalize(pStatement); 1045 //printf("data=%s token=%s\n", data2.c_str(), token); 1046 token2 = strtok((char *)data2.c_str(), "@"); 1047 token2 = strtok(NULL, "@"); 1048 token2 = strtok(NULL, "@"); 1049 //printf("token2 %s token %s\n", token2, token); 1050 if(atof(token) > atof(token2)) 1051 doit=true; 1043 int pos = data2.find_last_of("@", data2.length()-2); 1044 token2 = data2.substr(pos+1); 1045 token2.erase(token2.length()-1); 1046 //printf("token=%s token2=%s\n", token.c_str(), token2.c_str()); 1047 if(atof(token.c_str()) > atof(token2.c_str())) 1048 doit=true; 1052 1049 } 1053 else if ( strstr(miss[activeMission].services[k].output[t].c_str(), token))1050 else if (miss[activeMission].services[k].output[t].find(token) != string::npos) 1054 1051 doit=true; 1055 1052 if(doit){ 1056 //printf("L 1:if taken\n");1053 //printf("Level 1:if taken\n"); 1057 1054 for(uint16_t j = k+1; j <= k+miss[activeMission].services[k].num_conds; j++){ 1058 //printf("transacting data for k=%d\n", k);1059 //printf("%s---%d\n", miss[activeMission].services[j].name.c_str(), j);1060 1055 if(miss[activeMission].services[j].name.compare("if")==0){ 1061 //printf("L 2:if detected\n");1056 //printf("Level 2:if detected\n"); 1062 1057 input.clear(); 1063 1058 check.clear(); 1064 1059 for(t = 0; t < 10; t++){ 1065 1060 if(!miss[activeMission].services[j].output[t].empty()){ 1066 //printf("i-numstmts = %d\n", i-numstatements-1);1067 1061 input=miss[activeMission].services[j-numstatements[2]-1].output[t]; 1068 strcpy(_data_DB->command, "SELECT "); 1069 strcat(_data_DB->command, _data_DB->tablename); 1070 strcat(_data_DB->command, ".* from "); 1071 strcat(_data_DB->command, _data_DB->tablename); 1072 strcat(_data_DB->command, " where Tag=="); 1073 sprintf(_data_DB->command, "%s'%s';", _data_DB->command, input.c_str()); 1062 _data_DB->command="SELECT "; 1063 _data_DB->command.append(_data_DB->tablename); 1064 _data_DB->command.append(".* from "); 1065 _data_DB->command.append(_data_DB->tablename); 1066 _data_DB->command.append(" where Tag=='"); 1067 _data_DB->command.append(input); 1068 _data_DB->command.append("';"); 1074 1069 sqlite3_stmt * pStatement; 1075 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command , -1, &pStatement, NULL);1070 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL); 1076 1071 if (rc == SQLITE_OK){ 1077 1072 if (sqlite3_step(pStatement) == SQLITE_ROW) … … 1082 1077 } 1083 1078 } else { 1084 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command );1079 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command.c_str()); 1085 1080 } 1086 1081 sqlite3_finalize(pStatement); 1087 1082 //printf("data=%s\n", data.c_str()); 1088 token = strtok((char *)data.c_str(), "@");1089 token = strtok(NULL, "@");1090 token = strtok(NULL, "@");1091 //printf(" data=%s\n", token);1083 int pos = data.find_last_of("@", data.length()-2); 1084 token = data.substr(pos+1); 1085 token.erase(token.length()-1); 1086 //printf("token=%s\n", token.c_str()); 1092 1087 data.clear(); 1093 1088 break; 1094 1089 } 1095 1090 } 1096 //printf("L2:---%s||%s---\n", miss[activeMission].services[j].output[t].c_str(), token);1097 1091 bool doit = false; 1098 //printf("here! %s\n", miss[activeMission].services[j].output[t].c_str());1099 1092 if(miss[activeMission].services[j].output[t].find(">") != string::npos){ 1100 strcpy(_data_DB->command, "SELECT ");1101 strcat(_data_DB->command,_data_DB->tablename);1102 strcat(_data_DB->command,".* from ");1103 strcat(_data_DB->command,_data_DB->tablename);1104 strcat(_data_DB->command, " where Tag==");1105 miss[activeMission].services[k].output[t].erase(0, 1);1106 sprintf(_data_DB->command, "%s'%s';", _data_DB->command, miss[activeMission].services[j].output[t].c_str());1093 _data_DB->command="SELECT "; 1094 _data_DB->command.append(_data_DB->tablename); 1095 _data_DB->command.append(".* from "); 1096 _data_DB->command.append(_data_DB->tablename); 1097 _data_DB->command.append(" where Tag=='"); 1098 _data_DB->command.append(miss[activeMission].services[j].output[t].erase(0, 1)); 1099 _data_DB->command.append("';"); 1107 1100 sqlite3_stmt * pStatement; 1108 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command , -1, &pStatement, NULL);1101 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL); 1109 1102 if (rc == SQLITE_OK){ 1110 1103 if (sqlite3_step(pStatement) == SQLITE_ROW) … … 1115 1108 } 1116 1109 } else { 1117 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command );1110 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command.c_str()); 1118 1111 } 1119 1112 sqlite3_finalize(pStatement); 1120 token2 = strtok((char *)data2.c_str(), "@"); 1121 token2 = strtok(NULL, "@"); 1122 token2 = strtok(NULL, "@"); 1123 if(atof(token) > atof(token2)) 1113 1114 int pos = data2.find_last_of("@", data2.length()-2); 1115 token2 = data2.substr(pos+1); 1116 token2.erase(token2.length()-1); 1117 if(atof(token.c_str()) > atof(token2.c_str())) 1124 1118 doit=true; 1125 1119 data.clear(); 1126 1120 } 1127 else if ( strstr(miss[activeMission].services[j].output[t].c_str(), token))1121 else if (miss[activeMission].services[j].output[t].find(token) != string::npos) 1128 1122 doit=true; 1129 1123 if(doit){ 1130 //printf("L 1:if taken\n");1124 //printf("Level 1:if taken\n"); 1131 1125 for(uint16_t l = j+1; l <= j+miss[activeMission].services[j].num_conds; l++){ 1132 //printf("transacting data for k=%d\n", k);1133 1126 TransactData(l); 1134 1127 } 1135 1128 } 1136 1129 else 1137 //printf("L 2:if not taken\n");1130 //printf("Level 2:if not taken\n"); 1138 1131 numstatements[2] +=miss[activeMission].services[j].num_conds+1; 1139 1132 j+=miss[activeMission].services[j].num_conds; 1140 //printf(" doneif %d, %d, %d\n", numstatements, miss[activeMission].services[i].num_conds, i);1133 //printf("Level 2:doneif %d, %d, %d\n", numstatements, miss[activeMission].services[i].num_conds, i); 1141 1134 }else if(miss[activeMission].services[j].name.compare("dowhile")==0){ 1142 1135 numstatements[0]=0; 1143 //printf("L 2while detected\n");1136 //printf("Level 2:while detected\n"); 1144 1137 while(true){ 1145 1138 uint16_t l; 1146 1139 for(l = j+1; l <= j+miss[activeMission].services[j].num_conds; l++){ 1147 1140 TransactData(l); 1148 //printf("l=%d\n", l);1149 1141 } 1150 1142 data.clear(); 1151 //printf("L2:while detected %d, %d\n", k, miss[activeMission].services[i].num_conds);1152 1143 input.clear(); 1153 1144 check.clear(); … … 1156 1147 if(!miss[activeMission].services[j].output[t].empty()){ 1157 1148 input=miss[activeMission].services[l-1].output[t]; 1158 strcpy(_data_DB->command, "SELECT "); 1159 strcat(_data_DB->command, _data_DB->tablename); 1160 strcat(_data_DB->command, ".* from "); 1161 strcat(_data_DB->command, _data_DB->tablename); 1162 strcat(_data_DB->command, " where Tag=="); 1163 sprintf(_data_DB->command, "%s'%s';", _data_DB->command, input.c_str()); 1149 _data_DB->command="SELECT "; 1150 _data_DB->command.append(_data_DB->tablename); 1151 _data_DB->command.append(".* from "); 1152 _data_DB->command.append(_data_DB->tablename); 1153 _data_DB->command.append(" where Tag=='"); 1154 _data_DB->command.append(input); 1155 _data_DB->command.append("';"); 1164 1156 sqlite3_stmt * pStatement; 1165 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command , -1, &pStatement, NULL);1157 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL); 1166 1158 if (rc == SQLITE_OK){ 1167 1159 if (sqlite3_step(pStatement) == SQLITE_ROW) … … 1172 1164 } 1173 1165 } else { 1174 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command);1166 printf("data_DB:: SQL statement error. rc = %i\n%s\n",rc,_data_DB->command.c_str()); 1175 1167 } 1176 1168 sqlite3_finalize(pStatement); 1177 //printf(" data=%s\n", data.c_str());1178 token = strtok((char *)data.c_str(), "@");1179 token = strtok(NULL, "@");1180 token = strtok(NULL, "@");1181 //printf(" data=%s\n", token);1169 //printf("Level 2:data=%s\n", data.c_str()); 1170 int pos = data.find_last_of("@", data.length()-2); 1171 token = data.substr(pos+1); 1172 token.erase(token.length()-1); 1173 //printf("Level 2:token=%s\n", token); 1182 1174 break; 1183 1175 } 1184 1176 } 1185 //printf("L 2:--- %s %s---\n", miss[activeMission].services[j].output[t].c_str(), token);1186 if( strstr(miss[activeMission].services[j].output[t].c_str(), token)){1187 //printf("L 2:while taken again!\n");1177 //printf("Level 2:--- %s %s---\n", miss[activeMission].services[j].output[t].c_str(), token); 1178 if(miss[activeMission].services[j].output[t].find(token) != string::npos){ 1179 //printf("Level 2:while taken again!\n"); 1188 1180 } 1189 1181 else { 1190 //printf(" no more while\n");1182 //printf("Level 2:no more while\n"); 1191 1183 break;} 1192 1184 } 1193 1185 j+=miss[activeMission].services[j].num_conds; 1194 //printf("doneif\n");1195 1186 } 1196 1187 else{ 1197 //printf(" NO L2 COND!\n");1188 //printf("Level 2: no conditional\n"); 1198 1189 numstatements[2]=0; 1199 1190 TransactData(j); … … 1202 1193 } 1203 1194 else{ 1204 //printf("L 1: if not taken\n");1195 //printf("Level 1: if not taken\n"); 1205 1196 } 1206 1197 numstatements[1] +=miss[activeMission].services[k].num_conds+1; … … 1209 1200 }else if(miss[activeMission].services[k].name.compare("dowhile")==0){ 1210 1201 numstatements[0]=0; 1211 //printf("L 1while detected\n");1202 //printf("Level 1: while detected\n"); 1212 1203 while(true){ 1213 1204 uint16_t j; … … 1216 1207 } 1217 1208 data.clear(); 1218 //printf("L1:while detected %d, %d\n", k, miss[activeMission].services[i].num_conds);1219 1209 input.clear(); 1220 1210 check.clear(); … … 1223 1213 if(!miss[activeMission].services[k].output[t].empty()){ 1224 1214 input=miss[activeMission].services[j-1].output[t]; 1225 //printf("input=%s\n", input.c_str());1226 strcpy(_data_DB->command, "SELECT ");1227 strcat(_data_DB->command, _data_DB->tablename);1228 strcat(_data_DB->command, ".* from ");1229 strcat(_data_DB->command, _data_DB->tablename);1230 strcat(_data_DB->command, " where Tag==");1231 sprintf(_data_DB->command, "%s'%s';", _data_DB->command, input.c_str());1215 _data_DB->command="SELECT "; 1216 _data_DB->command.append(_data_DB->tablename); 1217 _data_DB->command.append(".* from "); 1218 _data_DB->command.append(_data_DB->tablename); 1219 _data_DB->command.append(" where Tag=='"); 1220 _data_DB->command.append(input); 1221 _data_DB->command.append("';"); 1232 1222 sqlite3_stmt * pStatement; 1233 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command , -1, &pStatement, NULL);1223 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL); 1234 1224 if (rc == SQLITE_OK){ 1235 1225 if (sqlite3_step(pStatement) == SQLITE_ROW) … … 1240 1230 } 1241 1231 } else { 1242 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command );1232 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command.c_str()); 1243 1233 } 1244 1234 sqlite3_finalize(pStatement); 1245 //printf(" data=%s\n", data.c_str());1246 token = strtok((char *)data.c_str(), "@");1247 token = strtok(NULL, "@");1248 token = strtok(NULL, "@");1249 //printf(" data=%s\n", token);1235 //printf("Level 1:data=%s\n", data.c_str()); 1236 int pos = data.find_last_of("@", data.length()-2); 1237 token = data.substr(pos+1); 1238 token.erase(token.length()-1); 1239 //printf("Level 1:token=%s\n", token); 1250 1240 break; 1251 1241 } 1252 1242 } 1253 //printf("L 1:--- %s %s---\n", miss[activeMission].services[k].output[t].c_str(), token);1254 if( strstr(miss[activeMission].services[k].output[t].c_str(), token)){1255 //printf("L 1:while taken again!\n");1243 //printf("Level 1:--- %s %s---\n", miss[activeMission].services[k].output[t].c_str(), token); 1244 if(miss[activeMission].services[k].output[t].find(token) != string::npos){ 1245 //printf("Level 1:while taken again!\n"); 1256 1246 } 1257 1247 else { 1258 //printf(" no more while\n");1248 //printf("Level 1:While finished\n"); 1259 1249 break;} 1260 1250 } 1261 1251 k+=miss[activeMission].services[k].num_conds; 1262 //printf("doneif\n");1263 1252 } 1264 1253 else{ 1265 //printf(" NO L1 COND!\n");1254 //printf("Level1:No conditional\n"); 1266 1255 numstatements[1]=0; 1267 1256 TransactData(k); 1268 1257 } 1269 1270 //numstatements[0] +=miss[activeMission].services[i].num_conds+1;1271 //i+=miss[activeMission].services[i].num_conds;1272 //printf("doneif %d, %d, %d\n", numstatements, miss[activeMission].services[i].num_conds, i);1273 1258 } 1274 1259 } 1275 // else1276 //printf("LO if not taken\n");1277 1260 numstatements[0] +=miss[activeMission].services[i].num_conds+1; 1278 1261 i+=miss[activeMission].services[i].num_conds; 1279 //printf("doneif %d, %d, %d\n", numstatements, miss[activeMission].services[i].num_conds, i);1280 1262 } 1281 1263 else if(miss[activeMission].services[i].name.compare("dowhile")==0) 1282 1264 { 1283 1265 numstatements[0]=0; 1284 //printf("L 0while detected\n");1266 //printf("Level 0: while detected\n"); 1285 1267 while(true){ 1286 1268 uint16_t k; … … 1295 1277 if(!miss[activeMission].services[i].output[t].empty()){ 1296 1278 input=miss[activeMission].services[k-1].output[t]; 1297 //printf("input=%s\n", input.c_str());1298 strcpy(_data_DB->command, "SELECT ");1299 strcat(_data_DB->command, _data_DB->tablename);1300 strcat(_data_DB->command, ".* from ");1301 strcat(_data_DB->command, _data_DB->tablename);1302 strcat(_data_DB->command, " where Tag==");1303 sprintf(_data_DB->command, "%s'%s';", _data_DB->command, input.c_str());1279 _data_DB->command="SELECT "; 1280 _data_DB->command.append(_data_DB->tablename); 1281 _data_DB->command.append(".* from "); 1282 _data_DB->command.append(_data_DB->tablename); 1283 _data_DB->command.append(" where Tag=='"); 1284 _data_DB->command.append(input); 1285 _data_DB->command.append("';"); 1304 1286 sqlite3_stmt * pStatement; 1305 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command , -1, &pStatement, NULL);1287 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL); 1306 1288 if (rc == SQLITE_OK){ 1307 1289 if (sqlite3_step(pStatement) == SQLITE_ROW) … … 1312 1294 } 1313 1295 } else { 1314 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command );1296 printf("data_DB:: Error executing SQL statement. rc = %i\n%s\n",rc,_data_DB->command.c_str()); 1315 1297 } 1316 1298 sqlite3_finalize(pStatement); 1317 token = strtok((char *)data.c_str(), "@");1318 token = strtok(NULL, "@");1319 token = strtok(NULL, "@");1299 int pos = data.find_last_of("@", data.length()-2); 1300 token = data.substr(pos+1); 1301 token.erase(token.length()-1); 1320 1302 break; 1321 1303 } 1322 1304 } 1323 //printf("L 0:--- %s %s---\n", miss[activeMission].services[i].output[t].c_str(), token);1324 if( strstr(miss[activeMission].services[i].output[t].c_str(), token)){1325 //printf("L 0:while taken again!\n");1305 //printf("Level 0:--- %s %s---\n", miss[activeMission].services[i].output[t].c_str(), token); 1306 if(miss[activeMission].services[i].output[t].find(token) != string::npos){ 1307 //printf("Level 0:while taken again!\n"); 1326 1308 } 1327 1309 else { 1328 //printf(" no more while\n");1310 //printf("Level 0:no more while\n"); 1329 1311 break;} 1330 1312 } 1331 1313 i+=miss[activeMission].services[i].num_conds; 1332 //printf("doneif\n");1333 1314 } 1334 1315 else{ 1335 1316 numstatements[0]=0; 1336 //printf("L 0 Neither if nor while\n");1317 //printf("Level 0: No conditional\n"); 1337 1318 TransactData(i);} 1338 1319 i++; … … 1340 1321 i=0; 1341 1322 data.clear(); 1342 1343 1344 1323 1345 1324 if(!shellFound) … … 1352 1331 SendMessage(shellSocketFD, buffer); 1353 1332 for(int t = 0; t < k; t++){ 1354 //printf("---%s---\n", miss[activeMission].input[t].c_str());1355 1333 SendMessage(shellSocketFD, miss[activeMission].input[t].c_str()); 1356 1334 SendMessage(shellSocketFD, "0"); … … 1385 1363 ServiceManagementLayer::ListServices() 1386 1364 { 1387 strcpy(_services_DB->command, "select ");1388 strcat(_services_DB->command,_services_DB->tablename);1389 strcat(_services_DB->command,".* from ");1390 strcat(_services_DB->command,_services_DB->tablename);1391 strcat(_services_DB->command,";");1365 _services_DB->command="select "; 1366 _services_DB->command.append(_services_DB->tablename); 1367 _services_DB->command.append(".* from "); 1368 _services_DB->command.append(_services_DB->tablename); 1369 _services_DB->command.append(";"); 1392 1370 1393 1371 // execute print (select all) command 1394 1372 char *errorMsg; 1395 int rc = sqlite3_exec(_services_DB->db, _services_DB->command , callback, 0, &errorMsg);1373 int rc = sqlite3_exec(_services_DB->db, _services_DB->command.c_str(), callback, 0, &errorMsg); 1396 1374 if( rc!=SQLITE_OK && rc!=101 ) 1397 1375 fprintf(stderr, "SQL error: %s\n", errorMsg); 1398 printf("database %s, table %s:\n", _services_DB->filename , _services_DB->tablename);1376 printf("database %s, table %s:\n", _services_DB->filename.c_str(), _services_DB->tablename.c_str()); 1399 1377 } 1400 1378 … … 1623 1601 memset(buffer, 0, 256); 1624 1602 ReadMessage(CE_List[ID].FD, buffer); 1625 strcpy(_services_DB->command, "DELETE FROM "); 1626 strcat(_services_DB->command, _services_DB->tablename); 1627 strcat(_services_DB->command, " WHERE ID_Num IN (SELECT"); 1628 sprintf(_services_DB->command, " %s %d",_services_DB->command, ID); 1629 strcat(_services_DB->command, " FROM "); 1630 strcat(_services_DB->command, _services_DB->tablename); 1631 strcat(_services_DB->command, " WHERE Service_Name"); 1632 strcat(_services_DB->command, "=="); 1633 sprintf(_services_DB->command, "%s'%s');", _services_DB->command, buffer); 1603 _services_DB->command="DELETE FROM "; 1604 _services_DB->command.append(_services_DB->tablename); 1605 _services_DB->command.append(" WHERE ID_Num IN (SELECT "); 1606 char tmp[3]; 1607 memset(tmp,0,3); 1608 sprintf(tmp, "%d", ID); 1609 _services_DB->command.append(tmp); 1610 _services_DB->command.append(" FROM "); 1611 _services_DB->command.append(_services_DB->tablename); 1612 _services_DB->command.append(" WHERE Service_Name"); 1613 _services_DB->command.append("=='"); 1614 _services_DB->command.append(buffer); 1615 _services_DB->command.append("');"); 1634 1616 char *errorMsg; 1635 int rc = sqlite3_exec(_services_DB->db, _services_DB->command , callback, 0, &errorMsg);1617 int rc = sqlite3_exec(_services_DB->db, _services_DB->command.c_str(), callback, 0, &errorMsg); 1636 1618 if( rc!=SQLITE_OK && rc!=101 ) 1637 1619 fprintf(stderr, "SQL error: %s\n", errorMsg); … … 1664 1646 1665 1647 //Deregister the services 1666 strcpy(_services_DB->command, "DELETE FROM "); 1667 strcat(_services_DB->command, _services_DB->tablename); 1668 strcat(_services_DB->command, " WHERE "); 1669 strcat(_services_DB->command, "ID_Num"); 1670 strcat(_services_DB->command, "=="); 1671 sprintf(_services_DB->command, "%s%d;", _services_DB->command, ID); 1648 _services_DB->command="DELETE FROM "; 1649 _services_DB->command.append(_services_DB->tablename); 1650 _services_DB->command.append(" WHERE "); 1651 _services_DB->command.append("ID_Num"); 1652 _services_DB->command.append("=="); 1653 char tmp[3]; 1654 memset(tmp,0,3); 1655 sprintf(tmp, "%d", ID); 1656 _services_DB->command.append(tmp); 1657 _services_DB->command.append(";"); 1672 1658 char *errorMsg; 1673 int rc = sqlite3_exec(_services_DB->db, _services_DB->command , callback, 0, &errorMsg);1659 int rc = sqlite3_exec(_services_DB->db, _services_DB->command.c_str(), callback, 0, &errorMsg); 1674 1660 if( rc!=SQLITE_OK && rc!=101 ) 1675 1661 fprintf(stderr, "SQL error: %s\n", errorMsg);