Changeset 288

Show
Ignore:
Timestamp:
06/18/09 09:00:38 (15 years ago)
Author:
wrodgers
Message:

Added support for using individual observable and paramater names as inputs

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • vtcross/trunk/src/service_management_layer/ServiceManagementLayer.cpp

    r287 r288  
    909909    std::string check; 
    910910    char buffer[256]; 
     911    char buffer1[256]; 
     912    int rc; 
     913    char *errorMsg; 
    911914    char* cols[] = {(char *)"Tag", (char *)"Data"}; 
    912915    //Get the inputs 
     
    914917    ReadMessage(shellSocketFD, buffer); 
    915918    LOG("ServiceManagementLayer:: Received PerformActiveMission command.\n"); 
    916         data_obsv.append(buffer); 
    917         data_obsv.append("@"); 
    918919 
    919920    int t = atoi(buffer); 
    920921   // printf("****%d****\n", t); 
    921922    for(int k = 0; k < t; k++) { 
    922         memset(buffer, 0, 256); 
    923         ReadMessage(shellSocketFD, buffer); 
    924         data_obsv.append(buffer); 
    925         data_obsv.append("@"); 
    926     
    927         memset(buffer, 0, 256); 
    928         ReadMessage(shellSocketFD, buffer); 
    929         data_obsv.append(buffer); 
    930         data_obsv.append("@"); 
    931923        //printf("data=%s\n", data_obsv.c_str()); 
    932     } 
    933  
     924        memset(buffer1, 0, 256); 
     925        ReadMessage(shellSocketFD, buffer1); 
    934926        strcpy(_data_DB->command, "insert into "); 
    935927        strcat(_data_DB->command, _data_DB->tablename);  
     
    939931        strcat(_data_DB->command, cols[1]); 
    940932        strcat(_data_DB->command, ") "); 
    941         strcat(_data_DB->command, " values('observables', '"); 
    942         strcat(_data_DB->command, data_obsv.c_str()); 
     933        memset(buffer, 0, 256); 
     934        ReadMessage(shellSocketFD, buffer); 
     935        sprintf(_data_DB->command, "%s values('%s', '1@%s@%s", _data_DB->command, buffer1, buffer1, buffer); 
    943936        strcat(_data_DB->command, "');"); 
    944         char *errorMsg; 
    945         int rc = sqlite3_exec(_data_DB->db, _data_DB->command, callback, 0, &errorMsg); 
     937        rc = sqlite3_exec(_data_DB->db, _data_DB->command, callback, 0, &errorMsg); 
    946938        if( rc!=SQLITE_OK && rc!=101 ) 
    947939            fprintf(stderr, "SQL error: %s\n", errorMsg); 
     940    } 
     941 
     942 
     943    /*printf("\n\n\n"); 
     944    // generate commandi 
     945    strcpy(_data_DB->command, "select "); 
     946    strcat(_data_DB->command, _data_DB->tablename); 
     947    strcat(_data_DB->command, ".* from "); 
     948    strcat(_data_DB->command, _data_DB->tablename); 
     949    strcat(_data_DB->command, ";"); 
     950 
     951    // execute print (select all)  command   
     952    rc = sqlite3_exec(_data_DB->db, _data_DB->command, callback, 0, &errorMsg); 
     953    if( rc!=SQLITE_OK && rc!=101 ) 
     954        fprintf(stderr, "SQL error: %s\n", errorMsg); 
     955    printf("database %s, table %s:\n", _data_DB->filename, _data_DB->tablename); 
     956    printf("\n\n\n");*/ 
    948957 
    949958    /* Receive Set of Parameters */ 
    950959    memset(buffer, 0, 256); 
    951960    ReadMessage(shellSocketFD, buffer); 
    952         data_param.append(buffer); 
    953         data_param.append("@"); 
    954961    t=atoi(buffer); 
    955962    for(int k = 0; k < t; k++) { 
    956         memset(buffer, 0, 256); 
    957         ReadMessage(shellSocketFD, buffer); 
    958         data_param.append(buffer); 
    959         data_param.append("@"); 
    960     
    961         memset(buffer, 0, 256); 
    962         ReadMessage(shellSocketFD, buffer); 
    963         data_param.append(buffer); 
    964         data_param.append("@"); 
    965     } 
    966         //printf("data=%s\n", data_param.c_str()); 
    967  
     963        //printf("data=%s\n", data_obsv.c_str()); 
     964        memset(buffer1, 0, 256); 
     965        ReadMessage(shellSocketFD, buffer1); 
    968966        strcpy(_data_DB->command, "insert into "); 
    969967        strcat(_data_DB->command, _data_DB->tablename);  
     
    973971        strcat(_data_DB->command, cols[1]); 
    974972        strcat(_data_DB->command, ") "); 
    975         strcat(_data_DB->command, " values('paramaters', '"); 
    976         strcat(_data_DB->command, data_param.c_str()); 
    977         strcat(_data_DB->command, "');");  
     973        memset(buffer, 0, 256); 
     974        ReadMessage(shellSocketFD, buffer); 
     975        sprintf(_data_DB->command, "%s values('%s', '1@%s@%s", _data_DB->command, buffer1, buffer1, buffer); 
     976        strcat(_data_DB->command, "');"); 
    978977        rc = sqlite3_exec(_data_DB->db, _data_DB->command, callback, 0, &errorMsg); 
    979978        if( rc!=SQLITE_OK && rc!=101 ) 
    980979            fprintf(stderr, "SQL error: %s\n", errorMsg); 
     980    } 
    981981 
    982982 
     
    18481848    return; 
    18491849} 
    1850  
    1851  
    1852  
    1853  
    1854     /*TiXmlElement *pMission; 
    1855     TiXmlElement *pService; 
    1856     TiXmlElement *pChild0, *pChild1, *pChild2, *pChild3; 
    1857     TiXmlHandle hRoot(0); 
    1858     //printf("ServiceManagementLayer:: Loading Configuration.\n"); 
    1859     TiXmlDocument doc("."); 
    1860     doc.LoadFile(SML_Config); 
    1861     bool loadOkay = doc.LoadFile(); 
    1862     if(!loadOkay) 
    1863         printf("Loading SML configuration failed: %s\n", SML_Config); 
    1864  
    1865     TiXmlHandle hDoc(&doc); 
    1866      
    1867     pMission = hDoc.FirstChildElement().Element(); 
    1868  
    1869     if(!pMission)  
    1870         printf("No valid root!"); 
    1871  
    1872     hRoot = TiXmlHandle(pMission); 
    1873     pService = pMission->FirstChildElement(); 
    1874     int32_t mission_num = 0; 
    1875     //Iterate through the missions 
    1876     for(pChild0 = pMission->FirstChildElement(); pChild0 ; \ 
    1877         pChild0 = pChild0->NextSiblingElement())  
    1878     { 
    1879         int32_t service_num = 0; 
    1880         uint16_t cond_array[] = {0, 0}; 
    1881         //printf("mission_num = %d\n", mission_num); 
    1882         memset(cond_array, 0, 2); 
    1883          
    1884         for(pChild1  = pChild0->FirstChildElement(); pChild1; \ 
    1885             pChild1  = pChild1->NextSiblingElement())  
    1886         { 
    1887             int32_t conditional_0 = service_num; 
    1888             for(pChild2 = pChild1->FirstChildElement(); \ 
    1889                 pChild2; pChild2 = pChild2->NextSiblingElement()) 
    1890             { 
    1891                 service_num++; 
    1892                 int32_t conditional_1 = service_num; 
    1893                 for(pChild3 = pChild2->FirstChildElement(); \ 
    1894                     pChild3; pChild3 = pChild3 ->NextSiblingElement()) 
    1895                 { 
    1896                     service_num++; 
    1897                     mList[mission_num].services[service_num].name = pChild3->Attribute("name"); 
    1898                     if(pChild3->Attribute("input1")) 
    1899                         mList[mission_num].services[service_num].input[0] = pChild3->Attribute("input1"); 
    1900                     if(pChild3->Attribute("input2")) 
    1901                         mList[mission_num].services[service_num].input[1] = pChild3->Attribute("input2"); 
    1902                     if(pChild3->Attribute("input3")) 
    1903                         mList[mission_num].services[service_num].input[2] = pChild3->Attribute("input3"); 
    1904                     if(pChild3->Attribute("output1")) 
    1905                         mList[mission_num].services[service_num].output[0] = pChild3->Attribute("output1"); 
    1906                     if(pChild3->Attribute("output2")) 
    1907                         mList[mission_num].services[service_num].output[1] = pChild3->Attribute("output2"); 
    1908                     if(pChild3->Attribute("output3")) 
    1909                         mList[mission_num].services[service_num].output[2] = pChild3->Attribute("output3"); 
    1910                     cond_array[1]++; 
    1911                 } 
    1912  
    1913                 if(conditional_1 != service_num){ 
    1914                     mList[mission_num].services[conditional_1].name = pChild2->Value(); 
    1915                     if(pChild2->Attribute("input_t")) 
    1916                         mList[mission_num].services[conditional_1].input[0] = pChild2->Attribute("input_t"); 
    1917                     if(pChild2->Attribute("input_f")) 
    1918                         mList[mission_num].services[conditional_1].input[1] = pChild2->Attribute("input_f"); 
    1919                 } 
    1920                 else{ 
    1921                     mList[mission_num].services[service_num].name = pChild2->Attribute("name"); 
    1922                     if(pChild2->Attribute("input1")) 
    1923                         mList[mission_num].services[service_num].input[0] = pChild2->Attribute("input1"); 
    1924                     if(pChild2->Attribute("input2")) 
    1925                         mList[mission_num].services[service_num].input[1] = pChild2->Attribute("input2"); 
    1926                     if(pChild2->Attribute("input3")) 
    1927                         mList[mission_num].services[service_num].input[2] = pChild2->Attribute("input3"); 
    1928                     if(pChild2->Attribute("output1")) 
    1929                         mList[mission_num].services[service_num].output[0] = pChild2->Attribute("output1"); 
    1930                     if(pChild2->Attribute("output2")) 
    1931                         mList[mission_num].services[service_num].output[1] = pChild2->Attribute("output2"); 
    1932                     if(pChild2->Attribute("output3")) 
    1933                         mList[mission_num].services[service_num].output[2] = pChild2->Attribute("output3"); 
    1934                 } 
    1935  
    1936                 mList[mission_num].services[conditional_1].num_conds = cond_array[1]; 
    1937                 cond_array[1] = 0; 
    1938                 cond_array[0]++; 
    1939             } 
    1940             if(conditional_0 != service_num){ 
    1941                 mList[mission_num].services[conditional_0].name = pChild1->Value(); 
    1942                 if(pChild1->Attribute("input_t")) 
    1943                     mList[mission_num].services[conditional_0].input[0] = pChild1->Attribute("input_t"); 
    1944                 if(pChild1->Attribute("input_f")) 
    1945                     mList[mission_num].services[conditional_0].input[1] = pChild1->Attribute("input_f"); 
    1946                 printf("if detected %s, %s\n", pChild1->Attribute("input_f"), pChild1->Attribute("input_t")); 
    1947             } 
    1948             else{ 
    1949                 mList[mission_num].services[service_num].name = pChild1->Attribute("name"); 
    1950                 if(pChild1->Attribute("input1")) 
    1951                     mList[mission_num].services[service_num].input[0] = pChild1->Attribute("input1"); 
    1952                 if(pChild1->Attribute("input2")) 
    1953                     mList[mission_num].services[service_num].input[1] = pChild1->Attribute("input2"); 
    1954                 if(pChild1->Attribute("input3")) 
    1955                     mList[mission_num].services[service_num].input[2] = pChild1->Attribute("input3"); 
    1956                 if(pChild1->Attribute("output1")) 
    1957                     mList[mission_num].services[service_num].output[0] = pChild1->Attribute("output1"); 
    1958                 if(pChild1->Attribute("output2")) 
    1959                     mList[mission_num].services[service_num].output[1] = pChild1->Attribute("output2"); 
    1960                 if(pChild1->Attribute("output3")) 
    1961                     mList[mission_num].services[service_num].output[2] = pChild1->Attribute("output3"); 
    1962             } 
    1963  
    1964             mList[mission_num].services[conditional_0].num_conds = cond_array[0]; 
    1965             //printf("hello\n"); 
    1966              
    1967             cond_array[0] = 0; 
    1968             service_num++; 
    1969         } 
    1970         for(int i = 0; i < service_num; i++) 
    1971                 printf("input1=%s, output1=%s\n", mList[mission_num].services[i].input[0].c_str(), mList[mission_num].services[service_num].output[0].c_str()); 
    1972  
    1973         mList[mission_num].numServices = service_num; 
    1974         mList[mission_num].name = pChild0->Attribute("name"); 
    1975         mList[mission_num].missionID = atoi(pChild0->Attribute("id")); 
    1976         if(pChild0->Attribute("input1")) 
    1977             mList[mission_num].input[0] = pChild0->Attribute("input1"); 
    1978         if(pChild0->Attribute("input2")) 
    1979             mList[mission_num].input[1] = pChild0->Attribute("input2"); 
    1980         if(pChild0->Attribute("input3")) 
    1981             mList[mission_num].input[2] = pChild0->Attribute("input3"); 
    1982         if(pChild0->Attribute("output1")) 
    1983             mList[mission_num].output[0] = pChild0->Attribute("output1"); 
    1984         if(pChild0->Attribute("output2")) 
    1985             mList[mission_num].output[1] = pChild0->Attribute("output2"); 
    1986         if(pChild0->Attribute("output3")) 
    1987             mList[mission_num].output[2] = pChild0->Attribute("output3"); 
    1988         printf("input1=%s, outpu1=%s\n", mList[mission_num].input[0].c_str(), mList[mission_num].output[0].c_str()); 
    1989         mission_num++; 
    1990     }*/