//! [2] void MainWindow::on_queryBox_currentIndexChanged() { QFile queryFile(":/queries/" + queryBox->currentText()); queryFile.open(QIODevice::ReadOnly); queryEdit->setPlainText(QString::fromLatin1(queryFile.readAll())); evaluateResult(); }
//! [1] void QueryMainWindow::displayQuery(int index) { QFile queryFile(QString(":files/") + ui_defaultQueries->itemText(index)); queryFile.open(QIODevice::ReadOnly); const QString query(QString::fromLatin1(queryFile.readAll())); findChild<QTextEdit*>("queryTextEdit")->setPlainText(query); evaluate(query); }
void FeedEntryListModel::initFeedEntryList() { QFile queryFile(":/cxReader/xquery/feedEntryList.xq"); queryFile.open(QIODevice::ReadOnly); QXmlQuery query; query.setNetworkAccessManager(this->config->manager()); query.bindVariable("file", QVariant(this->config->baseUrl() + "/feeds/"+this->id)); query.setQuery(&queryFile); this->namePool = query.namePool(); query.evaluateTo(this); queryFile.close(); }
std::list<actasp::AnswerSet> Clingo::krQuery(const std::string& query, unsigned int initialTimeStep, unsigned int finalTimeStep, const std::string& fileName, unsigned int answerSetsNumber = 1) const throw() { //this depends on our way of representing stuff. //iclingo starts from 1, while we needed the initial state and first action to be at time step 0 initialTimeStep++; finalTimeStep++; string queryPath = queryDir + fileName; ofstream queryFile(queryPath.c_str()); queryFile << query << endl; queryFile.close(); stringstream commandLine; const string outputFilePath = queryDir + "query_output.txt"; if (max_time > 0) { commandLine << "timeout " << max_time << " "; } stringstream iterations; iterations << "--imin=" << initialTimeStep << " --imax=" << finalTimeStep; commandLine << "iclingo " << iterations.str() << " " << queryPath << " " << domainDir << "*.asp " << (CURRENT_FILE_HOME + CURRENT_STATE_FILE) << " > " << outputFilePath << " " << answerSetsNumber; if (!system(commandLine.str().c_str())) { //maybe do something here, or just kill the warning about the return value not being used. } return readAnswerSets(outputFilePath); }
MainWindow::MainWindow() { setupUi(this); new XmlSyntaxHighlighter(wholeTreeOutput->document()); /* Setup the font. */ { QFont font("Courier"); font.setFixedPitch(true); wholeTree->setFont(font); wholeTreeOutput->setFont(font); htmlQueryEdit->setFont(font); } QXmlNamePool namePool; QObjectXmlModel qObjectModel(this, namePool); QXmlQuery query(namePool); /* The QObject tree as XML view. */ { query.bindVariable("root", qObjectModel.root()); query.setQuery(QUrl("qrc:/queries/wholeTree.xq")); Q_ASSERT(query.isValid()); QByteArray output; QBuffer buffer(&output); buffer.open(QIODevice::WriteOnly); /* Let's the use the formatter, so it's a bit easier to read. */ QXmlFormatter serializer(query, &buffer); query.evaluateTo(&serializer); buffer.close(); { QFile queryFile(":/queries/wholeTree.xq"); queryFile.open(QIODevice::ReadOnly); wholeTree->setPlainText(QString::fromUtf8(queryFile.readAll())); wholeTreeOutput->setPlainText(QString::fromUtf8(output.constData())); } } /* The QObject occurrence statistics as HTML view. */ { query.setQuery(QUrl("qrc:/queries/statisticsInHTML.xq")); Q_ASSERT(query.isValid()); QByteArray output; QBuffer buffer(&output); buffer.open(QIODevice::WriteOnly); /* Let's the use the serializer, so we gain a bit of speed. */ QXmlSerializer serializer(query, &buffer); query.evaluateTo(&serializer); buffer.close(); { QFile queryFile(":/queries/statisticsInHTML.xq"); queryFile.open(QIODevice::ReadOnly); htmlQueryEdit->setPlainText(QString::fromUtf8(queryFile.readAll())); htmlOutput->setHtml(QString(output)); } } }
void QgsSearchQueryBuilder::loadQuery() { QgsSettings s; QString lastQueryFileDir = s.value( QStringLiteral( "/UI/lastQueryFileDir" ), QDir::homePath() ).toString(); QString queryFileName = QFileDialog::getOpenFileName( nullptr, tr( "Load query from file" ), lastQueryFileDir, tr( "Query files" ) + " (*.qqf);;" + tr( "All files" ) + " (*)" ); if ( queryFileName.isNull() ) { return; } QFile queryFile( queryFileName ); if ( !queryFile.open( QIODevice::ReadOnly ) ) { QMessageBox::critical( nullptr, tr( "Error" ), tr( "Could not open file for reading" ) ); return; } QDomDocument queryDoc; if ( !queryDoc.setContent( &queryFile ) ) { QMessageBox::critical( nullptr, tr( "Error" ), tr( "File is not a valid xml document" ) ); return; } QDomElement queryElem = queryDoc.firstChildElement( QStringLiteral( "Query" ) ); if ( queryElem.isNull() ) { QMessageBox::critical( nullptr, tr( "Error" ), tr( "File is not a valid query document" ) ); return; } QString query = queryElem.text(); //todo: test if all the attributes are valid QgsExpression search( query ); if ( search.hasParserError() ) { QMessageBox::critical( this, tr( "Search string parsing error" ), search.parserErrorString() ); return; } QString newQueryText = query; #if 0 // TODO: implement with visitor pattern in QgsExpression QStringList attributes = searchTree->referencedColumns(); QMap< QString, QString> attributesToReplace; QStringList existingAttributes; //get all existing fields QMap<QString, int>::const_iterator fieldIt = mFieldMap.constBegin(); for ( ; fieldIt != mFieldMap.constEnd(); ++fieldIt ) { existingAttributes.push_back( fieldIt.key() ); } //if a field does not exist, ask what field should be used instead QStringList::const_iterator attIt = attributes.constBegin(); for ( ; attIt != attributes.constEnd(); ++attIt ) { //test if attribute is there if ( !mFieldMap.contains( *attIt ) ) { bool ok; QString replaceAttribute = QInputDialog::getItem( 0, tr( "Select attribute" ), tr( "There is no attribute '%1' in the current vector layer. Please select an existing attribute" ).arg( *attIt ), existingAttributes, 0, false, &ok ); if ( !ok || replaceAttribute.isEmpty() ) { return; } attributesToReplace.insert( *attIt, replaceAttribute ); } } //Now replace all the string in the query QList<QgsSearchTreeNode *> columnRefList = searchTree->columnRefNodes(); QList<QgsSearchTreeNode *>::iterator columnIt = columnRefList.begin(); for ( ; columnIt != columnRefList.end(); ++columnIt ) { QMap< QString, QString>::const_iterator replaceIt = attributesToReplace.find( ( *columnIt )->columnRef() ); if ( replaceIt != attributesToReplace.constEnd() ) { ( *columnIt )->setColumnRef( replaceIt.value() ); } } if ( attributesToReplace.size() > 0 ) { newQueryText = query; } #endif txtSQL->clear(); txtSQL->insertText( newQueryText ); }
void Performance::run( std::vector<TC *> algs, //< Algorithms to be executed std::vector<Input> changes, //< Changes as defined in project description std::string output_prefix) //< e.g. output/changefile3-ins.stat { // Open output streams std::ofstream insFile(outputDir + output_prefix + insSuffix); std::ofstream delFile(outputDir + output_prefix + delSuffix); std::ofstream queryFile(outputDir + output_prefix + querySuffix); // unsigned int querySize; long long cpuClock; for (auto &alg : algs) { const char *name = alg->get_name(); std::string strName(name, strlen(name)); std::ofstream queryOutFile(outputDir + output_prefix + strName + queryOutSuffix); for (auto &change : changes) { switch (change.type) { case 4: alg->jump(change.state); break; case 3: alg->init(change.i); break; case 2: // Reset counters ioctl(this->fd, PERF_EVENT_IOC_RESET, PERF_IOC_FLAG_GROUP); // Start counting ioctl(this->fd, PERF_EVENT_IOC_ENABLE, PERF_IOC_FLAG_GROUP); // Run query querySize = alg->query(); // Stop counting ioctl(this->fd, PERF_EVENT_IOC_DISABLE, PERF_IOC_FLAG_GROUP); // Get CPU clock count cpuClock = _get(PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CPU_CLOCK); // Write cpu time queryFile << name << "," << cpuClock << "\n"; // Write output (for correctness) queryOutFile << querySize << "\n"; break; case 1: // Reset counters ioctl(this->fd, PERF_EVENT_IOC_RESET, PERF_IOC_FLAG_GROUP); // Start counting ioctl(this->fd, PERF_EVENT_IOC_ENABLE, PERF_IOC_FLAG_GROUP); // Run query alg->del(change.i, change.j); // Stop counting ioctl(this->fd, PERF_EVENT_IOC_DISABLE, PERF_IOC_FLAG_GROUP); // Get CPU clock count cpuClock = _get(PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CPU_CLOCK); // Write cpu time delFile << name << "," << cpuClock << "\n"; break; case 0: // Reset counters ioctl(this->fd, PERF_EVENT_IOC_RESET, PERF_IOC_FLAG_GROUP); // Start counting ioctl(this->fd, PERF_EVENT_IOC_ENABLE, PERF_IOC_FLAG_GROUP); // Run query alg->ins(change.i, change.j); // Stop counting ioctl(this->fd, PERF_EVENT_IOC_DISABLE, PERF_IOC_FLAG_GROUP); // Get CPU clock count cpuClock = _get(PERF_TYPE_SOFTWARE, PERF_COUNT_SW_CPU_CLOCK); // Write cpu time insFile << name << "," << cpuClock << "\n"; break; default: std::cout << "ERROR!!" << std::endl; // Close all files queryOutFile.close(); insFile.close(); delFile.close(); queryFile.close(); return; } } queryOutFile.close(); } insFile.close(); delFile.close(); queryFile.close(); }
//this is almost brutally copied from krquery std::list< std::list<AspAtom> > Clingo::query(const std::string &queryString, unsigned int initialTimeStep, unsigned int finalTimeStep) const throw() { //this depends on our way of representing stuff. //iclingo starts from 1, while we needed the initial state and first action to be at time step 0 initialTimeStep++; finalTimeStep++; string queryPath = queryDir + "generic_query.asp"; ofstream queryFile(queryPath.c_str()); queryFile << queryString << endl; queryFile.close(); stringstream commandLine; const string outputFilePath = queryDir + "query_output.txt"; if (max_time > 0) { commandLine << "timeout " << max_time << " "; } stringstream iterations; iterations << "--imin=" << initialTimeStep << " --imax=" << finalTimeStep; commandLine << "iclingo " << iterations.str() << " " << domainDir << "*.asp " << " " << (CURRENT_FILE_HOME + CURRENT_STATE_FILE) << " " << queryPath << " > " << outputFilePath << " 0"; if (!system(commandLine.str().c_str())) { //maybe do something here, or just kill the warning about the return value not being used. } ifstream file(outputFilePath.c_str()); list<list <AspAtom> > allSets; bool answerFound = false; string line; while(file) { getline(file,line); if(answerFound && line == "UNSATISFIABLE") return list<list <AspAtom> >(); if(line.find("Answer") != string::npos) { getline(file,line); try { stringstream predicateLine(line); list<AspAtom> atoms; //split the line based on spaces copy(istream_iterator<string>(predicateLine), istream_iterator<string>(), back_inserter(atoms)); allSets.push_back(atoms); } catch (std::invalid_argument& arg) { //swollow it and skip this answer set. } } } return allSets; }