Opensim Control Panel BRIGADOON-0013
This program provides a control panel for an Open Simulator Instance
Loading...
Searching...
No Matches
databasemanager.cpp
Go to the documentation of this file.
1#include "databasemanager.h"
2#include <QSettings>
3#include <QSqlDatabase>
4#include <QStringList>
5
6
7DatabaseManager::DatabaseManager(Ui::MainWindow* UI_Window)
8{
9 // Save the Pointer to the Main Window & Pointer to Log
10 ui = UI_Window;
11
12 // Flag that there is no Current Database
13 is_database = false;
14 is_open = false;
15
16 // Load the Availalbe Database Drivers
17 LoadDatabaseDrivers(ui->DatabaseDriver);
18
19 // Load the Default Dataabse Parameters
21
22 // Define the Connections
23 QObject::connect(ui->ReconnectDatabase, SIGNAL(pressed()), this, SLOT(ReconnectDatabase()));
24 QObject::connect(ui->LoadDefaultDBParams, SIGNAL(pressed()), this, SLOT(LoadDefaultDBParameters()));
25}
26
28{
29 // Remove Database, if it Exists
31
32 // Save the Database Settings, If Required
33 if (ui->SaveDBParamsOnExit->isChecked())
34 {
35
36 QSettings settings;
37 settings.setValue( "Database/DatabaseName", ui->DatabaseName->text());
38 settings.setValue( "Database/DatabaseHost", ui->DatabaseHost->text());
39 settings.setValue( "Database/DatabaseUser", ui->DatabaseUsername->text());
40 settings.setValue( "Database/DatabasePassword", ui->DatabasePassword->text());
41 settings.setValue( "Database/DatabaseDriver", ui->DatabaseDriver->currentText());
42 }
43}
44
45void DatabaseManager::LoadDatabaseDrivers(QComboBox *DatabaseDriver)
46{
47 // Obtain the List of Available Drivers
48 QStringList driver_list = QSqlDatabase::drivers();
49 DatabaseDriver->addItems(driver_list);
50
51 LogAdd(LOG_DEBUG, MODE_DATABASE, QString("%1 Database Drivers identified.").arg(QString::number(driver_list.count())));
52}
53
55{
56 // Set the Default Database Type
57 QString database_driver_type = "QMARIADB";
58
59 // Load Log Setup Parameters
60 QSettings settings;
61 ui->DatabaseName->setText(settings.value( "Database/DatabaseName", "opensim").toString());
62 ui->DatabaseHost->setText(settings.value( "Database/DatabaseHost", "localhost").toString());
63 ui->DatabaseUsername->setText(settings.value( "Database/DatabaseUser", "mark" ).toString());
64 ui->DatabasePassword->setText(settings.value( "Database/DatabasePassword", "xg27QHUx%" ).toString());
65 ui->DatabaseDriver->setCurrentText(settings.value( "Database/DatabaseDriver", database_driver_type ).toString());
66
67
68
69 QString fake_password_string = "";
70 if (ui->DatabasePassword->text().length() != 0) fake_password_string = "*******";
71 LogAdd(LOG_DEBUG, MODE_DATABASE, QString("Default Database parameters loaded:- Database: %1, Host: %2, Driver: %3, User: %4, Password: %5")
72 .arg(ui->DatabaseName->text(), ui->DatabaseHost->text(), ui->DatabaseDriver->currentText(), ui->DatabaseUsername->text(), fake_password_string) );
73}
74
76{
77 QSqlDatabase db = QSqlDatabase::database();
78
79 if (is_open)
80 {
81 db.close();
82 is_open = CheckIfOpen(false);
83 }
84
85 // Give Up if there was no Database Existing
86 if (!is_database) return;
87
88 // Get the Name of the Current Database
89 QString database_connection = db.connectionName();
90 QSqlDatabase::removeDatabase(database_connection);
91
92 LogAdd(LOG_INFO, MODE_DATABASE, "Database has been removed.");
93}
95{
96 QSqlDatabase db = QSqlDatabase::addDatabase(ui->DatabaseDriver->currentText()); is_database = true;
97
98 // Pass the Parameters to the Database
99 db.setHostName(ui->DatabaseHost->text());
100 db.setDatabaseName(ui->DatabaseName->text());
101 db.setUserName(ui->DatabaseUsername->text());
102 db.setPassword(ui->DatabasePassword->text());
103
104 // Attempt to Open the Database
105 is_open = CheckIfOpen(db.open());
106 return(is_open);
107}
108
110{
111 // Remove an existing Database & Attempt to Open a New One
113 Open();
114}
115
116bool DatabaseManager::CheckIfOpen(bool DatabaseOpen)
117{
118 QString selected_image;
119
120 // Set the Database Open Graphic As Appropriate & Send a Log Message
121 if (DatabaseOpen)
122 {
123 selected_image = "Debug.png";
124 LogAdd(LOG_DEBUG, MODE_DATABASE, QString("Database %1 is OPEN.").arg(ui->DatabaseName->text()));
125 }
126 else
127 {
128 selected_image = "Alert.png";
129 LogAdd(LOG_WARNING, MODE_DATABASE, QString("Database %1 is NOT OPEN.").arg(ui->DatabaseName->text()));
130 }
131 QPixmap the_pixmap( QString(":/Resources/") + selected_image );
132 ui->DatabaseStatus->setPixmap(the_pixmap);
133
134 return(DatabaseOpen);
135}
136
137void DatabaseManager::LogAdd(LOGGING_SEVERITY Severity, LOGGING_MODE Mode, QString Message)
138{
139 REMOTE_LOG_ENTRY log_entry;
140 log_entry.Severity = Severity;
141 log_entry.Mode = Mode;
142 log_entry.Message = Message;
143 emit SendLogEntry(log_entry);
144}
145
void ReconnectDatabase(void)
Reconnect to the databse using the current parameters.
bool is_open
Flag to indicate if database is open.
Ui::MainWindow * ui
Pointer to the Main Window.
void LoadDatabaseDrivers(QComboBox *DriverList)
Load the know Database Drivers.
bool Open(void)
Open the Database witht selected parameters.
DatabaseManager(Ui::MainWindow *UI_Window)
Database Class Constructor.
void LoadDefaultDBParameters(void)
Load the default Database Paranmeters.
bool is_database
Flag to indicate if there is a database.
void RemoveDatabase(void)
Remove the current active database.
bool CheckIfOpen(bool IsOpen)
Set the Database Image based on IsOpenFlag.
void SendLogEntry(REMOTE_LOG_ENTRY LogEntry)
Send Log Entry via the Signal-Slot Method.
void LogAdd(LOGGING_SEVERITY Severity, LOGGING_MODE Mode, QString Message)
Send Message to the Log.
~DatabaseManager()
Database Manager Deconstructor.
Class Controlling the Database Creation.
LOGGING_SEVERITY
Log Severity allow the selection of logging events based on Severity.
Definition logger.h:48
@ LOG_INFO
Definition logger.h:55
@ LOG_WARNING
Definition logger.h:53
@ LOG_DEBUG
Definition logger.h:56
LOGGING_MODE
Log Severity allow the selection of logging events based on the mode.
Definition logger.h:21
@ MODE_DATABASE
Definition logger.h:35
Definition logger.h:60
LOGGING_MODE Mode
Definition logger.h:61
QString Message
Definition logger.h:63
LOGGING_SEVERITY Severity
Definition logger.h:62