#include "lqtcr.h" #include "stdio.h" #include <iostream> #include <vector> #include<string> #include<string.h> using namespace std; std::vector<std::string> split(std::string productstr,std::string sep){ char* cstr=const_cast<char*>(productstr.c_str()); char* temp; std::vector<std::string> arr; temp=strtok(cstr,sep.c_str()); while(temp!=NULL){ arr.push_back(temp); temp=strtok(NULL,sep.c_str()); } return arr; } int main(int argc, char* argv[]) { try { // Create the objects lqtServer* srv(lqtServer::create()); lqtProcessOptions* opts(lqtProcessOptions::create()); lqtInputRecord* rec(lqtInputRecord::create()); lqtProcessResult* res(lqtProcessResult::create()); lqtProcessList* lst(lqtProcessList::create()); // Initialize the objects srv->init("./data"); lst->add("GKRInfo", opts); printf("\n----------------------------\n"); // Loop around the records we want to process { // Load the input record rec->clear(); // Process it srv->process(rec, lst, res); // get product codes string productCodes; for (size_t rec(0); rec < res->getCount(); rec++) { for (long field(0); field < res->getFieldCount(rec); field++) { const char* str = "DataProductList"; if (std::string(res->getFieldName(rec, field)) == std::string("DataProductList")) { // print out printf(res->getFieldName(rec, field)); printf(": "); printf(res->getField(rec, field)); printf("\n"); productCodes = res->getField(rec, field); } } } if(!productCodes.empty()) { printf("\n----------------------------"); printf("\n ***Expiry Dates*** \n"); printf("----------------------------\n"); //split product codes std::vector<std::string> splitCodes; splitCodes=split(productCodes,","); // grab names and expiry dates from the Product Code for (size_t rec(0); rec < res->getCount(); rec++) { for (long field(0); field < res->getFieldCount(rec); field++) { for(size_t codeCount(0); codeCount < splitCodes.size(); codeCount++) { if ((std::string(res->getFieldName(rec, field)) == std::string(splitCodes[codeCount])) || (std::string(res->getFieldName(rec, field)) == std::string(splitCodes[codeCount]+".ExpiryDate"))) { //print out printf(res->getFieldName(rec, field)); printf(": "); printf(res->getField(rec, field)); printf("\n"); } } } } } else { printf("No Products found..."); printf(srv->getLastError()); } } // Tidy up srv->shutdown(); lqtProcessOptions::destroy(opts); lqtInputRecord::destroy(rec); lqtProcessResult::destroy(res); lqtProcessList::destroy(lst); lqtServer::destroy(srv); } catch (exception& e) { printf("Exception thrown: %s\n", e.what()); } return 0; }