#include "serialListReader.h" #include "QtCore/QCoreApplication" #include <vector> #include <string> #include <iostream> using namespace std; void processParameters(int argc, char *argv[]); int entryExistsInArgList(int argc, char *argv[], std::string parameterName); void getSerialListAsStringsFromDatabase(); void convertStringListToNumbers(); void outputApdsInRange(); static bool debug = false; static bool backwards = false; static vector<string> serialListString; static vector<unsigned long> serialList; static unsigned long serialMin; static unsigned long serialMax; int main(int argc, char *argv[]) { processParameters(argc, argv); QCoreApplication *_app = new QCoreApplication(argc,argv); getSerialListAsStringsFromDatabase(); convertStringListToNumbers(); outputApdsInRange(); _app->exit(0); return 0; } void processParameters(int argc, char *argv[]) { size_t validargs = 0; if (entryExistsInArgList(argc, argv, "debug")) { debug = true; validargs++; } if (entryExistsInArgList(argc, argv, "backwards")) { backwards = true; validargs++; } if (argc != validargs+3 ) { cerr << "Too few or too many parameters!\n" << "Pass first and last serial of range." << endl; exit(1); } serialMin = stoul(argv[1]); serialMax = stoul(argv[2]); if (serialMin > serialMax) { unsigned long oldMin = serialMin; serialMin = serialMax; serialMax = oldMin; cerr << "Warning; Minimum is greater than Maximum, switching them and turning on backwards mode!" << endl; backwards = true; } } int entryExistsInArgList(int argc, char *argv[], std::string parameterName) { for (int i = 0; i < argc; i++) { if (argv[i] == parameterName) return true; } return false; } void getSerialListAsStringsFromDatabase() { serialListReader *_reader = new serialListReader(debug); serialListString = _reader->getListOfSerials(); } void convertStringListToNumbers() { serialList.clear(); for ( size_t i = 0 ; i < serialListString.size() ; i++) serialList.push_back( stoul( serialListString[i] ) ); if ( serialListString.size() != serialList.size() ) { cerr << "ERROR: Sizes don't match!" << endl; exit(2); } } void outputApdsInRange() { int numOut = 0; for ( size_t i = 0 ; i < serialList.size() ; i++) { size_t j = i; if (backwards) j = serialList.size() - (i+1); if ( serialList [j] >= serialMin && serialList [j] <= serialMax ) { cout << serialListString[j] << endl; numOut++; } } cerr << "Found " << numOut << " APDs in the given range." << endl; }