diff --git a/include/INxDataConfiguration.h b/include/INxDataConfiguration.h index 6b8dbd9ad4c02132b41794069e504c6cec3e7389..e2e902318b42a08232b5c2c65ddafa82af75a033 100644 --- a/include/INxDataConfiguration.h +++ b/include/INxDataConfiguration.h @@ -13,11 +13,11 @@ namespace NJGIS public: virtual int getCount() = 0; - virtual int insertData(const char* state, const char* event, INjData* data, bool destoryed = false) = 0; + virtual int insertData(const char* state, const char* event, const char* dataid, bool destoryed = false) = 0; - virtual int getData(int index, std::string &state, std::string &event, INjData* &data, bool &destoryed) = 0; + virtual int getData(int index, std::string &state, std::string &event, std::string &dataid, bool &destoryed) = 0; - virtual INjData* getData(const char* state, const char* event) = 0; + virtual const char* getDataID(const char* state, const char* event) = 0; }; } } diff --git a/src/NxDataConfiguration.cpp b/src/NxDataConfiguration.cpp index f864aa71c926088251dad19c6ea4c00b2aa22c46..91cf0387b9f70e418a9d4911af9f526893c283bf 100644 --- a/src/NxDataConfiguration.cpp +++ b/src/NxDataConfiguration.cpp @@ -10,13 +10,14 @@ int NJGIS::SERVICE::NjDataConfiguration::getCount() return this->_items.size(); } -int NJGIS::SERVICE::NjDataConfiguration::insertData( const char* state, const char* event, NJGIS::SERVICE::INjData* data, bool destoryed ) +int NJGIS::SERVICE::NjDataConfiguration::insertData( const char* state, const char* event, const char* dataid, bool destoryed ) { for(int i = 0; i < this->_items.size(); i++) { if((strcmp(this->_items[i].state, state) == 0) && (strcmp(this->_items[i].event, event) == 0)) { - this->_items[i].data = (void*)data; + char* cdataid = new char[strlen(dataid)]; + this->_items[i].data = cdataid; this->_items[i].destoryed = destoryed; return 2; } @@ -24,17 +25,18 @@ int NJGIS::SERVICE::NjDataConfiguration::insertData( const char* state, const ch NjDataConfigItem item; char* cstate = new char[strlen(state)]; char* cevent = new char[strlen(event)]; + char* cdataid = new char[strlen(dataid)]; strcpy(cstate, state); strcpy(cevent, event); item.state = cstate; item.event = cevent; - item.data = (void*)data; + item.data = cdataid; item.destoryed = destoryed; this->_items.push_back(item); return 1; } -int NJGIS::SERVICE::NjDataConfiguration::getData( int index, std::string &state, std::string &event, INjData* &data, bool &destoryed) +int NJGIS::SERVICE::NjDataConfiguration::getData( int index, std::string &state, std::string &event, std::string &dataid, bool &destoryed ) { if(index > (this->_items.size() - 1) || index < 0) { @@ -46,7 +48,7 @@ int NJGIS::SERVICE::NjDataConfiguration::getData( int index, std::string &state, { state = std::string(this->_items[i].state); event = std::string(this->_items[i].event); - data = (NJGIS::SERVICE::INjData*)this->_items[i].data; + dataid = this->_items[i].data; destoryed = this->_items[i].destoryed; return 1; } @@ -54,13 +56,13 @@ int NJGIS::SERVICE::NjDataConfiguration::getData( int index, std::string &state, return 0; } -NJGIS::SERVICE::INjData* NJGIS::SERVICE::NjDataConfiguration::getData( const char* state, const char* event ) +const char* NJGIS::SERVICE::NjDataConfiguration::getDataID( const char* state, const char* event ) { for(int i = 0; i < this->_items.size(); i++) { if((strcmp(this->_items[i].state, state) == 0) && (strcmp(this->_items[i].event, event) == 0)) { - return (NJGIS::SERVICE::INjData*)this->_items[i].data; + return this->_items[i].data; } } return NULL; diff --git a/src/NxDataConfiguration.h b/src/NxDataConfiguration.h index 30b365b0985be088a41d48cb2d3ccac88d351e59..1b46cce305d65c2226d5c64fe89833638075b8b7 100644 --- a/src/NxDataConfiguration.h +++ b/src/NxDataConfiguration.h @@ -14,7 +14,7 @@ namespace NJGIS { const char* state; const char* event; - void* data; + const char* data; bool destoryed; }NjDataConfigItem; @@ -25,11 +25,11 @@ namespace NJGIS virtual int getCount(); - virtual int insertData( const char* state, const char* event, INjData* data, bool destoryed = false ); + virtual int insertData( const char* state, const char* event, const char* dataid, bool destoryed = false ); - virtual int getData( int index, std::string &state, std::string &event, INjData* &data, bool &destoryed ); + virtual int getData( int index, std::string &state, std::string &event, std::string &dataid, bool &destoryed ); - virtual INjData* getData( const char* state, const char* event ); + virtual const char* getDataID( const char* state, const char* event ); private: std::vector _items; diff --git a/src/NxDataFactory.cpp b/src/NxDataFactory.cpp index dacac7548685ef3263d2b28c1ed5eac6bb887416..6cef72510f1ddffd286e58ff2e89cb334bfa1fc3 100644 --- a/src/NxDataFactory.cpp +++ b/src/NxDataFactory.cpp @@ -1,5 +1,7 @@ #include "NxDataFactory.h" #include "NxData.h" +#include "NxDataConfiguration.h" +#include "NxDataFactory.h" NJGIS::SERVICE::INjData* NJGIS::SERVICE::NjDataFactory::createDataByJSON( Json::Value jData, const char* ip, int port ) { @@ -30,4 +32,18 @@ NJGIS::SERVICE::INjData* NJGIS::SERVICE::NjDataFactory::createDataByJSON( Json:: std::string gd_value = jData["gd_value"].asString(); NJGIS::SERVICE::INjData* pData = new NJGIS::SERVICE::NjData(gd_id.c_str(), gd_tag.c_str(), gd_size, gd_datetime.c_str(), type, gd_value.c_str(), ip, port); return pData; -} \ No newline at end of file +} + +NJGIS::SERVICE::INjDataConfiguration* NJGIS::SERVICE::NjDataFactory::createDataConfigByJSON( Json::Value jConfig ) +{ + INjDataConfiguration* pDataConfig = new NJGIS::SERVICE::NjDataConfiguration(); + for(int i = 0; i < jConfig.size(); i++) + { + std::string stateid = jConfig[i]["StateId"].asString(); + std::string eventname = jConfig[i]["Event"].asString(); + std::string dataid = jConfig[i]["DataId"].asString(); + bool destoryed = jConfig[i]["Destoryed"].asBool(); + pDataConfig->insertData(stateid.c_str(), eventname.c_str(), dataid.c_str()); + } + return pDataConfig; +} diff --git a/src/NxModelService.cpp b/src/NxModelService.cpp index cade387b63465e5a8ea0eefdbd51a44c1d97fd69..3f2519dae3617dc0944973bbb9c57d1a08a9f3b7 100644 --- a/src/NxModelService.cpp +++ b/src/NxModelService.cpp @@ -100,11 +100,11 @@ int NJGIS::SERVICE::NjModelService::invoke( INjDataConfiguration* config, std::s { std::string state; std::string event; - INjData* data; + std::string dataid; bool destoryed; - if(config->getData(i, state, event, data, destoryed) > 0) + if(config->getData(i, state, event, dataid, destoryed) > 0) { - url += "{\"StateId\":\"" + state + "\",\"Event\":\"" + event + "\",\"DataId\":\"" + data->getID() + "\",\"Destoryed\":\"false\"}"; + url += "{\"StateId\":\"" + state + "\",\"Event\":\"" + event + "\",\"DataId\":\"" + dataid + "\",\"Destoryed\":\"false\"}"; } else { diff --git a/src/NxModelServiceRecord.cpp b/src/NxModelServiceRecord.cpp index 71d0127d97b6e75b020e8fa074ae910f5e338a9c..ab199cdfb7e534e514580d9007994181a2255bbb 100644 --- a/src/NxModelServiceRecord.cpp +++ b/src/NxModelServiceRecord.cpp @@ -1,4 +1,5 @@ #include "NxModelServiceRecord.h" +#include "../utils/NxHttp.h" const char* NJGIS::SERVICE::NjModelServiceRecord::getID() { @@ -57,6 +58,14 @@ int NJGIS::SERVICE::NjModelServiceRecord::getLogs() int NJGIS::SERVICE::NjModelServiceRecord::refresh() { - + Json::Value jsMsr; + std::string url; + this->getBaseUrl(url); + url += "/modelserrun/json/"; + url += this->getID(); + if(NJGIS::SERVICE::NjHttpHelper::request_get_json_sync(url.c_str(), jsMsr) > 0) + { + jsMsr[""]; + } return 0; } diff --git a/src/NxModelServiceRecordFactory.cpp b/src/NxModelServiceRecordFactory.cpp index bb5bf5b6fa9bfaa5beff0bf1c088874aa489dafa..1e3ef8f1429c027e95454c745b905288e51275ee 100644 --- a/src/NxModelServiceRecordFactory.cpp +++ b/src/NxModelServiceRecordFactory.cpp @@ -1,15 +1,18 @@ #include "NxModelServiceRecordFactory.h" #include "NxModelServiceRecord.h" +#include "NxDataFactory.h" NJGIS::SERVICE::INjModelServiceRecord* NJGIS::SERVICE::NjModelServiceRecordFactory::createModelServiceRecordByJSON( Json::Value jMsr, const char* ip, int port ) { + NJGIS::SERVICE::INjDataConfiguration* pInput = NJGIS::SERVICE::NjDataFactory::createDataConfigByJSON(jMsr["msr_input"]); + NJGIS::SERVICE::INjDataConfiguration* pOutput = NJGIS::SERVICE::NjDataFactory::createDataConfigByJSON(jMsr["msr_output"]); NJGIS::SERVICE::INjModelServiceRecord* pMsr = new NJGIS::SERVICE::NjModelServiceRecord( jMsr["_id"].asString().c_str(), jMsr["ms_id"].asString().c_str(), jMsr["msr_datetime"].asString().c_str(), jMsr["msr_span"].asInt(), - NULL, - NULL, + pInput, + pOutput, NJGIS::SERVICE::NjRecordStatus::MSRS_FINISHED, jMsr["msr_runninginfo"]["StdOut"].asString().c_str(), jMsr["msr_runninginfo"]["StdErr"].asString().c_str(), @@ -17,5 +20,5 @@ NJGIS::SERVICE::INjModelServiceRecord* NJGIS::SERVICE::NjModelServiceRecordFacto ip, port ); - return NULL; + return pMsr; } \ No newline at end of file diff --git a/test/test.cpp b/test/test.cpp index 97739483bdd67f6a141144c1ddb0a9f5ef8d83e2..907e14285dbace8b2a626dfb829222c9f69f3c65 100644 --- a/test/test.cpp +++ b/test/test.cpp @@ -1,7 +1,7 @@ #include "NxServiceAPI.h" #include #include - +#include int main() { @@ -27,14 +27,18 @@ int main() { std::cout << pData->getID() << " - " << pData->getSize() << " - " << pData->getGenarationDateTime() << " - " << pData->getTag() << std::endl; NJGIS::SERVICE::INjDataConfiguration* pDataconfig = pServiceAccess->createDataConfig(); - pDataconfig->insertData("04579ee0-5983-4d75-bdc9-a1a460229aa0", "LoadHydroResponseUnit", pData); + pDataconfig->insertData("04579ee0-5983-4d75-bdc9-a1a460229aa0", "LoadHydroResponseUnit", pData->getID()); NJGIS::SERVICE::INjModelService* pMService = pServiceAccess->getModelServiceByOID("5aaabce23f761b048081dd9f"); std::string recordid; if( pMService->invoke(pDataconfig, recordid) == 1) { std::cout << "Invoke successfully! Model Service Record ID is : [" << recordid << "]" << std::endl; NJGIS::SERVICE::INjModelServiceRecord* pRecord = pServiceAccess->getModelServiceRecordByID(recordid.c_str()); - + while(true) + { + Sleep(2000); + std::cout << pRecord->getStatus() << std::endl; + } } } }