int main() { std::cout << "\n Test TextSearch"; std::cout << "\n ================="; std::string path = "..\\TextSearch\\"; std::string sstr = "main"; TextSearch::Files files; files = FileSystem::Directory::getFiles(path, "*.*"); show("file set", files); show("search string", sstr); TextSearch ts; TextSearch::Files results = ts.search(files, sstr); show("search results", results); std::cout << "\n\n"; }
// Function for reterieving files which contains search text specified in the message string Receiver::performTextSearch(string msg1, string &result) { Display * disp = new Display(); TextSearch *ts = new TextSearch(); Message *m = new Message(); BlockingQueue<std::string> resultfiles; std::vector<string> file_patterns, all_files; string sstr = m->getmsgBody1(msg1), file_path = m->getFileName(msg1), filepattern = m->getPatterns(msg1), token, resultfiles1; disp->show("\n*******************************************\n"); string prtmsg ="Performing Text Search for string: "+ sstr + " on files with patterns " + filepattern+"\n"; disp->show(prtmsg); std::istringstream ss(filepattern); while (std::getline(ss, token, ',')) { file_patterns.push_back(token); } all_files = showFiles(file_path, file_patterns); for each (string file in all_files) { if (ts->search(sstr, file)) resultfiles.enQ(file); } size_t vecsize = resultfiles.size(); for (size_t i = 0; i < vecsize; i++) { resultfiles1 = resultfiles1 + resultfiles.deQ(); resultfiles1.append(";"); } disp->show("Sending Result File list to client \n"); disp->show("*******************************************\n\n"); Message *resmsg = new Message(); Message orgmsg; orgmsg.setMessage(msg1); resmsg->setCommand("textsearch"); resmsg->setFileAttrs(orgmsg.getFileName(msg1)); resmsg->setsendAddr(orgmsg.getrecvAddr(msg1)); resmsg->setrecAddr(orgmsg.getsendAddr(msg1)); resmsg->setmsgBody(resultfiles1); result = resmsg->getMessage(); return result; }