1  #include "database.h"

2  DataBase::DataBase(QObject *parent) : QObject(parent){

3  }

4  DataBase::~DataBase()
5  {

6  }

7  void DataBase::connectToDataBase(){
    /* Before connecting to a database checks for its existence.
     * Depending on the result of the opening of
     * manufacture database or its recovery
     * */
8   if(!QFile("d:\\sqliteProjects\\" DATABASE_NAME).exists()){
9        this->restoreDataBase();
10    } else {
11        this->openDataBase();
12    }

13 }
//*****************************
14 bool DataBase::restoreDataBase(){
15    if(this->openDataBase()){
16        if((!this->createMainTable()) || (!this->createDeviceTable())){
17            return false;
18        } else {
19            return true;
20        }
21    } else {
22        qDebug() << "Failed to restore the database";
23        return false;
24    }
25    return false;
26 }
//****************************
27  bool DataBase::openDataBase() {
     /* Database opens along a predetermined path and
     * the database name, if it exists
     * */
28    db = QSqlDatabase::addDatabase("QSQLITE");
29    db.setHostName(DATABASE_HOSTNAME);
30    db.setDatabaseName("d:\\sqliteProjects\\" DATABASE_NAME);
31    if(db.open()){
32        return true;
33    } else {
34        return false;
35    }
36 }
//****************************
37 void DataBase::closeDataBase() {
38     db.close();
39 }
//************************
40 bool DataBase::createMainTable() {
41    QSqlQuery query;
42    if(!query.exec( "CREATE TABLE " TABLE " ("
                            "id INTEGER PRIMARY KEY AUTOINCREMENT, "
                            TABLE_DATE      " DATE            NOT NULL,"
                            TABLE_TIME      " TIME            NOT NULL,"
                            TABLE_HOSTNAME  " INTEGER         NOT NULL,"
                            TABLE_IP        " INTEGER         NOT NULL"
                        " )"
                    )){
43        qDebug() << "DataBase: error of create " << TABLE;
44        qDebug() << query.lastError().text();
45        return false;
46    } else {
47        return true;
48    }
49    return false;
50 }
//*****************************
51 bool DataBase::createDeviceTable() {
52    QSqlQuery query;
53    if(!query.exec( "CREATE TABLE " DEVICE " ("
                            "id INTEGER PRIMARY KEY AUTOINCREMENT, "
                            DEVICE_HOSTNAME  " VARCHAR(255)    NOT NULL,"
                            DEVICE_IP        " VARCHAR(16)     NOT NULL"
                        " )"
                    )){
54        qDebug() << "DataBase: error of create " << DEVICE;
55        qDebug() << query.lastError().text();
56        return false;
57    } else {
58        return true;
59    }
60    return false;
61 }
//******************************
62 bool DataBase::inserIntoMainTable(const QVariantList &data) {
63     QSqlQuery query;
64     query.prepare("INSERT INTO " TABLE " ( " TABLE_DATE ", "
                                             TABLE_TIME ", "
                                             TABLE_HOSTNAME ", "
                                             TABLE_IP " ) "
                  "VALUES (:Date, :Time, :Hostname, :IP )");
65    query.bindValue(":Date",        data[0].toDate());
66    query.bindValue(":Time",        data[1].toTime());
67    query.bindValue(":Hostname",    data[2].toInt());
68    query.bindValue(":IP",          data[3].toInt());
69    if(!query.exec()){
70        qDebug() << "error insert into " << TABLE;
71        qDebug() << query.lastError().text();
72        return false;
73    } else {
74        return true;
75    }
76    return false;
77 }
//************************************
78 bool DataBase::inserIntoDeviceTable(const QVariantList &data) {
79    QSqlQuery query;
80    query.prepare("INSERT INTO " DEVICE " ( " DEVICE_HOSTNAME ", "
                                              DEVICE_IP " ) "
                  "VALUES (:Hostname, :IP )");
81    query.bindValue(":Hostname",    data[0].toString());
82    query.bindValue(":IP",          data[1].toString());
83    if(!query.exec()){
84        qDebug() << "error insert into " << DEVICE;
85        qDebug() << query.lastError().text();
86        return false;
87    } else {
88        return true;
89    }
90    return false;
91 }
