dbaircraft.cpp 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. #include "dbaircraft.h"
  2. #include "dbman.cpp"
  3. /*!
  4. * \brief RetreiveRegistration Looks up tail_id from Database
  5. * \param tail_ID Primary Key of tails database
  6. * \return Registration
  7. */
  8. QString dbAircraft::retreiveRegistration(QString tail_ID)
  9. {
  10. QString acftRegistration("");
  11. QSqlQuery query;
  12. query.prepare("SELECT registration FROM tails WHERE tail_id == ?");
  13. query.addBindValue(tail_ID.toInt());
  14. query.exec();
  15. if(query.first());
  16. else
  17. qDebug() << ("No Aircraft with this ID found");
  18. query.previous();//To go back to index 0
  19. while (query.next()) {
  20. acftRegistration.append(query.value(0).toString());
  21. }
  22. return acftRegistration;
  23. }
  24. QStringList dbAircraft::retreiveRegistrationList()
  25. {
  26. QSqlQuery query;
  27. query.prepare("SELECT registration FROM tails");
  28. query.exec();
  29. QStringList result;
  30. while (query.next()) {
  31. result.append(query.value(0).toString());
  32. }
  33. return result;
  34. }
  35. /*!
  36. * \brief newAcftGetString Looks up an aircraft Registration in the database
  37. * \param searchstring
  38. * \return Registration, make, model and variant
  39. */
  40. QStringList dbAircraft::newAcftGetString(QString searchstring)
  41. {
  42. QStringList result;
  43. if(searchstring.length()<2){return result;}
  44. QSqlQuery query;
  45. query.prepare("SELECT registration, make, model, variant "
  46. "FROM aircraft "
  47. "INNER JOIN tails on tails.aircraft_ID = aircraft.aircraft_id "
  48. "WHERE tails.registration LIKE ?");
  49. searchstring.append("%"); searchstring.prepend("%");
  50. query.addBindValue(searchstring);
  51. query.exec();
  52. while(query.next())
  53. {
  54. result.append(query.value(0).toString() + " (" + query.value(1).toString() + "-" + query.value(2).toString() + "-" + query.value(3).toString() + ")");
  55. }
  56. qDebug() << "newAcftGetString: " << result.length() << result;
  57. return result;
  58. }
  59. /*!
  60. * \brief dbAircraft::newAcftGetId Looks up a registration in the databse
  61. * \param registration Aircraft Registration
  62. * \return tail_id
  63. */
  64. QString dbAircraft::retreiveTailId(QString registration)
  65. {
  66. QString result;
  67. QSqlQuery query;
  68. query.prepare("SELECT tail_id "
  69. "FROM tails "
  70. "WHERE registration LIKE ?");
  71. registration.prepend("%"); registration.append("%");
  72. query.addBindValue(registration);
  73. query.exec();
  74. while(query.next())
  75. {
  76. result.append(query.value(0).toString());
  77. }
  78. qDebug() << "retreiveTailId: " << result;
  79. return result;
  80. }
  81. /*!
  82. * \brief dbAircraft::retreiveAircraftId Looks up aircraft_id in tails table
  83. * \param tail_id
  84. * \return aircraft_id
  85. */
  86. QString dbAircraft::retreiveAircraftId(QString tail_id)
  87. {
  88. QString result;
  89. QSqlQuery query;
  90. query.prepare("SELECT aircraft_id "
  91. "FROM tails "
  92. "WHERE tail_id = ?");
  93. query.addBindValue(tail_id);
  94. query.exec();
  95. while(query.next())
  96. {
  97. result.append(query.value(0).toString());
  98. }
  99. qDebug() << "retreiveAircraftId: " << result;
  100. return result;
  101. }
  102. /*!
  103. * \brief dbAircraft::retreiveAircraftTypeFromReg Searches the tails Database
  104. * \param searchstring
  105. * \return {registration, type, iata Code, tail_id} or {}
  106. */
  107. QVector<QString> dbAircraft::retreiveAircraftTypeFromReg(QString searchstring)
  108. {
  109. QSqlQuery query;
  110. query.prepare("SELECT Name, iata, registration, tail_id " //"SELECT Registration, Name, icao, iata "
  111. "FROM aircraft "
  112. "INNER JOIN tails on tails.aircraft_ID = aircraft.aircraft_id "
  113. "WHERE tails.registration LIKE ?");
  114. // Returns Registration/Name/icao/iata
  115. searchstring.prepend("%");
  116. searchstring.append("%");
  117. query.addBindValue(searchstring);
  118. query.exec();
  119. QVector<QString> result;
  120. if(query.first())
  121. {
  122. QString acType = query.value(0).toString();
  123. QString iataCode = query.value(1).toString();
  124. QString registration = query.value(2).toString();
  125. QString tail_id = query.value(3).toString();
  126. result.append(registration); result.append(acType);
  127. result.append(iataCode); result.append(tail_id);
  128. return result;
  129. }else
  130. {
  131. return result; // return empty
  132. }
  133. }
  134. /*!
  135. * \brief dbAircraft::retreiveAircraftMake Search function to provide a
  136. * QStringList to the QCompleter
  137. * \param searchstring A possible aircraft manufacturer
  138. * \return Possible values according to the aircraft database
  139. */
  140. QStringList dbAircraft::retreiveAircraftMake(QString searchstring)
  141. {
  142. QStringList result;
  143. QSqlQuery query;
  144. query.prepare("SELECT make from aircraft WHERE make LIKE ?");
  145. searchstring.prepend("%"); searchstring.append("%");
  146. query.addBindValue(searchstring);
  147. query.exec();
  148. while(query.next())
  149. {
  150. result.append(query.value(0).toString());
  151. }
  152. qDebug() << "db::RetreiveAircraftMake... Result:" << result;
  153. return result;
  154. }
  155. /*!
  156. * \brief dbAircraft::retreiveAircraftModel Search function to provide a
  157. * QStringList to the QCompleter
  158. * \param make A possible aircraft family (A320, 737,...)
  159. * \param searchstring
  160. * \return
  161. */
  162. QStringList dbAircraft::retreiveAircraftModel(QString make, QString searchstring)
  163. {
  164. QStringList result;
  165. QSqlQuery query;
  166. query.prepare("SELECT model FROM aircraft WHERE make = ? AND model LIKE ?");
  167. query.addBindValue(make);
  168. searchstring.prepend("%"); searchstring.append("%");
  169. query.addBindValue(searchstring);
  170. query.exec();
  171. while(query.next())
  172. {
  173. result.append(query.value(0).toString());
  174. qDebug() << "db::RetreiveAircraftModel... Result:" << result;
  175. }
  176. return result;
  177. }
  178. /*!
  179. * \brief dbAircraft::retreiveAircraftVariant Search function to provide a
  180. * QStringList to the QCompleter
  181. * \param make Aircraft manufacturer
  182. * \param model Aircraft family
  183. * \param searchstring
  184. * \return Aircraft Variant
  185. */
  186. QStringList dbAircraft::retreiveAircraftVariant(QString make, QString model, QString searchstring)
  187. {
  188. QStringList result;
  189. QSqlQuery query;
  190. query.prepare("SELECT variant from aircraft WHERE make = ? AND model = ? AND variant LIKE ?");
  191. query.addBindValue(make);
  192. query.addBindValue(model);
  193. searchstring.prepend("%"); searchstring.append("%");
  194. query.addBindValue(searchstring);
  195. query.exec();
  196. while(query.next())
  197. {
  198. result.append(query.value(0).toString());
  199. qDebug() << "db::RetreiveAircraftVariant... Result:" << result;
  200. }
  201. return result;
  202. }
  203. /*!
  204. * \brief dbAircraft::retreiveAircraftIdFromMakeModelVariant Looks up the unique
  205. * aircraft id for a given specification of make, model and variant
  206. * \param make Aircraft manufacturer (e.g. Boeing)
  207. * \param model Aircraft family (e.g. 737)
  208. * \param variant Aircraft variant (e.g. -800)
  209. * \return arcraft_id primary key of aircraft database
  210. */
  211. QString dbAircraft::retreiveAircraftIdFromMakeModelVariant(QString make, QString model, QString variant)
  212. {
  213. QString result;
  214. QSqlQuery query;
  215. query.prepare("SELECT aircraft_id FROM aircraft WHERE make = ? AND model = ? AND variant = ?");
  216. query.addBindValue(make);
  217. query.addBindValue(model);
  218. query.addBindValue(variant);
  219. query.exec();
  220. if(query.first())
  221. {
  222. result.append(query.value(0).toString());
  223. qDebug() << "db::RetreiveAircraftIdFromMakeModelVariant: Aircraft found! ID# " << result;
  224. return result;
  225. }else
  226. {
  227. result = result.left(result.length()-1);
  228. result.append("0");
  229. qDebug() << "db::RetreiveAircraftIdFromMakeModelVariant: ERROR - no AircraftId found.";
  230. return result;
  231. }
  232. }
  233. /*!
  234. * \brief dbAircraft::commitTailToDb Creates a new entry in the tails database
  235. * \param registration
  236. * \param aircraft_id Primary key of aircraft database
  237. * \param company optional entry if a/c is associated with a certain company
  238. * \return true on success
  239. */
  240. bool dbAircraft::commitTailToDb(QString registration, QString aircraft_id, QString company)
  241. {
  242. QSqlQuery commit;
  243. commit.prepare("INSERT INTO tails (registration, aircraft_id, company) VALUES (?,?,?)");
  244. commit.addBindValue(registration);
  245. commit.addBindValue(aircraft_id);
  246. commit.addBindValue(company);
  247. commit.exec();
  248. if(commit.lastError().text().length() < 0){
  249. qWarning() << "db::CommitAircraftToDb:: SQL error:" << commit.lastError().text();
  250. return false;
  251. }else{
  252. return true;
  253. }
  254. }
  255. QVector<QString> dbAircraft::retreiveAircraftDetails(QString aircraft_id)
  256. {
  257. QSqlQuery query;
  258. query.prepare("SELECT singlepilot, multipilot, singleengine, "
  259. "multiengine, turboprop, jet, heavy "
  260. "FROM aircraft "
  261. "WHERE aircraft_id = ?");
  262. query.addBindValue(aircraft_id);
  263. query.exec();
  264. QVector<QString> result;
  265. while(query.next())
  266. {
  267. result.append(query.value(0).toString()); // Singlepilot
  268. result.append(query.value(1).toString()); // Multipilot
  269. result.append(query.value(2).toString()); // Singlengine
  270. result.append(query.value(3).toString()); // Multiengine
  271. result.append(query.value(4).toString()); // turboprop
  272. result.append(query.value(5).toString()); // jet
  273. result.append(query.value(6).toString()); // heavy
  274. qDebug() << "dbaircraft::retreiveAircraftDetails... Result:" << result;
  275. }
  276. return result;
  277. }