|
@@ -205,6 +205,26 @@ QStringList views = {
|
|
|
createViewTimes
|
|
|
};
|
|
|
|
|
|
+/*!
|
|
|
+ * \brief dbSetup::showDatabase Outputs database information to Console
|
|
|
+ */
|
|
|
+void dbSetup::showDatabase()
|
|
|
+{
|
|
|
+ QSqlQuery query;
|
|
|
+
|
|
|
+ query.prepare("SELECT name FROM sqlite_master WHERE type='table'");
|
|
|
+ query.exec();
|
|
|
+ while (query.next()) {
|
|
|
+ qDebug() << "Tables: " << query.value(0).toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ query.prepare("SELECT name FROM sqlite_master WHERE type='view'");
|
|
|
+ query.exec();
|
|
|
+ while (query.next()) {
|
|
|
+ qDebug() << "Views: " << query.value(0).toString();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
/*!
|
|
|
* \brief dbSetup::createTables Create the required tables for the database
|
|
|
*/
|
|
@@ -220,14 +240,11 @@ void dbSetup::createTables()
|
|
|
}else
|
|
|
qDebug() << "Adding table " << tables[i].section(QLatin1Char(' '),2,2);
|
|
|
}
|
|
|
- //verify tables are created
|
|
|
- query.prepare("SELECT name FROM sqlite_master WHERE type='table'");
|
|
|
- query.exec();
|
|
|
- while (query.next()) {
|
|
|
- qDebug() << "Table: " << query.value(0).toString();
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
+/*!
|
|
|
+ * \brief dbSetup::createViews Create the required views for the database
|
|
|
+ */
|
|
|
void dbSetup::createViews()
|
|
|
{
|
|
|
QSqlQuery query;
|
|
@@ -241,10 +258,121 @@ void dbSetup::createViews()
|
|
|
qDebug() << "Adding View " << views[i].section(QLatin1Char(' '),2,2);
|
|
|
}
|
|
|
}
|
|
|
- //verify views are created
|
|
|
- query.prepare("SELECT name FROM sqlite_master WHERE type='view'");
|
|
|
- query.exec();
|
|
|
- while (query.next()) {
|
|
|
- qDebug() << "View: " << query.value(0).toString();
|
|
|
+}
|
|
|
+
|
|
|
+void dbSetup::csvtest()
|
|
|
+{
|
|
|
+ QStringList firstColumn;
|
|
|
+
|
|
|
+
|
|
|
+ QFile f1("test.csv");
|
|
|
+ f1.open(QIODevice::ReadOnly);
|
|
|
+ QTextStream s1(&f1);
|
|
|
+ // qDebug() << "Stream: " << s1.readAll();
|
|
|
+ while (!s1.atEnd()){
|
|
|
+ QString s=s1.readLine(); // reads line from file
|
|
|
+ qDebug() << s;
|
|
|
+ //firstColumn.append(s.split(",").first()); // appends first column to list, ',' is separator
|
|
|
+ firstColumn.append(s.split(",")[1]);//second Column
|
|
|
}
|
|
|
+ qDebug() << "First Column: " << firstColumn;
|
|
|
+
|
|
|
+ f1.close();
|
|
|
+}
|
|
|
+
|
|
|
+QVector<QStringList> dbSetup::importAirportsFromCSV()
|
|
|
+{
|
|
|
+ QStringList icao;
|
|
|
+ QStringList iata;
|
|
|
+ QStringList name;
|
|
|
+ QStringList latitude;
|
|
|
+ QStringList longitude;
|
|
|
+ QStringList country;
|
|
|
+ QStringList altitude;
|
|
|
+ QStringList utcoffset;
|
|
|
+ QStringList tzolson;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ QFile input("airports.csv");
|
|
|
+ input.open(QIODevice::ReadOnly);
|
|
|
+ QTextStream inputStream(&input);
|
|
|
+
|
|
|
+ while (!inputStream.atEnd()) {
|
|
|
+ QString line = inputStream.readLine();
|
|
|
+ auto items = line.split(",");
|
|
|
+ icao.append(items[0]);
|
|
|
+ iata.append(items[1]);
|
|
|
+ name.append(items[2]);
|
|
|
+ latitude.append(items[3]);
|
|
|
+ longitude.append(items[4]);
|
|
|
+ country.append(items[5]);
|
|
|
+ altitude.append(items[6]);
|
|
|
+ utcoffset.append(items[7]);
|
|
|
+ tzolson.append(items[8]);
|
|
|
+ }
|
|
|
+
|
|
|
+ QVector<QStringList> airportData = {
|
|
|
+ icao,
|
|
|
+ iata,
|
|
|
+ name,
|
|
|
+ latitude,
|
|
|
+ longitude,
|
|
|
+ country,
|
|
|
+ altitude,
|
|
|
+ utcoffset,
|
|
|
+ tzolson
|
|
|
+ };
|
|
|
+ for(int i=0; i < airportData.length(); i++)
|
|
|
+ {
|
|
|
+ airportData[i].removeFirst();
|
|
|
+ }
|
|
|
+ //qDebug() << "Airport Data: " << airportData;
|
|
|
+ return airportData;
|
|
|
+}
|
|
|
+
|
|
|
+void dbSetup::commitAirportData(QVector<QStringList> airportData)
|
|
|
+{
|
|
|
+ qDebug() << "Airport Data: " << airportData[0];
|
|
|
+
|
|
|
+ QSqlQuery query;
|
|
|
+ query.prepare("INSERT INTO airports ("
|
|
|
+ "icao, "
|
|
|
+ "iata, "
|
|
|
+ "name, "
|
|
|
+ "lat, "
|
|
|
+ "long, "
|
|
|
+ "country, "
|
|
|
+ "alt, "
|
|
|
+ "utcoffset, "
|
|
|
+ "tzolson"
|
|
|
+ ") "
|
|
|
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
|
|
+ //query.prepare("INSERT INTO airports (icao) VALUES (?)");
|
|
|
+ query.addBindValue(airportData[0]);
|
|
|
+ query.addBindValue(airportData[1]);
|
|
|
+ query.addBindValue(airportData[2]);
|
|
|
+ query.addBindValue(airportData[3]);
|
|
|
+ query.addBindValue(airportData[4]);
|
|
|
+ query.addBindValue(airportData[5]);
|
|
|
+ query.addBindValue(airportData[6]);
|
|
|
+ query.addBindValue(airportData[7]);
|
|
|
+ query.addBindValue(airportData[8]);
|
|
|
+
|
|
|
+ //if (!query.execBatch())
|
|
|
+ // qDebug() << query.lastError();
|
|
|
+ auto start = std::chrono::high_resolution_clock::now(); // execution timer
|
|
|
+ //code
|
|
|
+ qDebug() << "Updating Airport Database...";
|
|
|
+ query.execBatch();
|
|
|
+ qDebug() << "Error: " << query.lastError();
|
|
|
+ qDebug() << "Airport Database updated...";
|
|
|
+ auto stop = std::chrono::high_resolution_clock::now();
|
|
|
+ auto duration = std::chrono::duration_cast<std::chrono::microseconds>(stop - start);
|
|
|
+ qDebug() << "Time taken: " << duration.count() << " microseconds";
|
|
|
+
|
|
|
+
|
|
|
+/* for (int i = 0; i < airportData.length(); i++) {
|
|
|
+ qDebug() << "List number " << i << ": " << airportData[i];
|
|
|
+ }*/
|
|
|
}
|