#include "databaseutility.h"
+#include <QCryptographicHash>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
}
bool DatabaseUtility::openDatabase(){
- profilesDB = QSqlDatabase::addDatabase("QSQLITE");
- //QString path(QDir::home().path());
- //path.append(QDir::separator()).append("vicar.db.sqlite");
+ vicarDB = QSqlDatabase::addDatabase("QSQLITE");
+#if defined(Q_WS_MAEMO_5)
QString path("/home/user/vicar.db.sqlite");
+#elif defined(Q_WS_MAEMO_6)
+ QString path("/home/user/.local/share/data/QML/OfflineStorage/Databases/");
+ path.append(QCryptographicHash::hash("VICaR",QCryptographicHash::Md5).toHex()).append(".sqlite");
+#endif
path = QDir::toNativeSeparators(path);
qDebug()<< "Opening database at "<<path;
- profilesDB.setDatabaseName(path);
- return profilesDB.open();
+ vicarDB.setDatabaseName(path);
+ return vicarDB.open();
}
bool DatabaseUtility::deleteDatabase(){
closeDatabase();
- //QString path(QDir::home().path());
- //path.append(QDir::separator()).append("vicar.db.sqlite");
+#if defined(Q_WS_MAEMO_5)
QString path("/home/user/vicar.db.sqlite");
+#elif defined(Q_WS_MAEMO_6)
+ QString path("/home/user/.local/share/data/QML/OfflineStorage/Databases/");
+ path.append(QCryptographicHash::hash("VICaR",QCryptographicHash::Md5).toHex()).append(".sqlite");
+#endif
path = QDir::toNativeSeparators(path);
return QFile::remove(path);
}
void DatabaseUtility::closeDatabase(){
- if (profilesDB.isOpen()){
- profilesDB.close();
+ if (vicarDB.isOpen()){
+ vicarDB.close();
}
}
bool DatabaseUtility::tableExists(QString tableName){
bool exists = false;
- if (profilesDB.isOpen()){
- QStringList tablesList = profilesDB.tables();
+ if (vicarDB.isOpen()){
+ QStringList tablesList = vicarDB.tables();
exists = tablesList.contains(tableName,Qt::CaseInsensitive);
}
return exists;
}
-bool DatabaseUtility::createProfilesTable(){
- bool result = false;
- if (profilesDB.isOpen()){
+bool DatabaseUtility::prepareTables(){
+ bool result = true;
+ if (vicarDB.isOpen()){
QSqlQuery query;
- QString strQuery = "create table profiles"
+ QString strQuery = "create table if not exists profiles"
"(id integer primary key,"
"numberpattern varchar(20),"
"gatewaynumber varchar(30),"
"dtmfprefix varchar(20),"
"dtmfsuffix varchar(20)"
")";
+ if (!query.exec(strQuery)){
+ qDebug() << "Error creating profiles table";
+ result = false;
+ }
+
+ strQuery = "CREATE TABLE IF NOT EXISTS settings(setting TEXT UNIQUE, value TEXT)";
+ if (!query.exec(strQuery)){
+ qDebug() << "Error creating settings table";
+ result = false;
+ }
+ }
+ return result;
+}
+
+QString DatabaseUtility::getSetting(QString setting){
+ QString value = "Unknown";
+ if (vicarDB.isOpen()){
+ QString strQuery = QString("'SELECT value FROM settings WHERE setting='%1'").arg(setting);
+ qDebug() << "SQL>"<<strQuery;
+ QSqlQuery query(strQuery);
+ if (query.next()){
+ value = query.value(0).toString();
+ }
+ }
+ return value;
+}
+
+bool DatabaseUtility::setSetting(QString setting, QString value){
+ bool result = false;
+ if (vicarDB.isOpen()){
+ QSqlQuery query;
+ QString strQuery = QString("INSERT OR REPLACE INTO settings VALUES ('%1','%2')")
+ .arg(setting).arg(value);
+ qDebug() << "SQL>"<<strQuery;
result = query.exec(strQuery);
}
return result;
bool DatabaseUtility::selectProfile(int id,org::maemo::vicar::Profile* profile){
bool result = false;
- if (profilesDB.isOpen()){
+ if (vicarDB.isOpen()){
QString strQuery = QString("select * from profiles where id = %1").arg(id);
qDebug() << "SQL>"<<strQuery;
QSqlQuery query(strQuery);
bool DatabaseUtility::getAllProfiles(org::maemo::vicar::ProfileList* profileList){
bool result = false;
- if (profilesDB.isOpen()){
+ if (vicarDB.isOpen()){
QString strQuery = QString("select * from profiles order by id");
qDebug() << "SQL>"<<strQuery;
QSqlQuery query(strQuery);
bool DatabaseUtility::findProfileByNumber(QString number,org::maemo::vicar::Profile* profile){
bool result = false;
- if (profilesDB.isOpen()){
+ if (vicarDB.isOpen()){
QString strQuery = QString("select * from profiles where '%1' like numberpattern||'%' order by length(numberpattern) desc")
.arg(number);
qDebug() << "SQL>"<<strQuery;
bool DatabaseUtility::getDefaultProfile(org::maemo::vicar::Profile *profile){
bool result = false;
- if (profilesDB.isOpen()){
+ if (vicarDB.isOpen()){
QString strQuery = QString("select * from profiles where numberpattern = '%' order by id");
qDebug() << "SQL>"<<strQuery;
QSqlQuery query(strQuery);
int DatabaseUtility::insertProfile(org::maemo::vicar::Profile profile){
int newId = -1;
bool result = false;
- if (profilesDB.isOpen()){
+ if (vicarDB.isOpen()){
bool continueInsert = true;
if (!this->tableExists("profiles")){
- continueInsert = this->createProfilesTable();
+ continueInsert = this->prepareTables();
}
if (continueInsert)
bool DatabaseUtility::updateProfile(org::maemo::vicar::Profile profile){
bool result = false;
- if (profilesDB.isOpen()){
+ if (vicarDB.isOpen()){
QSqlQuery query;
QString strQuery = QString("update profiles set numberpattern = '%1', "
"gatewaynumber = '%2', dtmfformat = '%3', "
bool DatabaseUtility::deleteProfile(int id){
bool result = false;
- if (profilesDB.isOpen()){
+ if (vicarDB.isOpen()){
QSqlQuery query;
QString strQuery = QString("delete from profiles where id=%1").arg(id);
qDebug() << "SQL>"<<strQuery;
}
QSqlError DatabaseUtility::lastError(){
- return profilesDB.lastError();
+ return vicarDB.lastError();
}