Save work...
This commit is contained in:
		
							parent
							
								
									e0d6763708
								
							
						
					
					
						commit
						4fb05c3644
					
				
					 4 changed files with 52 additions and 42 deletions
				
			
		| 
						 | 
					@ -68,16 +68,22 @@
 | 
				
			||||||
#define FILTER_WIDTH                    150
 | 
					#define FILTER_WIDTH                    150
 | 
				
			||||||
#define FILTER_RIGHT_MARGIN             5
 | 
					#define FILTER_RIGHT_MARGIN             5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define APP_DB_TEST_MYSQL             "MySQLTest"
 | 
					#define APP_DB_PSQL_DRIVER            "QPSQL"
 | 
				
			||||||
 | 
					#define APP_DB_PSQL_PORT              5432
 | 
				
			||||||
 | 
					#define APP_DB_PSQL_FALLBACK_DB       "postgres"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define APP_DB_MYSQL_DRIVER           "QMYSQL"
 | 
				
			||||||
 | 
					#define APP_DB_MYSQL_INIT             "db_init_mysql.sql"
 | 
				
			||||||
 | 
					#define APP_DB_MYSQL_TEST             "MySQLTest"
 | 
				
			||||||
#define APP_DB_MYSQL_PORT             3306
 | 
					#define APP_DB_MYSQL_PORT             3306
 | 
				
			||||||
#define APP_DB_DRIVER_SQLITE          "QSQLITE"
 | 
					
 | 
				
			||||||
#define APP_DB_DRIVER_MYSQL           "QMYSQL"
 | 
					#define APP_DB_SQLITE_DRIVER          "QSQLITE"
 | 
				
			||||||
#define APP_DB_INIT_MYSQL             "db_init_mysql.sql"
 | 
					#define APP_DB_SQLITE_INIT            "db_init_sqlite.sql"
 | 
				
			||||||
#define APP_DB_INIT_SQLITE            "db_init_sqlite.sql"
 | 
					#define APP_DB_SQLITE_MEMORY_INIT     "db_init_sqlite_memory.sql"
 | 
				
			||||||
#define APP_DB_INIT_SQLITE_MEMORY     "db_init_sqlite_memory.sql"
 | 
					#define APP_DB_SQLITE_PATH            "data/database/local"
 | 
				
			||||||
#define APP_DB_INIT_SPLIT             "-- !\n"
 | 
					#define APP_DB_SQLITE_FILE            "database.db"
 | 
				
			||||||
#define APP_DB_PATH                   "data/database/local"
 | 
					
 | 
				
			||||||
#define APP_DB_FILE                   "database.db"
 | 
					#define APP_DB_COMMENT_SPLIT          "-- !\n"
 | 
				
			||||||
#define APP_DB_WEB_PATH               "data/database/web"
 | 
					#define APP_DB_WEB_PATH               "data/database/web"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define APP_CFG_PATH        "data/config"
 | 
					#define APP_CFG_PATH        "data/config"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -513,15 +513,15 @@ void FormSettings::loadDataStorage() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Load SQLite.
 | 
					  // Load SQLite.
 | 
				
			||||||
  m_ui->m_cmbDatabaseDriver->addItem(
 | 
					  m_ui->m_cmbDatabaseDriver->addItem(
 | 
				
			||||||
        tr("SQLite (embedded database)"), APP_DB_DRIVER_SQLITE);
 | 
					        tr("SQLite (embedded database)"), APP_DB_SQLITE_DRIVER);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Load in-memory database status.
 | 
					  // Load in-memory database status.
 | 
				
			||||||
  m_ui->m_checkSqliteUseInMemoryDatabase->setChecked(Settings::instance()->value(APP_CFG_DB, "use_in_memory_db", false).toBool());
 | 
					  m_ui->m_checkSqliteUseInMemoryDatabase->setChecked(Settings::instance()->value(APP_CFG_DB, "use_in_memory_db", false).toBool());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (QSqlDatabase::isDriverAvailable(APP_DB_DRIVER_MYSQL)) {
 | 
					  if (QSqlDatabase::isDriverAvailable(APP_DB_MYSQL_DRIVER)) {
 | 
				
			||||||
    // Load MySQL.
 | 
					    // Load MySQL.
 | 
				
			||||||
    m_ui->m_cmbDatabaseDriver->addItem(
 | 
					    m_ui->m_cmbDatabaseDriver->addItem(
 | 
				
			||||||
          tr("MySQL/MariaDB (dedicated database)"), APP_DB_DRIVER_MYSQL);
 | 
					          tr("MySQL/MariaDB (dedicated database)"), APP_DB_MYSQL_DRIVER);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Setup placeholders.
 | 
					    // Setup placeholders.
 | 
				
			||||||
    m_ui->m_txtMysqlHostname->lineEdit()->setPlaceholderText(tr("Hostname of your MySQL server"));
 | 
					    m_ui->m_txtMysqlHostname->lineEdit()->setPlaceholderText(tr("Hostname of your MySQL server"));
 | 
				
			||||||
| 
						 | 
					@ -536,7 +536,7 @@ void FormSettings::loadDataStorage() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  int index_current_backend = m_ui->m_cmbDatabaseDriver->findData(Settings::instance()->value(APP_CFG_DB,
 | 
					  int index_current_backend = m_ui->m_cmbDatabaseDriver->findData(Settings::instance()->value(APP_CFG_DB,
 | 
				
			||||||
                                                                                              "database_driver",
 | 
					                                                                                              "database_driver",
 | 
				
			||||||
                                                                                              APP_DB_DRIVER_SQLITE).toString());
 | 
					                                                                                              APP_DB_SQLITE_DRIVER).toString());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (index_current_backend >= 0) {
 | 
					  if (index_current_backend >= 0) {
 | 
				
			||||||
    m_ui->m_cmbDatabaseDriver->setCurrentIndex(index_current_backend);
 | 
					    m_ui->m_cmbDatabaseDriver->setCurrentIndex(index_current_backend);
 | 
				
			||||||
| 
						 | 
					@ -553,13 +553,13 @@ void FormSettings::saveDataStorage() {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Save data storage settings.
 | 
					  // Save data storage settings.
 | 
				
			||||||
  QString original_db_driver = Settings::instance()->value(APP_CFG_DB, "database_driver", APP_DB_DRIVER_SQLITE).toString();
 | 
					  QString original_db_driver = Settings::instance()->value(APP_CFG_DB, "database_driver", APP_DB_SQLITE_DRIVER).toString();
 | 
				
			||||||
  QString selected_db_driver = m_ui->m_cmbDatabaseDriver->itemData(m_ui->m_cmbDatabaseDriver->currentIndex()).toString();
 | 
					  QString selected_db_driver = m_ui->m_cmbDatabaseDriver->itemData(m_ui->m_cmbDatabaseDriver->currentIndex()).toString();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Save SQLite.
 | 
					  // Save SQLite.
 | 
				
			||||||
  Settings::instance()->setValue(APP_CFG_DB, "use_in_memory_db", new_inmemory);
 | 
					  Settings::instance()->setValue(APP_CFG_DB, "use_in_memory_db", new_inmemory);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (QSqlDatabase::isDriverAvailable(APP_DB_DRIVER_MYSQL)) {
 | 
					  if (QSqlDatabase::isDriverAvailable(APP_DB_MYSQL_DRIVER)) {
 | 
				
			||||||
    // Save MySQL.
 | 
					    // Save MySQL.
 | 
				
			||||||
    Settings::instance()->setValue(APP_CFG_DB, "mysql_hostname", m_ui->m_txtMysqlHostname->lineEdit()->text());
 | 
					    Settings::instance()->setValue(APP_CFG_DB, "mysql_hostname", m_ui->m_txtMysqlHostname->lineEdit()->text());
 | 
				
			||||||
    Settings::instance()->setValue(APP_CFG_DB, "mysql_username", m_ui->m_txtMysqlUsername->lineEdit()->text());
 | 
					    Settings::instance()->setValue(APP_CFG_DB, "mysql_username", m_ui->m_txtMysqlUsername->lineEdit()->text());
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -52,8 +52,8 @@ DatabaseFactory *DatabaseFactory::instance() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DatabaseFactory::MySQLError DatabaseFactory::mysqlTestConnection(const QString &hostname, int port,
 | 
					DatabaseFactory::MySQLError DatabaseFactory::mysqlTestConnection(const QString &hostname, int port,
 | 
				
			||||||
                                                                 const QString &username, const QString &password) {
 | 
					                                                                 const QString &username, const QString &password) {
 | 
				
			||||||
  QSqlDatabase database = QSqlDatabase::addDatabase(APP_DB_DRIVER_MYSQL,
 | 
					  QSqlDatabase database = QSqlDatabase::addDatabase(APP_DB_MYSQL_DRIVER,
 | 
				
			||||||
                                                    APP_DB_TEST_MYSQL);
 | 
					                                                    APP_DB_MYSQL_TEST);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  database.setHostName(hostname);
 | 
					  database.setHostName(hostname);
 | 
				
			||||||
  database.setPort(port);
 | 
					  database.setPort(port);
 | 
				
			||||||
| 
						 | 
					@ -63,7 +63,7 @@ DatabaseFactory::MySQLError DatabaseFactory::mysqlTestConnection(const QString &
 | 
				
			||||||
  if (database.open()) {
 | 
					  if (database.open()) {
 | 
				
			||||||
    // Connection succeeded, clean up the mess and return OK status.
 | 
					    // Connection succeeded, clean up the mess and return OK status.
 | 
				
			||||||
    database.close();
 | 
					    database.close();
 | 
				
			||||||
    removeConnection(APP_DB_TEST_MYSQL);
 | 
					    removeConnection(APP_DB_MYSQL_TEST);
 | 
				
			||||||
    return MySQLOk;
 | 
					    return MySQLOk;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  else {
 | 
					  else {
 | 
				
			||||||
| 
						 | 
					@ -71,7 +71,7 @@ DatabaseFactory::MySQLError DatabaseFactory::mysqlTestConnection(const QString &
 | 
				
			||||||
    // error code.
 | 
					    // error code.
 | 
				
			||||||
    MySQLError error_code = static_cast<MySQLError>(database.lastError().number());
 | 
					    MySQLError error_code = static_cast<MySQLError>(database.lastError().number());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    removeConnection(APP_DB_TEST_MYSQL);
 | 
					    removeConnection(APP_DB_MYSQL_TEST);
 | 
				
			||||||
    return error_code;
 | 
					    return error_code;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -100,17 +100,17 @@ void DatabaseFactory::sqliteAssemblyDatabaseFilePath()  {
 | 
				
			||||||
  if (Settings::instance()->type() == Settings::Portable) {
 | 
					  if (Settings::instance()->type() == Settings::Portable) {
 | 
				
			||||||
    m_sqliteDatabaseFilePath = qApp->applicationDirPath() +
 | 
					    m_sqliteDatabaseFilePath = qApp->applicationDirPath() +
 | 
				
			||||||
                               QDir::separator() +
 | 
					                               QDir::separator() +
 | 
				
			||||||
                               QString(APP_DB_PATH);
 | 
					                               QString(APP_DB_SQLITE_PATH);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  else {
 | 
					  else {
 | 
				
			||||||
    m_sqliteDatabaseFilePath = QDir::homePath() + QDir::separator() +
 | 
					    m_sqliteDatabaseFilePath = QDir::homePath() + QDir::separator() +
 | 
				
			||||||
                               QString(APP_LOW_H_NAME) + QDir::separator() +
 | 
					                               QString(APP_LOW_H_NAME) + QDir::separator() +
 | 
				
			||||||
                               QString(APP_DB_PATH);
 | 
					                               QString(APP_DB_SQLITE_PATH);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
QSqlDatabase DatabaseFactory::sqliteInitializeInMemoryDatabase() {
 | 
					QSqlDatabase DatabaseFactory::sqliteInitializeInMemoryDatabase() {
 | 
				
			||||||
  QSqlDatabase database = QSqlDatabase::addDatabase(APP_DB_DRIVER_SQLITE);
 | 
					  QSqlDatabase database = QSqlDatabase::addDatabase(APP_DB_SQLITE_DRIVER);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  database.setDatabaseName(":memory:");
 | 
					  database.setDatabaseName(":memory:");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -136,16 +136,16 @@ QSqlDatabase DatabaseFactory::sqliteInitializeInMemoryDatabase() {
 | 
				
			||||||
    if (query_db.lastError().isValid()) {
 | 
					    if (query_db.lastError().isValid()) {
 | 
				
			||||||
      qWarning("Error occurred. In-memory SQLite database is not initialized. Initializing now.");
 | 
					      qWarning("Error occurred. In-memory SQLite database is not initialized. Initializing now.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      QFile file_init(APP_MISC_PATH + QDir::separator() + APP_DB_INIT_SQLITE_MEMORY);
 | 
					      QFile file_init(APP_MISC_PATH + QDir::separator() + APP_DB_SQLITE_MEMORY_INIT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (!file_init.open(QIODevice::ReadOnly | QIODevice::Text)) {
 | 
					      if (!file_init.open(QIODevice::ReadOnly | QIODevice::Text)) {
 | 
				
			||||||
        // Database initialization file not opened. HUGE problem.
 | 
					        // Database initialization file not opened. HUGE problem.
 | 
				
			||||||
        qFatal("In-memory SQLite database initialization file '%s' from directory '%s' was not found. In-memory database is uninitialized.",
 | 
					        qFatal("In-memory SQLite database initialization file '%s' from directory '%s' was not found. In-memory database is uninitialized.",
 | 
				
			||||||
               APP_DB_INIT_SQLITE,
 | 
					               APP_DB_SQLITE_INIT,
 | 
				
			||||||
               qPrintable(APP_MISC_PATH));
 | 
					               qPrintable(APP_MISC_PATH));
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      QStringList statements = QString(file_init.readAll()).split(APP_DB_INIT_SPLIT,
 | 
					      QStringList statements = QString(file_init.readAll()).split(APP_DB_COMMENT_SPLIT,
 | 
				
			||||||
                                                                  QString::SkipEmptyParts);
 | 
					                                                                  QString::SkipEmptyParts);
 | 
				
			||||||
      database.transaction();
 | 
					      database.transaction();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -154,7 +154,7 @@ QSqlDatabase DatabaseFactory::sqliteInitializeInMemoryDatabase() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (query_db.lastError().isValid()) {
 | 
					        if (query_db.lastError().isValid()) {
 | 
				
			||||||
          qFatal("In-memory SQLite database initialization failed. Initialization script '%s' is not correct.",
 | 
					          qFatal("In-memory SQLite database initialization failed. Initialization script '%s' is not correct.",
 | 
				
			||||||
                 APP_DB_INIT_SQLITE);
 | 
					                 APP_DB_SQLITE_INIT);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -200,7 +200,7 @@ QSqlDatabase DatabaseFactory::sqliteInitializeInMemoryDatabase() {
 | 
				
			||||||
QSqlDatabase DatabaseFactory::sqliteInitializeFileBasedDatabase(const QString &connection_name) {
 | 
					QSqlDatabase DatabaseFactory::sqliteInitializeFileBasedDatabase(const QString &connection_name) {
 | 
				
			||||||
  // Prepare file paths.
 | 
					  // Prepare file paths.
 | 
				
			||||||
  QDir db_path(m_sqliteDatabaseFilePath);
 | 
					  QDir db_path(m_sqliteDatabaseFilePath);
 | 
				
			||||||
  QFile db_file(db_path.absoluteFilePath(APP_DB_FILE));
 | 
					  QFile db_file(db_path.absoluteFilePath(APP_DB_SQLITE_FILE));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Check if database directory exists.
 | 
					  // Check if database directory exists.
 | 
				
			||||||
  if (!db_path.exists()) {
 | 
					  if (!db_path.exists()) {
 | 
				
			||||||
| 
						 | 
					@ -216,7 +216,7 @@ QSqlDatabase DatabaseFactory::sqliteInitializeFileBasedDatabase(const QString &c
 | 
				
			||||||
  // Folders are created. Create new QSQLDatabase object.
 | 
					  // Folders are created. Create new QSQLDatabase object.
 | 
				
			||||||
  QSqlDatabase database;
 | 
					  QSqlDatabase database;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  database = QSqlDatabase::addDatabase(APP_DB_DRIVER_SQLITE,
 | 
					  database = QSqlDatabase::addDatabase(APP_DB_SQLITE_DRIVER,
 | 
				
			||||||
                                       connection_name);
 | 
					                                       connection_name);
 | 
				
			||||||
  database.setDatabaseName(db_file.fileName());
 | 
					  database.setDatabaseName(db_file.fileName());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -242,16 +242,16 @@ QSqlDatabase DatabaseFactory::sqliteInitializeFileBasedDatabase(const QString &c
 | 
				
			||||||
    if (query_db.lastError().isValid()) {
 | 
					    if (query_db.lastError().isValid()) {
 | 
				
			||||||
      qWarning("Error occurred. File-based SQLite database is not initialized. Initializing now.");
 | 
					      qWarning("Error occurred. File-based SQLite database is not initialized. Initializing now.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      QFile file_init(APP_MISC_PATH + QDir::separator() + APP_DB_INIT_SQLITE);
 | 
					      QFile file_init(APP_MISC_PATH + QDir::separator() + APP_DB_SQLITE_INIT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (!file_init.open(QIODevice::ReadOnly | QIODevice::Text)) {
 | 
					      if (!file_init.open(QIODevice::ReadOnly | QIODevice::Text)) {
 | 
				
			||||||
        // Database initialization file not opened. HUGE problem.
 | 
					        // Database initialization file not opened. HUGE problem.
 | 
				
			||||||
        qFatal("SQLite database initialization file '%s' from directory '%s' was not found. File-based database is uninitialized.",
 | 
					        qFatal("SQLite database initialization file '%s' from directory '%s' was not found. File-based database is uninitialized.",
 | 
				
			||||||
               APP_DB_INIT_SQLITE,
 | 
					               APP_DB_SQLITE_INIT,
 | 
				
			||||||
               qPrintable(APP_MISC_PATH));
 | 
					               qPrintable(APP_MISC_PATH));
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      QStringList statements = QString(file_init.readAll()).split(APP_DB_INIT_SPLIT,
 | 
					      QStringList statements = QString(file_init.readAll()).split(APP_DB_COMMENT_SPLIT,
 | 
				
			||||||
                                                                  QString::SkipEmptyParts);
 | 
					                                                                  QString::SkipEmptyParts);
 | 
				
			||||||
      database.transaction();
 | 
					      database.transaction();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -260,7 +260,7 @@ QSqlDatabase DatabaseFactory::sqliteInitializeFileBasedDatabase(const QString &c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (query_db.lastError().isValid()) {
 | 
					        if (query_db.lastError().isValid()) {
 | 
				
			||||||
          qFatal("File-based SQLite database initialization failed. Initialization script '%s' is not correct.",
 | 
					          qFatal("File-based SQLite database initialization failed. Initialization script '%s' is not correct.",
 | 
				
			||||||
                 APP_DB_INIT_SQLITE);
 | 
					                 APP_DB_SQLITE_INIT);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -330,9 +330,12 @@ void DatabaseFactory::sqliteSaveMemoryDatabase() {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void DatabaseFactory::determineDriver() {
 | 
					void DatabaseFactory::determineDriver() {
 | 
				
			||||||
  QString db_driver = Settings::instance()->value(APP_CFG_DB, "database_driver", APP_DB_DRIVER_SQLITE).toString();
 | 
					  QString db_driver = Settings::instance()->value(APP_CFG_DB,
 | 
				
			||||||
 | 
					                                                  "database_driver",
 | 
				
			||||||
 | 
					                                                  APP_DB_SQLITE_DRIVER).toString();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (db_driver == APP_DB_DRIVER_MYSQL && QSqlDatabase::isDriverAvailable(APP_DB_DRIVER_MYSQL)) {
 | 
					  if (db_driver == APP_DB_MYSQL_DRIVER &&
 | 
				
			||||||
 | 
					      QSqlDatabase::isDriverAvailable(APP_DB_SQLITE_DRIVER)) {
 | 
				
			||||||
    // User wants to use MySQL and MySQL is actually available. Use it.
 | 
					    // User wants to use MySQL and MySQL is actually available. Use it.
 | 
				
			||||||
    m_activeDatabaseDriver = MYSQL;
 | 
					    m_activeDatabaseDriver = MYSQL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -377,7 +380,7 @@ QSqlDatabase DatabaseFactory::mysqlConnection(const QString &connection_name) {
 | 
				
			||||||
    else {
 | 
					    else {
 | 
				
			||||||
      // Database connection with this name does not exist
 | 
					      // Database connection with this name does not exist
 | 
				
			||||||
      // yet, add it and set it up.
 | 
					      // yet, add it and set it up.
 | 
				
			||||||
      database = QSqlDatabase::addDatabase(APP_DB_DRIVER_MYSQL, connection_name);
 | 
					      database = QSqlDatabase::addDatabase(APP_DB_MYSQL_DRIVER, connection_name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      database.setHostName(Settings::instance()->value(APP_CFG_DB, "mysql_hostname").toString());
 | 
					      database.setHostName(Settings::instance()->value(APP_CFG_DB, "mysql_hostname").toString());
 | 
				
			||||||
      database.setPort(Settings::instance()->value(APP_CFG_DB, "mysql_port", APP_DB_MYSQL_PORT).toInt());
 | 
					      database.setPort(Settings::instance()->value(APP_CFG_DB, "mysql_port", APP_DB_MYSQL_PORT).toInt());
 | 
				
			||||||
| 
						 | 
					@ -402,7 +405,7 @@ QSqlDatabase DatabaseFactory::mysqlConnection(const QString &connection_name) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
QSqlDatabase DatabaseFactory::mysqlInitializeDatabase(const QString &connection_name) {
 | 
					QSqlDatabase DatabaseFactory::mysqlInitializeDatabase(const QString &connection_name) {
 | 
				
			||||||
  // Folders are created. Create new QSQLDatabase object.
 | 
					  // Folders are created. Create new QSQLDatabase object.
 | 
				
			||||||
  QSqlDatabase database = QSqlDatabase::addDatabase(APP_DB_DRIVER_MYSQL,
 | 
					  QSqlDatabase database = QSqlDatabase::addDatabase(APP_DB_MYSQL_DRIVER,
 | 
				
			||||||
                                                    connection_name);
 | 
					                                                    connection_name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  database.setHostName(Settings::instance()->value(APP_CFG_DB, "mysql_hostname").toString());
 | 
					  database.setHostName(Settings::instance()->value(APP_CFG_DB, "mysql_hostname").toString());
 | 
				
			||||||
| 
						 | 
					@ -425,16 +428,16 @@ QSqlDatabase DatabaseFactory::mysqlInitializeDatabase(const QString &connection_
 | 
				
			||||||
      // or schema version is wrong, then initialize it.
 | 
					      // or schema version is wrong, then initialize it.
 | 
				
			||||||
      qWarning("Error occurred. MySQL database is not initialized. Initializing now.");
 | 
					      qWarning("Error occurred. MySQL database is not initialized. Initializing now.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      QFile file_init(APP_MISC_PATH + QDir::separator() + APP_DB_INIT_MYSQL);
 | 
					      QFile file_init(APP_MISC_PATH + QDir::separator() + APP_DB_MYSQL_INIT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (!file_init.open(QIODevice::ReadOnly | QIODevice::Text)) {
 | 
					      if (!file_init.open(QIODevice::ReadOnly | QIODevice::Text)) {
 | 
				
			||||||
        // Database initialization file not opened. HUGE problem.
 | 
					        // Database initialization file not opened. HUGE problem.
 | 
				
			||||||
        qFatal("MySQL database initialization file '%s' from directory '%s' was not found. File-based database is uninitialized.",
 | 
					        qFatal("MySQL database initialization file '%s' from directory '%s' was not found. File-based database is uninitialized.",
 | 
				
			||||||
               APP_DB_INIT_MYSQL,
 | 
					               APP_DB_MYSQL_INIT,
 | 
				
			||||||
               qPrintable(APP_MISC_PATH));
 | 
					               qPrintable(APP_MISC_PATH));
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      QStringList statements = QString(file_init.readAll()).split(APP_DB_INIT_SPLIT,
 | 
					      QStringList statements = QString(file_init.readAll()).split(APP_DB_COMMENT_SPLIT,
 | 
				
			||||||
                                                                  QString::SkipEmptyParts);
 | 
					                                                                  QString::SkipEmptyParts);
 | 
				
			||||||
      database.transaction();
 | 
					      database.transaction();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -443,7 +446,7 @@ QSqlDatabase DatabaseFactory::mysqlInitializeDatabase(const QString &connection_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (query_db.lastError().isValid()) {
 | 
					        if (query_db.lastError().isValid()) {
 | 
				
			||||||
          qFatal("MySQL database initialization failed. Initialization script '%s' is not correct.",
 | 
					          qFatal("MySQL database initialization failed. Initialization script '%s' is not correct.",
 | 
				
			||||||
                 APP_DB_INIT_MYSQL);
 | 
					                 APP_DB_MYSQL_INIT);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -513,10 +516,10 @@ QSqlDatabase DatabaseFactory::sqliteConnection(const QString &connection_name,
 | 
				
			||||||
      else {
 | 
					      else {
 | 
				
			||||||
        // Database connection with this name does not exist
 | 
					        // Database connection with this name does not exist
 | 
				
			||||||
        // yet, add it and set it up.
 | 
					        // yet, add it and set it up.
 | 
				
			||||||
        database = QSqlDatabase::addDatabase(APP_DB_DRIVER_SQLITE, connection_name);
 | 
					        database = QSqlDatabase::addDatabase(APP_DB_SQLITE_DRIVER, connection_name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        QDir db_path(m_sqliteDatabaseFilePath);
 | 
					        QDir db_path(m_sqliteDatabaseFilePath);
 | 
				
			||||||
        QFile db_file(db_path.absoluteFilePath(APP_DB_FILE));
 | 
					        QFile db_file(db_path.absoluteFilePath(APP_DB_SQLITE_FILE));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Setup database file path.
 | 
					        // Setup database file path.
 | 
				
			||||||
        database.setDatabaseName(db_file.fileName());
 | 
					        database.setDatabaseName(db_file.fileName());
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -41,6 +41,7 @@ class DatabaseFactory : public QObject {
 | 
				
			||||||
      FromSettings
 | 
					      FromSettings
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Describes possible MySQL-specific errors.
 | 
				
			||||||
    enum MySQLError {
 | 
					    enum MySQLError {
 | 
				
			||||||
      MySQLOk                 = 0,
 | 
					      MySQLOk                 = 0,
 | 
				
			||||||
      MySQLAccessDenied       = 1045,
 | 
					      MySQLAccessDenied       = 1045,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue