Forráskód Böngészése

new flight class and rework of database

fiffty-50 4 éve
szülő
commit
e30a8961dc
7 módosított fájl, 135 hozzáadás és 111 törlés
  1. 0 3
      dbairport.cpp
  2. 13 1
      dbflight.cpp
  3. 4 0
      dbflight.h
  4. 42 38
      dbsetup.cpp
  5. 40 37
      flight.cpp
  6. 34 32
      flight.h
  7. 2 0
      openLog.pro

+ 0 - 3
dbairport.cpp

@@ -112,16 +112,13 @@ bool dbAirport::checkICAOValid(QString identifier)
         QString check = retreiveAirportIdFromIcao(identifier);
         if(check.length() > 0)
         {
-            //qDebug() << "db::CheckICAOValid says: Check passed!";
             return 1;
         }else
         {
-            //qDebug() << "db::CheckICAOValid says: Check NOT passed! Lookup unsuccessful";
             return 0;
         }
     }else
     {
-        //qDebug() << "db::CheckICAOValid says: Check NOT passed! Empty String NOT epico!";
         return 0;
     }
 }

+ 13 - 1
dbflight.cpp

@@ -16,7 +16,19 @@
  *along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
 #include "dbflight.h"
-#include "calc.h"
+
+
+/*!
+ * \brief dbFlight::verifyInput Checks the validity of the data in a
+ * flight object against the database and sets its verified flag
+ * accordingly. Information about partial validity can be obtained
+ * by querying the flight objects invalidItems member.
+ */
+void dbFlight::verifyInput(flight object)
+{
+    object.printFlight();
+    //to do
+}
 
 /*!
  * \brief SelectFlightById Retreives a single flight from the database.

+ 4 - 0
dbflight.h

@@ -22,6 +22,8 @@
 #include <QSqlQuery>
 #include <QSqlError>
 #include <QDebug>
+#include "flight.h"
+#include "calc.h"
 
 /*!
  * \brief The dbFlight class provides a databank interface for actions related to the
@@ -31,6 +33,8 @@ class dbFlight
 {
 public:
 
+    static void verifyInput(flight object);
+
     static QVector<QString> selectFlightById(QString flight_id);
 
     static bool deleteFlightById(QString flight_id);

+ 42 - 38
dbsetup.cpp

@@ -58,43 +58,48 @@ const QString createTableTails = "CREATE TABLE tails ( "
                              ")";
 
 const QString createTableFlights = "CREATE TABLE flights  ( "
-                             "id	INTEGER, "
-                             "doft	NUMERIC NOT NULL, "
-                             "dept	TEXT    NOT NULL, "
-                             "tofb	INTEGER NOT NULL, "
-                             "dest	TEXT    NOT NULL, "
-                             "tonb	INTEGER NOT NULL, "
-                             "tblk	INTEGER NOT NULL, "
-                             "pic	INTEGER, "
-                             "acft	INTEGER, "
-                             "PRIMARY KEY(id), "
-                             "FOREIGN KEY(pic)  REFERENCES pilots(pilot_id), "
-                             "FOREIGN KEY(acft) REFERENCES tails(tail_id) "
-                             ")";
-//extras table might eventually be merged into flights table.
-const QString createTableExtras = "CREATE TABLE extras ( "
-                            "extras_id      INTEGER NOT NULL, "
-                            "PilotFlying	INTEGER, "
-                            "TOday          INTEGER, "
-                            "TOnight        INTEGER, "
-                            "LDGday         INTEGER, "
-                            "LDGnight       INTEGER, "
-                            "autoland       INTEGER, "
-                            "tSPSE          INTEGER, "
-                            "tSPME          INTEGER, "
-                            "tMPME          INTEGER, "
-                            "tNight         INTEGER, "
-                            "tIFR           INTEGER, "
-                            "tPIC           INTEGER, "
-                            "tSIC           INTEGER, "
-                            "tDual          INTEGER, "
-                            "tInstructor	INTEGER, "
-                            "tSIM           INTEGER, "
-                            "ApproachType	TEXT, "
-                            "FlightNumber	TEXT, "
-                            "Remarks        TEXT, "
-                            "PRIMARY KEY(extras_id) "
-                            ")";
+                                   "id              INTEGER, "
+                                   "doft        	NUMERIC NOT NULL, "
+                                   "dept            TEXT    NOT NULL, "
+                                   "dest            TEXT    NOT NULL, "
+                                   "tofb            INTEGER NOT NULL, "
+                                   "tonb            INTEGER NOT NULL, "
+
+                                   "pic             INTEGER NOT NULL, "
+                                   "acft        	INTEGER NOT NULL, "
+                                   "tblk        	INTEGER NOT NULL, "
+
+
+                                   "tSPSE           INTEGER, "
+                                   "tSPME           INTEGER, "
+                                   "tMP             INTEGER, "
+                                   "tNIGHT          INTEGER, "
+                                   "tIFR            INTEGER, "
+
+                                   "tPIC            INTEGER, "
+                                   "tPICUS          INTEGER, "
+                                   "tSIC            INTEGER, "
+                                   "tDual           INTEGER, "
+                                   "tFI        	    INTEGER, "
+                                   "tSIM            INTEGER, "
+
+                                   "pilotFlying     INTEGER, "
+                                   "toDay           INTEGER, "
+                                   "toNight         INTEGER, "
+                                   "ldgDay          INTEGER, "
+                                   "ldgNight        INTEGER, "
+                                   "autoland        INTEGER, "
+
+                                   "secondPilot     INTEGER, "
+                                   "thirdPilot      INTEGER"
+                                   "ApproachType	TEXT, "
+                                   "FlightNumber	TEXT, "
+                                   "Remarks         TEXT, "
+
+                                   "PRIMARY KEY(id), "
+                                   "FOREIGN KEY(pic)  REFERENCES pilots(pilot_id), "
+                                   "FOREIGN KEY(acft) REFERENCES tails(tail_id) "
+                                   ")";
 
 const QString createTableAirports = "CREATE TABLE airports ( "
                             "airport_id INTEGER primary key, "
@@ -176,7 +181,6 @@ QStringList tables = {
     createTableAircraft,
     createTableTails,
     createTableFlights,
-    createTableExtras,
     createTableScratchpad,
     createTableAirports,
     createTableSettings

+ 40 - 37
flight.cpp

@@ -62,9 +62,9 @@ void flight::printFlight()
     }
 
     if(isValid){
-        cout << "Object status:\t\033[38;2;0;255;0;48;2;0;0;0mVERIFIED\033[0m\n";
+        cout << "Object status:\t\033[38;2;0;255;0;48;2;0;0;0m VERIFIED \033[0m\n";
     }else{
-        cout << "Object status:\t\033[38;2;255;0;0;48;2;0;0;0mUNVERIFIED\033[0m\n";
+        cout << "Object status:\t\033[38;2;255;0;0;48;2;0;0;0m UNVERIFIED \033[0m\n";
     }
 }
 /*!
@@ -79,7 +79,7 @@ QString flight::debug()
 
 flight flight::fromVector(QVector<QString> details)
 {
-    if(details.length() != 31){
+    if(details.length() != 32){
         qWarning() << __PRETTY_FUNCTION__ << "Invalid Input. Aborting.";
         return flight();
     }
@@ -100,31 +100,31 @@ flight flight::fromVector(QVector<QString> details)
     object.tIFR    = QTime::fromString(details[14],"hh:mm");
 
     object.tPIC    = QTime::fromString(details[15],"hh:mm");
-    object.tSIC    = QTime::fromString(details[16],"hh:mm");
-    object.tDUAL   = QTime::fromString(details[17],"hh:mm");
-    object.tFI     = QTime::fromString(details[18],"hh:mm");
-
-    object.tSIM    = QTime::fromString(details[19],"hh:mm");
-
-    object.pilotFlying  = details[20].toInt();
-    object.toDay        = details[21].toInt();
-    object.toNight      = details[22].toInt();
-    object.ldgDay       = details[23].toInt();
-    object.ldgNight     = details[24].toInt();
-    object.autoland     = details[25].toInt();
-
-    object.secondPilot  = details[26];
-    object.thirdPilot   = details[27];
-    object.approachType = details[28];
-    object.flightNumber = details[29];
-    object.remarks      = details[30];
+    object.tPICUS  = QTime::fromString(details[16],"hh:mm");
+    object.tSIC    = QTime::fromString(details[17],"hh:mm");
+    object.tDUAL   = QTime::fromString(details[18],"hh:mm");
+    object.tFI     = QTime::fromString(details[19],"hh:mm");
+    object.tSIM    = QTime::fromString(details[20],"hh:mm");
+
+    object.pilotFlying  = details[21].toInt();
+    object.toDay        = details[22].toInt();
+    object.toNight      = details[23].toInt();
+    object.ldgDay       = details[24].toInt();
+    object.ldgNight     = details[25].toInt();
+    object.autoland     = details[26].toInt();
+
+    object.secondPilot  = details[27];
+    object.thirdPilot   = details[28];
+    object.approachType = details[29];
+    object.flightNumber = details[30];
+    object.remarks      = details[31];
 
     return object;
 }
 
 QVector<QString> flight::toVector(flight object)
 {
-    QVector<QString> vecOut(31);
+    QVector<QString> vecOut(32);
 
     vecOut [1]  = QString::number(object.id);
     vecOut [2]  = object.doft.toString(Qt::ISODate);
@@ -135,27 +135,30 @@ QVector<QString> flight::toVector(flight object)
     vecOut [7]  = object.pic;
     vecOut [8]  = object.acft;
     vecOut [9]  = object.tblk.toString("hh:mm");
+
     vecOut [10] = object.tSPSE.toString("hh:mm");
     vecOut [11] = object.tSPME.toString("hh:mm");
     vecOut [12] = object.tMP.toString("hh:mm");
     vecOut [13] = object.tNIGHT.toString("hh:mm");
     vecOut [14] = object.tIFR.toString("hh:mm");
     vecOut [15] = object.tPIC.toString("hh:mm");
-    vecOut [16] = object.tSIC.toString("hh:mm");
-    vecOut [17] = object.tDUAL.toString("hh:mm");
-    vecOut [18] = object.tFI.toString("hh:mm");
-    vecOut [19] = object.tSIM.toString("hh:mm");
-    vecOut [20] = QString::number(object.pilotFlying);
-    vecOut [21] = QString::number(object.toDay);
-    vecOut [22] = QString::number(object.toNight);
-    vecOut [23] = QString::number(object.ldgDay);
-    vecOut [24] = QString::number(object.ldgNight);
-    vecOut [25] = QString::number(object.autoland);
-    vecOut [26] = object.secondPilot;
-    vecOut [27] = object.thirdPilot;
-    vecOut [28] = object.approachType;
-    vecOut [29] = object.flightNumber;
-    vecOut [30] = object.remarks;
+    vecOut [16] = object.tPICUS.toString("hh:mm");
+    vecOut [17] = object.tSIC.toString("hh:mm");
+    vecOut [18] = object.tDUAL.toString("hh:mm");
+    vecOut [19] = object.tFI.toString("hh:mm");
+    vecOut [20] = object.tSIM.toString("hh:mm");
+
+    vecOut [21] = QString::number(object.pilotFlying);
+    vecOut [22] = QString::number(object.toDay);
+    vecOut [23] = QString::number(object.toNight);
+    vecOut [24] = QString::number(object.ldgDay);
+    vecOut [25] = QString::number(object.ldgNight);
+    vecOut [26] = QString::number(object.autoland);
+    vecOut [27] = object.secondPilot;
+    vecOut [28] = object.thirdPilot;
+    vecOut [29] = object.approachType;
+    vecOut [30] = object.flightNumber;
+    vecOut [31] = object.remarks;
 
     return vecOut;
 }

+ 34 - 32
flight.h

@@ -9,52 +9,54 @@
  * \brief The flight class is a container class for a logbook entry. It contains all the
  * entries relevant to a flight. There are 8 mandatory entries which are initalized
  * invalid and need to be set before the flight can be committed. The other entries
- * are optional. All time entries in a flight object shall be UTC.
+ * are optional and can be empty, null or any other value.
+ * All time entries in a flight object shall be UTC.
  */
 class flight
 {
 public:
     bool        isValid = false;
-    QStringList invalidItems = {
+    QStringList invalidItems = {                      // Upon verification, verified entries are removed from the list
         "doft", "dept", "dest", "tofb",
         "tonb", "pic",  "acft", "tblk"
     };
 
-    int         id      = -1;                             // Primary Key in Database, needed for retreival but not for commiting (sqlite autoincrement)
-    QDate       doft    = QDate();                        // Date of Flight
-    QString     dept    = "INVA";                         // Departure
-    QString     dest    = "INVA";                         // Destination
-    QTime       tofb    = QTime();                        // Time off blocks (UTC), initialised invalid
-    QTime       tonb    = QTime();                        // Time on blocks (UTC), initialised invalid
-    QString     pic     = "INVA";                         // Pilot in command (ID)
-    QString     acft    = "INVA";                         // Aircraft Registration (ID)
+    int         id      = -1;                         //[1] Primary Key in Database, needed for retreival but not for commiting (sqlite autoincrement)
+    QDate       doft    = QDate();                    //[2] Date of Flight, initialised invalid
+    QString     dept    = "INVA";                     //[3] Departure, initialised invalid
+    QString     dest    = "INVA";                     //[4] Destination, initialised invalid
+    QTime       tofb    = QTime();                    //[5] Time off blocks (UTC), initialised invalid
+    QTime       tonb    = QTime();                    //[6] Time on blocks (UTC), initialised invalid
+    QString     pic     = "INVA";                     //[7] Pilot in command (ID), initialised invalid
+    QString     acft    = "INVA";                     //[8] Aircraft Registration (ID), initialised invalid
 
-    QTime       tblk    = QTime();                        // Total Blocktime, initialised invalid
-    QTime       tSPSE   = QTime(0,0);                     // optional times initialised as 0
-    QTime       tSPME   = QTime(0,0);
-    QTime       tMP     = QTime(0,0);
-    QTime       tNIGHT  = QTime(0,0);
-    QTime       tIFR    = QTime(0,0);
+    QTime       tblk    = QTime();                    //[9] Total Blocktime, initialised invalid
+    QTime       tSPSE   = QTime(0,0);                 //[10] optional times initialised as 0
+    QTime       tSPME   = QTime(0,0);                 //[11]
+    QTime       tMP     = QTime(0,0);                 //[12]
+    QTime       tNIGHT  = QTime(0,0);                 //[13]
+    QTime       tIFR    = QTime(0,0);                 //[14]
 
-    QTime       tPIC    = QTime(0,0);
-    QTime       tSIC    = QTime(0,0);
-    QTime       tDUAL   = QTime(0,0);
-    QTime       tFI     = QTime(0,0);
+    QTime       tPIC    = QTime(0,0);                 //[15]
+    QTime       tPICUS  = QTime(0,0);                 //[16]
+    QTime       tSIC    = QTime(0,0);                 //[17]
+    QTime       tDUAL   = QTime(0,0);                 //[18]
+    QTime       tFI     = QTime(0,0);                 //[19]
 
-    QTime       tSIM    = QTime(0,0);
+    QTime       tSIM    = QTime(0,0);                 //[20]
 
-    int         pilotFlying;
-    int         toDay;
-    int         toNight;
-    int         ldgDay;
-    int         ldgNight;
-    int         autoland;
+    int         pilotFlying;                          //[21]
+    int         toDay;                                //[22]
+    int         toNight;                              //[23]
+    int         ldgDay;                               //[24]
+    int         ldgNight;                             //[25]
+    int         autoland;                             //[26]
 
-    QString     secondPilot;
-    QString     thirdPilot;
-    QString     approachType;
-    QString     flightNumber;
-    QString     remarks;
+    QString     secondPilot;                          //[27]
+    QString     thirdPilot;                           //[28]
+    QString     approachType;                         //[29]
+    QString     flightNumber;                         //[30]
+    QString     remarks;                              //[31]
 
     // Functions
     static flight           fromVector(QVector<QString>);

+ 2 - 0
openLog.pro

@@ -32,6 +32,7 @@ SOURCES += \
     dbstat.cpp \
     easaview.cpp \
     editflight.cpp \
+    flight.cpp \
     homewidget.cpp \
     logbookwidget.cpp \
     main.cpp \
@@ -53,6 +54,7 @@ HEADERS += \
     dbstat.h \
     easaview.h \
     editflight.h \
+    flight.h \
     homewidget.h \
     logbookwidget.h \
     mainwindow.h \