dbaircraft.cpp 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  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. /*!
  25. * \brief newAcftGetString Looks up an aircraft Registration in the database
  26. * \param searchstring
  27. * \return Registration, make, model and variant
  28. */
  29. QStringList dbAircraft::newAcftGetString(QString searchstring)
  30. {
  31. QStringList result;
  32. if(searchstring.length()<2){return result;}
  33. QSqlQuery query;
  34. query.prepare("SELECT registration, make, model, variant "
  35. "FROM aircraft "
  36. "INNER JOIN tails on tails.aircraft_ID = aircraft.aircraft_id "
  37. "WHERE tails.registration LIKE ?");
  38. searchstring.append("%"); searchstring.prepend("%");
  39. query.addBindValue(searchstring);
  40. query.exec();
  41. while(query.next())
  42. {
  43. result.append(query.value(0).toString() + " (" + query.value(1).toString() + "-" + query.value(2).toString() + "-" + query.value(3).toString() + ")");
  44. }
  45. qDebug() << "newAcftGetString: " << result.length() << result;
  46. return result;
  47. }
  48. /*!
  49. * \brief dbAircraft::newAcftGetId Looks up a registration in the databse
  50. * \param registration Aircraft Registration
  51. * \return tail_id
  52. */
  53. QString dbAircraft::newAcftGetId(QString registration)
  54. {
  55. QString result;
  56. QSqlQuery query;
  57. query.prepare("SELECT tail_id "
  58. "FROM tails "
  59. "WHERE registration LIKE ?");
  60. registration.prepend("%"); registration.append("%");
  61. query.addBindValue(registration);
  62. query.exec();
  63. while(query.next())
  64. {
  65. result.append(query.value(0).toString());
  66. }
  67. qDebug() << "newAcftGetId: " << result;
  68. return result;
  69. }
  70. /*!
  71. * \brief dbAircraft::retreiveAircraftTypeFromReg Searches the tails Database
  72. * \param searchstring
  73. * \return {registration, type, iata Code, tail_id} or {}
  74. */
  75. QVector<QString> dbAircraft::retreiveAircraftTypeFromReg(QString searchstring)
  76. {
  77. QSqlQuery query;
  78. query.prepare("SELECT Name, iata, registration, tail_id " //"SELECT Registration, Name, icao, iata "
  79. "FROM aircraft "
  80. "INNER JOIN tails on tails.aircraft_ID = aircraft.aircraft_id "
  81. "WHERE tails.registration LIKE ?");
  82. // Returns Registration/Name/icao/iata
  83. searchstring.prepend("%");
  84. searchstring.append("%");
  85. query.addBindValue(searchstring);
  86. query.exec();
  87. QVector<QString> result;
  88. if(query.first())
  89. {
  90. QString acType = query.value(0).toString();
  91. QString iataCode = query.value(1).toString();
  92. QString registration = query.value(2).toString();
  93. QString tail_id = query.value(3).toString();
  94. result.append(registration); result.append(acType);
  95. result.append(iataCode); result.append(tail_id);
  96. return result;
  97. }else
  98. {
  99. return result; // return empty
  100. }
  101. }
  102. /*!
  103. * \brief dbAircraft::retreiveAircraftMake Search function to provide a
  104. * QStringList to the QCompleter
  105. * \param searchstring A possible aircraft manufacturer
  106. * \return Possible values according to the aircraft database
  107. */
  108. QStringList dbAircraft::retreiveAircraftMake(QString searchstring)
  109. {
  110. QStringList result;
  111. QSqlQuery query;
  112. query.prepare("SELECT make from aircraft WHERE make LIKE ?");
  113. searchstring.prepend("%"); searchstring.append("%");
  114. query.addBindValue(searchstring);
  115. query.exec();
  116. while(query.next())
  117. {
  118. result.append(query.value(0).toString());
  119. }
  120. qDebug() << "db::RetreiveAircraftMake... Result:" << result;
  121. return result;
  122. }
  123. /*!
  124. * \brief dbAircraft::retreiveAircraftModel Search function to provide a
  125. * QStringList to the QCompleter
  126. * \param make A possible aircraft family (A320, 737,...)
  127. * \param searchstring
  128. * \return
  129. */
  130. QStringList dbAircraft::retreiveAircraftModel(QString make, QString searchstring)
  131. {
  132. QStringList result;
  133. QSqlQuery query;
  134. query.prepare("SELECT model FROM aircraft WHERE make = ? AND model LIKE ?");
  135. query.addBindValue(make);
  136. searchstring.prepend("%"); searchstring.append("%");
  137. query.addBindValue(searchstring);
  138. query.exec();
  139. while(query.next())
  140. {
  141. result.append(query.value(0).toString());
  142. qDebug() << "db::RetreiveAircraftModel... Result:" << result;
  143. }
  144. return result;
  145. }
  146. /*!
  147. * \brief dbAircraft::retreiveAircraftVariant Search function to provide a
  148. * QStringList to the QCompleter
  149. * \param make Aircraft manufacturer
  150. * \param model Aircraft family
  151. * \param searchstring
  152. * \return Aircraft Variant
  153. */
  154. QStringList dbAircraft::retreiveAircraftVariant(QString make, QString model, QString searchstring)
  155. {
  156. QStringList result;
  157. QSqlQuery query;
  158. query.prepare("SELECT variant from aircraft WHERE make = ? AND model = ? AND variant LIKE ?");
  159. query.addBindValue(make);
  160. query.addBindValue(model);
  161. searchstring.prepend("%"); searchstring.append("%");
  162. query.addBindValue(searchstring);
  163. query.exec();
  164. while(query.next())
  165. {
  166. result.append(query.value(0).toString());
  167. qDebug() << "db::RetreiveAircraftVariant... Result:" << result;
  168. }
  169. return result;
  170. }
  171. /*!
  172. * \brief dbAircraft::retreiveAircraftIdFromMakeModelVariant Looks up the unique
  173. * aircraft id for a given specification of make, model and variant
  174. * \param make Aircraft manufacturer (e.g. Boeing)
  175. * \param model Aircraft family (e.g. 737)
  176. * \param variant Aircraft variant (e.g. -800)
  177. * \return arcraft_id primary key of aircraft database
  178. */
  179. QString dbAircraft::retreiveAircraftIdFromMakeModelVariant(QString make, QString model, QString variant)
  180. {
  181. QString result;
  182. QSqlQuery query;
  183. query.prepare("SELECT aircraft_id FROM aircraft WHERE make = ? AND model = ? AND variant = ?");
  184. query.addBindValue(make);
  185. query.addBindValue(model);
  186. query.addBindValue(variant);
  187. query.exec();
  188. if(query.first())
  189. {
  190. result.append(query.value(0).toString());
  191. qDebug() << "db::RetreiveAircraftIdFromMakeModelVariant: Aircraft found! ID# " << result;
  192. return result;
  193. }else
  194. {
  195. result = result.left(result.length()-1);
  196. result.append("0");
  197. qDebug() << "db::RetreiveAircraftIdFromMakeModelVariant: ERROR - no AircraftId found.";
  198. return result;
  199. }
  200. }
  201. /*!
  202. * \brief dbAircraft::commitTailToDb Creates a new entry in the tails database
  203. * \param registration
  204. * \param aircraft_id Primary key of aircraft database
  205. * \param company optional entry if a/c is associated with a certain company
  206. * \return true on success
  207. */
  208. bool dbAircraft::commitTailToDb(QString registration, QString aircraft_id, QString company)
  209. {
  210. QSqlQuery commit;
  211. commit.prepare("INSERT INTO tails (registration, aircraft_id, company) VALUES (?,?,?)");
  212. commit.addBindValue(registration);
  213. commit.addBindValue(aircraft_id);
  214. commit.addBindValue(company);
  215. commit.exec();
  216. if(commit.lastError().text().length() < 0){
  217. qWarning() << "db::CommitAircraftToDb:: SQL error:" << commit.lastError().text();
  218. return false;
  219. }else{
  220. return true;
  221. }
  222. }