klog/dataproxy_sqlite.cpp
2017-05-01 08:14:16 +00:00

3004 lines
90 KiB
C++

/***************************************************************************
dataproxy_sqlite.cpp - description
-------------------
begin : sept 2014
copyright : (C) 2014 by Jaime Robles
email : jaime@robles.es
***************************************************************************/
/*****************************************************************************
* This file is part of KLog. *
* *
* KLog is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* KLog is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with KLog. If not, see <http://www.gnu.org/licenses/>. *
* *
*****************************************************************************/
#include "dataproxy_sqlite.h"
//#include <QDebug>
DataProxy_SQLite::DataProxy_SQLite()
{
//qDebug() << "DataProxy_SQLite::DataProxy_SQLite" << endl;
db = new DataBase(0);
//qDebug() << "DataProxy_SQLite::DataProxy_SQLite 1" << endl;
dbCreated = db->createConnection();
dbCreated = db->createBandModeMaps();
//qDebug() << "DataProxy_SQLite::DataProxy_SQLite - END" << endl;
}
DataProxy_SQLite::~DataProxy_SQLite(){
//qDebug() << "DataProxy_SQLite::~DataProxy_SQLite" << endl;
}
void DataProxy_SQLite::createLogModel(){
//qDebug() << "DataProxy_SQLite::createLogModel" << endl;
}
void DataProxy_SQLite::createLogPanel(){
//qDebug() << "DataProxy_SQLite::createLogPanel" << endl;
}
int DataProxy_SQLite::getIdFromModeName(const QString& _modeName)
{
//qDebug() << "DataProxy_SQLite::getIdFromModeName: " << _modeName << "/" << QString::number(db->getModeIDFromName2(_modeName)) << endl;
if (_modeName.length()<2)
{
return -3;
}
return db->getModeIDFromName2(_modeName);
}
int DataProxy_SQLite::getSubModeIdFromSubMode(const QString _subModeName)
{
if (_subModeName.length()<2)
{
return -3;
}
QSqlQuery query;
QString stQuery = QString("SELECT id FROM mode WHERE submode='%1'").arg(_subModeName);
if (query.exec(stQuery))
{
query.next();
if (query.isValid())
{
return (query.value(0)).toInt();
}
else
{
return -1;
}
}
else
{
return -2;
}
}
int DataProxy_SQLite::getModeIdFromSubModeId(const int _sm)
{
return getIdFromModeName(getModeFromSubMode(getSubModeFromId(_sm)));
}
QString DataProxy_SQLite::getModeFromSubMode (const QString _sm)
{
//qDebug() << "DataProxy_SQLite::getModeFromSubMode: " << _sm << endl;
if (_sm.length()<2)
{
return "";
}
QSqlQuery query;
QString stQuery = QString("SELECT name FROM mode WHERE submode='%1'").arg(_sm);
if (query.exec(stQuery))
{
query.next();
if (query.isValid())
{
//qDebug() << "DataProxy_SQLite::getModeFromSubMode: Query OK" << endl;
return (query.value(0)).toString();
}
else
{
//qDebug() << "DataProxy_SQLite::getModeFromSubMode: Query error" << endl;
return "";
}
}
else
{
return "";
}
}
bool DataProxy_SQLite::isModeDeprecated (const QString _sm)
{
if (_sm.length()<2)
{
return -3;
}
QSqlQuery query;
QString stQuery = QString("SELECT deprecated FROM mode WHERE submode='%1'").arg(_sm);
if (query.exec(stQuery))
{
query.next();
if (query.isValid())
{
if ( (query.value(0)).toInt() == 1 )
{
return true;
}
else
{
return false;
}
}
else
{
return false; // In case we can't check, we don't state it as deprecated
}
}
else
{
return false; // In case we can't check, we don't state it as deprecated
}
}
int DataProxy_SQLite::getIdFromBandName(const QString& _bandName)
{
//qDebug() << "DataProxy_SQLite::getIdFromBandName: " << _bandName << "/" << QString::number(db->getBandIDFromName2(_bandName))<< endl;
if (_bandName.length()<1)
{
return -3;
}
return db->getBandIDFromName2(_bandName);
}
QString DataProxy_SQLite::getNameFromBandId (const int _id)
{
//qDebug() << "DataProxy_SQLite::getNameFromBandId " << endl;
return db->getBandNameFromID2(_id);
}
QString DataProxy_SQLite::getNameFromModeId (const int _id)
{
//qDebug() << "DataProxy_SQLite::getNameFromModeId" << endl;
//return db->getSubModeNameFromNumber(_id);
return db->getModeNameFromID2(_id);
}
QString DataProxy_SQLite::getNameFromSubModeId (const int _id)
{
//qDebug() << "DataProxy_SQLite::getNameFromSubModeId: " << QString::number(_id) << endl;
return db->getModeNameFromID2(_id);
QSqlQuery query;
QString stringQuery = QString("SELECT submode, name, deprecated FROM mode WHERE id='%1'").arg(_id);
query.exec(stringQuery);
query.next();
if (query.isValid())
{
if ( (query.value(2)).toInt()<0 )
{ // DEPRECATED VALUE, return the MODE
return (query.value(1)).toString();
}
else
{
return (query.value(0)).toString();
}
}
else
{
return "";
}
}
QString DataProxy_SQLite::getSubModeFromId (const int _id)
{
//qDebug() << "DataProxy_SQLite::getSubModeFromId: " << QString::number(_id) << endl;
QSqlQuery query;
QString stringQuery = QString("SELECT submode FROM mode WHERE id='%1'").arg(_id);
query.exec(stringQuery);
query.next();
if (query.isValid())
{
return (query.value(0)).toString();
}
else
{
return "";
}
return "";
}
QString DataProxy_SQLite::getNameFromSubMode (const QString _sm)
{
QSqlQuery query;
QString stringQuery = QString("SELECT name, deprecated FROM mode WHERE submode='%1'").arg(_sm.toUpper());
query.exec(stringQuery);
query.next();
if (query.isValid())
{
if ( (query.value(1)).toInt()<0 )
{ // DEPRECATED VALUE, return the MODE
return (query.value(0)).toString();
}
else
{
return _sm.toUpper();
}
}
else
{
return "";
}
return "";
}
QString DataProxy_SQLite::getFreqFromBandId(const int _id)
{
return db->getFreqFromBandId(_id);
}
int DataProxy_SQLite::getBandIdFromFreq(const double _n)
{
//qDebug() << "DataProxy_SQLite::getBandIdFromFreq: " << fr << endl;
//Freq should be in MHz
bool sqlOk = false;
QString queryString = QString("SELECT id FROM band WHERE lower <= '%1' and upper >= '%2'").arg(_n).arg(_n);
QSqlQuery query(queryString);
sqlOk = query.exec();
//qDebug() << "DataProxy_SQLite::getBandIdFromFreq: Query: " << query.lastQuery() << endl;
if (sqlOk)
{
//qDebug() << "DataProxy_SQLite::getBandIdFromFreq: Query OK" << endl;
query.next();
if (query.isValid())
{
return (query.value(0)).toInt();
}
else
{
return -1;
}
}
else
{
//qDebug() << "DataProxy_SQLite::getBandIdFromFreq: Query NOK" << endl;
return -1;
}
return -1;
}
double DataProxy_SQLite::getLowLimitBandFromBandName(const QString _sm)
{
//qDebug() << "DataProxy_SQLite::getLowLimitBandFromBandName" << endl;
QSqlQuery query;
QString stringQuery = QString("SELECT lower FROM band WHERE name='%1'").arg(_sm.toUpper());
query.exec(stringQuery);
query.next();
if (query.isValid())
{
if ( (query.value(1)).toDouble()<0 )
{
//qDebug() << "DataProxy_SQLite::getLowLimitBandFromBandName: -1.0-1" << endl;
return -1.0;
}
else
{
//qDebug() << "DataProxy_SQLite::getLowLimitBandFromBandName: " << QString::number((query.value(0)).toDouble()) << endl;
return (query.value(0)).toDouble();
}
}
else
{
//qDebug() << "DataProxy_SQLite::getLowLimitBandFromBandName: -1.0-2" << endl;
return -1.0;
}
//qDebug() << "DataProxy_SQLite::getLowLimitBandFromBandName: -1.0-3" << endl;
return -1.0;
}
double DataProxy_SQLite::getLowLimitBandFromBandId(const QString _sm)
{
//qDebug() << "DataProxy_SQLite::getLowLimitBandFromBandId" << endl;
QSqlQuery query;
QString stringQuery = QString("SELECT lower FROM band WHERE id='%1'").arg(_sm.toUpper());
query.exec(stringQuery);
query.next();
if (query.isValid())
{
if ( (query.value(1)).toDouble()<0 )
{
//qDebug() << "DataProxy_SQLite::getLowLimitBandFromBandId: -1.0-1" << endl;
return -1.0;
}
else
{
//qDebug() << "DataProxy_SQLite::getLowLimitBandFromBandId: " << QString::number((query.value(0)).toDouble()) << endl;
return (query.value(0)).toDouble();
}
}
else
{
//qDebug() << "DataProxy_SQLite::getLowLimitBandFromBandId: -1.0-2" << endl;
return -1.0;
}
//qDebug() << "DataProxy_SQLite::getLowLimitBandFromBandId: -1.0-3" << endl;
return -1.0;
}
QStringList DataProxy_SQLite::getBands()
{
//qDebug() << "DataProxy_SQLite::getBands - DEPRECATED please use getBandNames - TODO: Remove this function and change the calls" << endl;
return getBandNames();
/*
QStringList bands = QStringList();
QSqlQuery query("SELECT name FROM band");
while (query.next()) {
if (query.isValid()){
bands << query.value(0).toString();
}
}
//return bands;
return sortBandNamesBottonUp(bands);
*/
}
QStringList DataProxy_SQLite::getBandNames()
{
//qDebug() << "DataProxy_SQLite::getBandNames" << endl;
QStringList bands = QStringList();
QSqlQuery query;
QString stringQuery;
bool sqlOK;
stringQuery = QString("SELECT DISTINCT name from band");
sqlOK = query.exec(stringQuery);
if (sqlOK)
{
while(query.next())
{
if (query.isValid())
{
stringQuery = (query.value(0)).toString();
bands.append(stringQuery);
}
else
{
return QStringList();
}
}
return sortBandNamesBottonUp(bands);
//return bands;
}
else
{
return QStringList();
}
}
QStringList DataProxy_SQLite::getModes()
{
QStringList modes = QStringList();
QSqlQuery query("SELECT submode FROM mode");
while (query.next()) {
if (query.isValid()){
modes << query.value(0).toString();
}
}
return modes;
}
QStringList DataProxy_SQLite::sortBandNamesBottonUp(const QStringList _qs)
{
//Receives a list of band names, sorts it from the lower band to the upper band and returns
//qDebug() << "DataProxy_SQLite::sortBandNamesBottonUp" << endl;
//Next lines to be commented out
for (int i=0; i<_qs.length();i++)
{
//qDebug() << "DataProxy_SQLite::sortBandNamesBottonUp - band: " << _qs.at(i) << endl;
}
//Previous lines to be commented out
QMap<double, QString> map;
QStringList qs;
qs.clear();
for (int j=0; j<_qs.count(); j++)
{
map.insert(getLowLimitBandFromBandName(_qs.at(j)), _qs.at(j));
}
QMap<double, QString>::const_iterator i = map.constBegin();
while (i != map.constEnd()) {
qs << i.value();
++i;
}
//qDebug() << "DataProxy_SQLite::sortBandNamesBottonUp - END -lengh = " << QString::number(qs.length()) << endl;
//qs.removeDuplicates();
return qs;
}
QStringList DataProxy_SQLite::getBandIDs()
{
//qDebug() << "DataProxy_SQLite::getBandIDs" << endl;
QStringList bands = QStringList();
QSqlQuery query("SELECT id FROM band");
while (query.next()) {
if (query.isValid()){
bands << query.value(0).toString();
}
}
return sortBandIdBottonUp(bands);
}
QStringList DataProxy_SQLite::sortBandIdBottonUp(const QStringList _qs)
{
//Receives a list of band id, sorts it from the lower band to the upper band and returns
QMap<double, QString> map;
QStringList qs;
qs.clear();
for (int j=0; j<_qs.count(); j++)
{
map.insert(getLowLimitBandFromBandId(_qs.at(j)), _qs.at(j));
}
QMap<double, QString>::const_iterator i = map.constBegin();
while (i != map.constEnd()) {
qs << i.value();
++i;
}
return qs;
}
QStringList DataProxy_SQLite::getModesIDs()
{
QStringList modes = QStringList();
QSqlQuery query("SELECT id FROM mode");
while (query.next()) {
if (query.isValid()){
modes << query.value(0).toString();
}
}
return modes;
}
QStringList DataProxy_SQLite::getBandsInLog(const int _log)
{
//qDebug() << "DataProxy_SQLite::getBandsInLog: " << endl;
QStringList bands = QStringList();
QString stringQuery = QString();
if (_log <= 0)
{
stringQuery = QString("SELECT DISTINCT band.name FROM log, band WHERE band.id = log.bandid ORDER BY band.id DESC");
}
else
{
stringQuery = QString("SELECT DISTINCT band.name FROM log, band WHERE band.id = log.bandid AND log.lognumber='%1' ORDER BY band.id DESC").arg(_log);
}
QSqlQuery query(stringQuery);
while (query.next()) {
if (query.isValid()){
bands << query.value(0).toString();
}
}
return sortBandNamesBottonUp(bands);
//return bands;
}
QStringList DataProxy_SQLite::getModesInLog(const int _log)
{
//qDebug() << "DataProxy_SQLite::getModesInLog: " << endl;
QStringList modes = QStringList();
QString stringQuery = QString();
if (_log <=0 )
{
stringQuery = QString("SELECT mode.id, mode.submode, COUNT (mode.submode) FROM log, mode WHERE mode.id = log.modeid GROUP BY mode.submode ORDER BY count (mode.submode) DESC");
}
else
{
stringQuery = QString("SELECT mode.id, mode.submode, COUNT (mode.submode) FROM log, mode WHERE mode.id = log.modeid AND log.lognumber='%1' GROUP BY mode.submode ORDER BY count (mode.submode) DESC").arg(_log);
}
QSqlQuery query(stringQuery);
while (query.next()) {
if (query.isValid()){
modes << query.value(1).toString();
}
}
//qDebug() << "DataProxy_SQLite::getModesInLog: " << modes.join(" - ") << endl;
return modes;
}
int DataProxy_SQLite::getLastQSOid()
{
//qDebug() << "DataProxy_SQLite::getLastQSOid" << endl;
QSqlQuery query;
if (query.exec("SELECT MAX(id) from log"))
{
query.next();
if (query.isValid())
{
return (query.value(0)).toInt();
}
else
{
return -1;
}
}
else
{
return -1;
}
}
bool DataProxy_SQLite::clearLog()
{
//qDebug() << "DataProxy_SQLite::clearLog" << endl;
int errorCode = 0;
QSqlQuery query;
if (query.exec("DELETE FROM log"))
{
//qDebug() << "DataProxy_SQLite::clearLog: Log deleted!" << endl;
}
else
{
//qDebug() << "DataProxy_SQLite::clearLog: Log deleted FAILED" << endl;
errorCode = query.lastError().number();
//qDebug() << "DataProxy_SQLite::clearLog - query error: " << QString::number(errorCode) << endl;
//qDebug() << "DataProxy_SQLite::clearLog: LastQuery: " << query.lastQuery() << endl;
//qDebug() << "DataProxy_SQLite::clearLog: LastError-data: " << query.lastError().databaseText() << endl;
//qDebug() << "DataProxy_SQLite::clearLog: LastError-driver: " << query.lastError().driverText() << endl;
//qDebug() << "DataProxy_SQLite::clearLog: LastError-n: " << QString::number(query.lastError().number() ) << endl;
}
if (query.exec("DELETE FROM awarddxcc"))
{
//qDebug() << "DataProxy_SQLite::clearLog: Awarddxcc deleted!" << endl;
}
else
{
//qDebug() << "DataProxy_SQLite::clearLog: Awarddxcc deletedFAILED" << endl;
errorCode = query.lastError().number();
//qDebug() << "DataProxy_SQLite::clearLog - query error: " << QString::number(errorCode) << endl;
//qDebug() << "DataProxy_SQLite::clearLog: LastQuery: " << query.lastQuery() << endl;
//qDebug() << "DataProxy_SQLite::clearLog: LastError-data: " << query.lastError().databaseText() << endl;
//qDebug() << "DataProxy_SQLite::clearLog: LastError-driver: " << query.lastError().driverText() << endl;
//qDebug() << "DataProxy_SQLite::clearLog: LastError-n: " << QString::number(query.lastError().number() ) << endl;
}
if (query.exec("DELETE FROM awardwaz"))
{
//qDebug() << "DataProxy_SQLite::clearLog: Awardwaz deleted!" << endl;
}
else
{
//qDebug() << "DataProxy_SQLite::clearLog: Awardwaz deleted FAILED" << endl;
errorCode = query.lastError().number();
//qDebug() << "DataProxy_SQLite::clearLog - query error: " << QString::number(errorCode) << endl;
//qDebug() << "DataProxy_SQLite::clearLog: LastQuery: " << query.lastQuery() << endl;
//qDebug() << "DataProxy_SQLite::clearLog: LastError-data: " << query.lastError().databaseText() << endl;
//qDebug() << "DataProxy_SQLite::clearLog: LastError-driver: " << query.lastError().driverText() << endl;
//qDebug() << "DataProxy_SQLite::clearLog: LastError-n: " << QString::number(query.lastError().number() ) << endl;
}
query.finish();
//query.clear();
if (query.isActive())
{
//qDebug() << "DataProxy_SQLite::clearLog: Query Active!" << endl;
return false;
}
else
{
query.prepare("VACUUM;");
//qDebug() << "DataProxy_SQLite::clearLog: Query Not Active!" << endl;
if (query.exec())
{
//qDebug() << "DataProxy_SQLite::clearLog: VACUUM OK!" << endl;
return true;
}
else
{
//qDebug() << "DataProxy_SQLite::clearLog: VACUUM FAILED" << endl;
errorCode = query.lastError().number();
//qDebug() << "DataProxy_SQLite::clearLog - query error: " << QString::number(errorCode) << endl;
//qDebug() << "DataProxy_SQLite::clearLog: LastQuery: " << query.lastQuery() << endl;
//qDebug() << "DataProxy_SQLite::clearLog: LastError-data: " << query.lastError().databaseText() << endl;
//qDebug() << "DataProxy_SQLite::clearLog: LastError-driver: " << query.lastError().driverText() << endl;
//qDebug() << "DataProxy_SQLite::clearLog: LastError-n: " << QString::number(query.lastError().number() ) << endl;
}
}
return false;
}
bool DataProxy_SQLite::qslSentViaDirect(const int _qsoId, const QString _updateDate)
{
//qDebug() << "DataProxy_SQLite::qslSentViaDirect" << endl;
QSqlQuery query;
QString stringQuery;
stringQuery = QString("UPDATE log SET qsl_sent = 'Y', qsl_sent_via = 'D', qslsdate = '%1' WHERE id = '%2'").arg(_updateDate).arg(_qsoId);
//QDebug() << "DataProxy_SQLite::qslSentViaDirect: " << stringQuery << endl;
if (query.exec(stringQuery))
{
return true;
}
return false;
}
bool DataProxy_SQLite::qslSentViaBureau(const int _qsoId, const QString _updateDate)
{
//qDebug() << "DataProxy_SQLite::qslSentViaBureau" << endl;
QSqlQuery query;
QString stringQuery;
stringQuery = QString("UPDATE log SET qsl_sent = 'Y', qsl_sent_via = 'B', qslsdate = '%1' WHERE id = '%2'").arg(_updateDate).arg(_qsoId);
if (query.exec(stringQuery))
{
return true;
}
return false;
}
bool DataProxy_SQLite::qslRecViaBureau(const int _qsoId, const QString _updateDate)
{
//qDebug() << "DataProxy_SQLite::" << QString::number (_qsoId) << "/" << _updateDate << endl;
QSqlQuery query;
QString stringQuery;
stringQuery = QString("UPDATE log SET qsl_rcvd = 'Y', qsl_rcvd_via = 'B', qslrdate = '%1' WHERE id = '%2'").arg(_updateDate).arg(_qsoId);
if (query.exec(stringQuery))
{
//qDebug() << "DataProxy_SQLite:: TRUE" << endl;
return true;
}
//qDebug() << "DataProxy_SQLite:: FALSE" << endl;
return false;
}
bool DataProxy_SQLite::qslRecViaBureau(const int _qsoId, const QString _updateDate, const bool _queueSentQSL)
{
//qDebug() << "DataProxy_SQLite::qslRecViaBureau: " << _updateDate << endl;
QSqlQuery query;
QString stringQuery;
bool requestQSL = false;
if (_queueSentQSL)
{
stringQuery = QString("SELECT qsl_sent FROM log WHERE id = '%1'").arg(_qsoId);
if(query.exec(stringQuery))
{
query.next();
if (query.isValid())
{
stringQuery = (query.value(0)).toString();
if ((stringQuery == "Y") || (stringQuery == "R"))
{
// NO ACTION REQUIRED, QSL IS ALREADY SENT
//qDebug() << "DataProxy_SQLite::qslRecViaBureau: QSL already requested" << endl;
requestQSL = false;
stringQuery = QString("UPDATE log SET qsl_rcvd = 'Y', qsl_rcvd_via = 'B', qslrdate = '%1' WHERE id = '%2'").arg(_updateDate).arg(_qsoId);
}
else
{
//qDebug() << "DataProxy_SQLite::qslRecViaBureau: Request QSL-1" << endl;
requestQSL = true;
stringQuery = QString("UPDATE log SET qsl_rcvd = 'Y', qsl_rcvd_via = 'B', qsl_sent='R', qslrdate = '%1' WHERE id = '%2'").arg(_updateDate).arg(_qsoId);
}
}
else
{
//qDebug() << "DataProxy_SQLite::qslRecViaBureau: Request QSL-2" << endl;
stringQuery = QString("UPDATE log SET qsl_rcvd = 'Y', qsl_rcvd_via = 'B', qsl_sent='R', qslrdate = '%1' WHERE id = '%2'").arg(_updateDate).arg(_qsoId);
requestQSL = true;
}
}
else
{
//qDebug() << "DataProxy_SQLite::qslRecViaBureau: Request QSL-3" << endl;
stringQuery = QString("UPDATE log SET qsl_rcvd = 'Y', qsl_rcvd_via = 'B', qsl_sent='R', qslrdate = '%1' WHERE id = '%2'").arg(_updateDate).arg(_qsoId);
requestQSL = true;
}
}
else
{
requestQSL = false;
stringQuery = QString("UPDATE log SET qsl_rcvd = 'Y', qsl_rcvd_via = 'B', qslrdate = '%1' WHERE id = '%2'").arg(_updateDate).arg(_qsoId);
}
//stringQuery = QString("UPDATE log SET qsl_rcvd = 'Y', qsl_rcvd_via = 'B', qslrdate = '%1' WHERE id = '%2'").arg(_updateDate).arg(_qsoId);
if (query.exec(stringQuery))
{
//qDebug() << "DataProxy_SQLite::qslRecViaBureau TRUE" << endl;
return true;
}
//qDebug() << "DataProxy_SQLite::qslRecViaBureau FALSE" << endl;
return false;
}
bool DataProxy_SQLite::qslRecViaDirect(const int _qsoId, const QString _updateDate)
{
//qDebug() << "DataProxy_SQLite::qslRecViaDirect" << endl;
QSqlQuery query;
QString stringQuery;
stringQuery = QString("UPDATE log SET qsl_rcvd = 'Y', qsl_rcvd_via = 'D', qslrdate = '%1' WHERE id = '%2'").arg(_updateDate).arg(_qsoId);
if (query.exec(stringQuery))
{
return true;
}
return false;
}
bool DataProxy_SQLite::qslRecViaDirect(const int _qsoId, const QString _updateDate, const bool _queueSentQSL)
{
//qDebug() << "DataProxy_SQLite::qslRecViaDirect: " << _updateDate << endl;
QSqlQuery query;
QString stringQuery;
if (_queueSentQSL)
{
stringQuery = QString("SELECT qsl_sent FROM log WHERE id = '%1'").arg(_qsoId);
if(query.exec(stringQuery))
{
query.next();
if (query.isValid())
{
stringQuery = (query.value(0)).toString();
if ((stringQuery == "Y") || (stringQuery == "R"))
{
// NO ACTION REQUIRED, QSL IS ALREADY SENT
//qDebug() << "DataProxy_SQLite::qslRecViaDirect: QSL already requested" << endl;
stringQuery = QString("UPDATE log SET qsl_rcvd = 'Y', qsl_rcvd_via = 'D', qslrdate = '%1' WHERE id = '%2'").arg(_updateDate).arg(_qsoId);
}
else
{
//qDebug() << "DataProxy_SQLite::qslRecViaDirect: Request QSL-1" << endl;
stringQuery = QString("UPDATE log SET qsl_rcvd = 'Y', qsl_rcvd_via = 'D', qsl_sent='R', qslrdate = '%1' WHERE id = '%2'").arg(_updateDate).arg(_qsoId);
}
}
else
{
//qDebug() << "DataProxy_SQLite::qslRecViaDirect: Request QSL-2" << endl;
stringQuery = QString("UPDATE log SET qsl_rcvd = 'Y', qsl_rcvd_via = 'D', qsl_sent='R', qslrdate = '%1' WHERE id = '%2'").arg(_updateDate).arg(_qsoId);
}
}
else
{
//qDebug() << "DataProxy_SQLite::qslRecViaDirect: Request QSL-3" << endl;
stringQuery = QString("UPDATE log SET qsl_rcvd = 'Y', qsl_rcvd_via = 'D', qsl_sent='R', qslrdate = '%1' WHERE id = '%2'").arg(_updateDate).arg(_qsoId);
}
}
else
{
stringQuery = QString("UPDATE log SET qsl_rcvd = 'Y', qsl_rcvd_via = 'D', qslrdate = '%1' WHERE id = '%2'").arg(_updateDate).arg(_qsoId);
}
if (query.exec(stringQuery))
{
//qDebug() << "DataProxy_SQLite::qslRecViaDirect TRUE" << endl;
return true;
}
//qDebug() << "DataProxy_SQLite::qslRecViaDirect FALSE" << endl;
return false;
}
bool DataProxy_SQLite::qslSentAsRequested(const int _qsoId, const QString _updateDate)
{
//TODO: Add some protection to the data before modifying
//qDebug() << "DataProxy_SQLite::qslSentAsRequested" << endl;
QSqlQuery query;
QString stringQuery;
stringQuery = QString("UPDATE log SET qsl_sent = 'R', qslsdate = '%1' WHERE id = '%2'").arg(_updateDate).arg(_qsoId);
//qDebug() << "DataProxy_SQLite::qslSentAsRequested: " << stringQuery << endl;
if (query.exec(stringQuery))
{
//qDebug() << "DataProxy_SQLite::qslSentAsRequested" << endl;
return true;
}
return false;
}
bool DataProxy_SQLite::qslRecAsRequested(const int _qsoId, const QString _updateDate)
{
//TODO: Add some protection to the data before modifying
//qDebug() << "DataProxy_SQLite::qslRecAsRequested" << endl;
QSqlQuery query;
QString stringQuery;
stringQuery = QString("UPDATE log SET qsl_rcvd = 'R', qslsdate = '%1' WHERE id = '%2'").arg(_updateDate).arg(_qsoId);
//qDebug() << "DataProxy_SQLite::qslRecAsRequested: " << stringQuery << endl;
if (query.exec(stringQuery))
{
//qDebug() << "DataProxy_SQLite::qslRecAsRequested" << endl;
return true;
}
return false;
}
bool DataProxy_SQLite::setClubLogSent(const int _qsoId, const QString _st, const QString _updateDate)
{ // Updates the QSO with the ClubLog status & date
QSqlQuery query;
QString stringQuery;
stringQuery = QString("UPDATE log SET clublog_qso_upload_status = '%1', clublog_qso_upload_date = '%2' WHERE id = '%3'").arg(_st).arg(_updateDate).arg(_qsoId);
//qDebug() << "DataProxy_SQLite::setClubLogSent: " << stringQuery << endl;
if (query.exec(stringQuery))
{
//qDebug() << "DataProxy_SQLite::setClubLogSent - TRUE" << endl;
return true;
}
//qDebug() << "DataProxy_SQLite::setClubLogSent - FALSE" << endl;
return false;
}
bool DataProxy_SQLite::isQSLReceived(const int _qsoId)
{
//qDebug() << "DataProxy_SQLite::isQSLReceived" << QString::number(_qsoId) << endl;
QSqlQuery query;
QString stringQuery;
stringQuery = QString("SELECT qsl_rcvd FROM log WHERE id = '%1'").arg(_qsoId);
query.exec(stringQuery);
query.next();
if (query.isValid())
{
stringQuery = (query.value(0)).toString();
if (stringQuery == "Y")
{
//qDebug() << "DataProxy_SQLitew::isQSLReceived: " << QString::number(_qsoId) << "QSL Received" << endl;
return true;
}
else
{
//qDebug() << "DataProxy_SQLite::isQSLReceived: " << QString::number(_qsoId) << "QSL NOT Received-1" << endl;
return false;
}
}
else
{
//qDebug() << "DataProxy_SQLite::isQSLReceived: " << QString::number(_qsoId) << "QSL NOT Received-2" << endl;
return false;
}
}
bool DataProxy_SQLite::isQSLSent(const int _qsoId)
{
//qDebug() << "DataProxy_SQLite::isQSLSent: " << QString::number(_qsoId) << endl;
QSqlQuery query;
QString stringQuery;
stringQuery = QString("SELECT qsl_sent FROM log WHERE id = '%1'").arg(_qsoId);
query.exec(stringQuery);
query.next();
if (query.isValid())
{
stringQuery = (query.value(0)).toString();
if (stringQuery == "Y")
{
//qDebug() << "DataProxy_SQLite::isQSLSent: " << QString::number(_qsoId) << "QSL Sent" << endl;
return true;
}
else
{
//qDebug() << "DataProxy_SQLite::isQSLSent: " << QString::number(_qsoId) << "QSL NOT Sent-1" << endl;
return false;
}
}
else
{
//qDebug() << "DataProxy_SQLite::isQSLSent: " << QString::number(_qsoId) << "QSL NOT Sent-2" << endl;
return false;
}
}
QString DataProxy_SQLite::getCallFromId(const int _qsoId)
{
//qDebug() << "DataProxy_SQLite::getCallFromId" << endl;
QSqlQuery query;
QString stringQuery = QString("SELECT call FROM log WHERE id='%1'").arg(_qsoId);
query.exec(stringQuery);
query.next();
if (query.isValid())
{
return (query.value(0)).toString();
}
else
{
return "";
}
}
QStringList DataProxy_SQLite::getClubLogRealTimeFromId(const int _qsoId)
{
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId: " << QString::number(_qsoId) << endl;
/* Return a QStringList with 16 fields with these data:
QSO_DATE, TIME_ON, QSLRDATE, QSLSDATE, CALL, OPERATOR, MODE, BAND, BAND_RX, FREQ, QSL_RCVD,
LOTW_QSL_RCVD, QSL_SENT, DXCC, PROP_MODE, CREDIT_GRANTED
*/
QSqlQuery query;
int nameCol = -1;
QStringList dataC = QStringList();
QString aux1 = QString();
QString aux2 = QString();
QString call = QString();
// IMPORTANT: band_rx is not always present, and if it is not present, the query with INNER JOIN will fail.
// To fix that we will do two queries, one to check if I have all the data and if not another one with a reduced scope.
QString stringQuery = QString("SELECT qso_date, time_on, qslrdate, qslsdate, call, station_callsign, operator, M.name, B.name, R.name, freq, qsl_rcvd, lotw_qsl_rcvd, qsl_sent, dxcc, prop_mode, credit_granted FROM log INNER JOIN band as B ON bandid = B.id INNER JOIN band as R ON band_rx = R.id INNER JOIN mode as M ON modeid = M.id WHERE log.id='%1'").arg(_qsoId);
bool sqlOk = query.exec(stringQuery);
if (!sqlOk)
{
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId: LastQuery: " << query.lastQuery() << endl;
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId: LastError-data: " << query.lastError().databaseText() << endl;
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId: LastError-driver: " << query.lastError().driverText() << endl;
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId: LastError-n: " << QString::number(query.lastError().number() ) << endl;
}
dataC << QString::number(_qsoId);
QSqlRecord rec = query.record();
if (sqlOk)
{
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId sqlOK" << endl;
if (query.next())
//if (1)
{
if (query.isValid())
{
nameCol = rec.indexOf("qso_date");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("time_on");
//aux = (query.value(nameCol)).toString(); aux1 = checkAndFixASCIIinADIF(aux1);
//aux1 = checkAndFixASCIIinADIF(aux1);
//qDebug() << "FileManager::adifLogExportToFile-time_on: " << aux1 << endl;
aux1 = (query.value(nameCol)).toString();
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId time: " << aux1 << endl;
if ( ((aux1.length()) == 5) || ((aux1.length()) == 8) ){
aux1.remove(QChar(':'), Qt::CaseInsensitive);
dataC << aux1;
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId time1.5: " << aux1 << endl;
}
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId time2: " << aux1 << endl;
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("qslrdate");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("qslsdate");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("call");
call = (query.value(nameCol)).toString();
dataC << call;
nameCol = rec.indexOf("operator");
dataC << (query.value(nameCol)).toString();
//nameCol = rec.indexOf("M.name"); //TODO: Fix this to get the proper column
dataC << (query.value(7)).toString();
//nameCol = rec.indexOf("B.name");
dataC << (query.value(8)).toString(); //TODO: Fix this to get the proper column
//nameCol = rec.indexOf("R.name"); //TODO: Fix this to get the proper column (use an index instead of a number)
dataC << (query.value(9)).toString();
nameCol = rec.indexOf("freq");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("qsl_rcvd");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("lotw_qsl_rcvd");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("qsl_sent");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("dxcc");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("prop_mode");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("credit_granted");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("station_callsign");
aux2 = (query.value(nameCol)).toString();
if (aux2.length()>2)
{
dataC << aux2;
}
else
{
dataC << call;
}
//dataC << (query.value(nameCol)).toString();
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId: RETURNING ... OK" << endl;
return dataC;
}
else
{
//NO VALID
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId NO VALID NOT OK" << endl;
return QStringList();
}
}
else
{
QString stringQuery = QString("SELECT qso_date, time_on, qslrdate, qslsdate, call, station_callsign, operator, M.name, B.name, freq, qsl_rcvd, lotw_qsl_rcvd, qsl_sent, dxcc, prop_mode, credit_granted FROM log INNER JOIN band as B ON bandid = B.id INNER JOIN mode as M ON modeid = M.id WHERE log.id='%1'").arg(_qsoId);
//QString stringQuery = QString("SELECT qso_date, time_on, qslrdate, qslsdate, call, operator, M.name, B.name, freq, qsl_rcvd, lotw_qsl_rcvd, qsl_sent, dxcc, prop_mode, credit_granted FROM log INNER JOIN band as B ON bandid = B.id INNER JOIN mode as M ON modeid = M.id WHERE log.id='%1'").arg(_qsoId);
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId NO NEXT NOT OK" << endl;
call = QString();
sqlOk = query.exec(stringQuery);
rec = query.record();
if (sqlOk)
{
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId OK2" << endl;
if (query.next())
{
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId NEXT OK2" << endl;
if (query.isValid())
{
nameCol = rec.indexOf("qso_date");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("time_on");
aux1 = (query.value(nameCol)).toString();
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId time2-1: " << aux1 << endl;
if ( ((aux1.length()) == 5) || ((aux1.length()) == 8) ){
aux1.remove(QChar(':'), Qt::CaseInsensitive);
dataC << aux1;
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId time2-1.5: " << aux1 << endl;
}
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId time2-2: " << aux1 << endl;
//dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("qslrdate");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("qslsdate");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("call");
call = (query.value(nameCol)).toString();
dataC << call;
nameCol = rec.indexOf("operator");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("M.name"); //TODO: Fix this to get the proper column
dataC << (query.value(7)).toString();
nameCol = rec.indexOf("B.name");
dataC << (query.value(8)).toString(); //TODO: Fix this to get the proper column
//nameCol = rec.indexOf("band_rx"); //TODO: Fix this to get the proper column (use an index instead of a number)
dataC << "";
nameCol = rec.indexOf("freq");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("qsl_rcvd");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("lotw_qsl_rcvd");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("qsl_sent");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("dxcc");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("prop_mode");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("credit_granted");
dataC << (query.value(nameCol)).toString();
aux2 = QString();
nameCol = rec.indexOf("station_callsign");
aux2 = (query.value(nameCol)).toString();
if (aux2.length()>2)
{
dataC << aux2;
}
else
{
dataC << call;
}
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId: RETURNING ... OK" << endl;
return dataC;
}
else
{
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId NO VALID NOT OK2" << endl;
return QStringList();
}
}
else
{
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId NO NEXT NOT OK2" << endl;
return QStringList();
}
}
else
{
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId NOT OK2" << endl;
return QStringList();
}
return QStringList();
// NO NEXT
}
}
else
{
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId NOT sqlOK" << endl;
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId: 2 LastQuery: " << query.lastQuery() << endl;
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId: 2 LastError-data: " << query.lastError().databaseText() << endl;
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId: 2 LastError-driver: " << query.lastError().driverText() << endl;
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId: 2 LastError-n: " << QString::number(query.lastError().number() ) << endl;
return QStringList();
}
//qDebug() << "DataProxy_SQLite::getClubLogRealTimeFromId END NOT OK" << endl;
return QStringList();
}
QString DataProxy_SQLite::getNameFromQRZ(const QString _call)
{
if (_call.length() <= 0)
{
//qDebug() << "DataProxy_SQLite::getNameFromQRZ return 0" << endl;
return QString();
}
QSqlQuery query;
QString queryString = QString("SELECT name FROM log WHERE call='%0'").arg(_call);
bool sqlOk = query.exec(queryString);
if (sqlOk)
{
while (query.next())
{
if (query.isValid())
{
if (((query.value(0)).toString()).length()>0)
{
//qDebug() << "DataProxy_SQLite::getNameFromQRZ: " << (query.value(0)).toString() << endl;
return (query.value(0)).toString();
}
}
}
return QString();
}
else
{
return QString();
}
}
QString DataProxy_SQLite::getQTHFromQRZ(const QString _call)
{
if (_call.length() <= 0)
{
return QString();
}
QSqlQuery query;
QString queryString = QString("SELECT qth FROM log WHERE call='%0'").arg(_call);
bool sqlOk = query.exec(queryString);
if (sqlOk)
{
while (query.next())
{
if (query.isValid())
{
if (((query.value(0)).toString()).length()>0)
{
return (query.value(0)).toString();
}
}
}
return QString();
}
else
{
return QString();
}
}
QString DataProxy_SQLite::getLocatorFromQRZ(const QString _call)
{
if (_call.length() <= 0)
{
return QString();
}
QSqlQuery query;
QString queryString = QString("SELECT gridsquare FROM log WHERE call='%0'").arg(_call);
bool sqlOk = query.exec(queryString);
if (sqlOk)
{
while (query.next())
{
if (query.isValid())
{
if (((query.value(0)).toString()).length()>0)
{
return (query.value(0)).toString();
}
}
}
return QString();
}
else
{
return QString();
}
}
QString DataProxy_SQLite::getIOTAFromQRZ(const QString _call)
{
if (_call.length() <= 0)
{
return QString();
}
QSqlQuery query;
QString queryString = QString("SELECT iota FROM log WHERE call='%0'").arg(_call);
bool sqlOk = query.exec(queryString);
if (sqlOk)
{
while (query.next())
{
if (query.isValid())
{
if (((query.value(0)).toString()).length()>0)
{
return (query.value(0)).toString();
}
}
}
return QString();
}
else
{
return QString();
}
}
QString DataProxy_SQLite::getQSLViaFromQRZ(const QString _call)
{
if (_call.length() <= 0)
{
return QString();
}
QSqlQuery query;
QString queryString = QString("SELECT DISTINCT qsl_via FROM log WHERE call='%0'").arg(_call);
bool sqlOk = query.exec(queryString);
if (sqlOk)
{
while (query.next())
{
if (query.isValid())
{
if (((query.value(0)).toString()).length()>0)
{
return (query.value(0)).toString();
}
}
}
return QString();
}
else
{
return QString();
}
}
bool DataProxy_SQLite::deleteQSO(const int _qsoId)
{
//qDebug() << "DataProxy_SQLite::deleteQSO" << endl;
QSqlQuery query;
QString stringQuery = QString("DELETE FROM log WHERE id='%1'").arg(_qsoId);
return query.exec(stringQuery);
}
int DataProxy_SQLite::isWorkedB4(const QString _qrz, const int _currentLog)
{
//qDebug() << "DataProxy_SQLite::isWorkedB4" << endl;
QSqlQuery query;
QString queryString;
if (_currentLog < 0)
{
queryString = QString("SELECT id FROM log WHERE call='%1'").arg(_qrz);
}
else
{
queryString = QString("SELECT id FROM log WHERE call='%1' AND lognumber='%2'").arg(_qrz).arg(_currentLog);
}
query.exec(queryString);
query.next();
if (query.isValid())
{
return (query.value(0)).toInt();
}
else
{
return -1;
}
}
bool DataProxy_SQLite::isThisQSODuplicated(const QString _qrz, const QString _date, const QString _time, const int _band, const int _mode)
{
//qDebug() << "DataProxy_SQLite::isThisQSODuplicated" << endl;
QSqlQuery query;
QString queryString;
queryString = QString("SELECT id FROM log WHERE call='%1' AND qso_date='%2' AND time_on='%3' AND bandid='%4' AND modeid='%5'").arg(_qrz).arg(_date).arg(_time).arg(_band).arg(_mode);
bool sqlOK = query.exec(queryString);
if (sqlOK)
{
query.next();
if (query.isValid())
{
if ((query.value(0)).toInt()>0)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
else
{
return false;
}
return false;
}
bool DataProxy_SQLite::isDXCCConfirmed(const int _dxcc, const int _currentLog)
{
//qDebug() << "DataProxy_SQLite::isDXCCConfirmed: " << QString::number(_dxcc) << "/" << QString::number(_currentLog) << endl;
QString queryString = QString("SELECT confirmed from awarddxcc WHERE dxcc='%1' AND lognumber='%2'").arg(_dxcc).arg(_currentLog);
QSqlQuery query;
if (query.exec (queryString))
{
query.next();
if (query.isValid())
{
if ( (query.value(0)).toInt() == 1)
{
//qDebug() << "DataProxy_SQLite::isDXCCConfrmed: TRUE" << endl;
return true;
}
else
{
//qDebug() << "DataProxy_SQLite::isDXCCConfrmed: FALSE1" << endl;
return false;
}
}
else
{
//qDebug() << "DataProxy_SQLite::isDXCCConfrmed: FALSE2" << endl;
return false;
}
}
else
{
//qDebug() << "DataProxy_SQLite::isDXCCConfrmed: FALSE3" << endl;
return false;
}
//qDebug() << "DataProxy_SQLite::isDXCCConfrmed: FALSE4" << endl;
return false;
}
bool DataProxy_SQLite::isHF(const int _band)
{
if ((_band>=18) && (_band<=27))
{
//qDebug() << "DataProxy_SQLite::isHF: TRUE" << endl;
return true;
}
else
{
//qDebug() << "DataProxy_SQLite::isHF: FALSE" << endl;
return false;
}
}
bool DataProxy_SQLite::isWARC(const int _band)
{
if ((_band == 19) || (_band==21) ||(_band==23) )
{
//qDebug() << "DataProxy_SQLite::isWARC: tRUE" << endl;
return true;
}
else
{
//qDebug() << "DataProxy_SQLite::isWARC: FALSE" << endl;
return false;
}
}
bool DataProxy_SQLite::isVHF(const int _band)
{
if (_band<=17)
{
//qDebug() << "DataProxy_SQLite::isVHF: TRUE" << endl;
return true;
}
else
{
//qDebug() << "DataProxy_SQLite::isVHF: FALSE" << endl;
return false;
}
}
QStringList DataProxy_SQLite::getOperatingYears(const int _currentLog)
{
//qDebug() << "DataProxy_SQLite::getYearsOperating: " << QString::number(_currentLog) << endl;
QStringList years = QStringList();
QSqlQuery query;
QString queryString = QString("SELECT DISTINCT (substr (qso_date, 0, 5)) FROM log WHERE lognumber='%0'").arg(_currentLog);
QString year = QString();
bool sqlOk = query.exec(queryString);
if (sqlOk)
{
//qDebug() << "DataProxy_SQLite::getYearsOperating: sqlOk = true" << endl;
while (query.next())
{
if (query.isValid())
{
year = (query.value(0)).toString();
years << year;
year.clear();
}
}
//qDebug() << "DataProxy_SQLite::getYearsOperating: END OK - " << QString::number(years.size())<< endl;
return years;
//return years.sort();
}
else
{
//qDebug() << "DataProxy_SQLite::getYearsOperating: sqlOk = false" << endl;
return years;
}
}
void DataProxy_SQLite::compressDB()
{
db->compress();
}
int DataProxy_SQLite::getDXCConYear(const int _year, const int _logNumber)
{
//qDebug() << "DataProxy_SQLite::getDXCConYear: " << QString::number(_year) << "/" << QString::number(_logNumber) << endl;
QSqlQuery query;
QString stringQuery;
bool sqlOK;
stringQuery = QString("SELECT count (dxcc) from (SELECT DISTINCT dxcc FROM log WHERE lognumber='%0' AND qso_date LIKE '%%1%' AND dxcc <>'')").arg(_logNumber).arg(_year);
sqlOK = query.exec(stringQuery);
//qDebug() << "DataProxy_SQLite::getDXCConYear: stringQuery: " << stringQuery << endl;
if (sqlOK)
{
query.next();
if (query.isValid())
{
//qDebug() << "DataProxy_SQLite::getDXCConYear: " << QString::number((query.value(0)).toInt()) << endl;
return (query.value(0)).toInt();
}
else
{
//qDebug() << "DataProxy_SQLite::getDXCConYear: 0" << endl;
return 0;
}
}
else
{
//qDebug() << "DataProxy_SQLite::getDXCConYear: Query error" << endl;
return 0;
}
}
int DataProxy_SQLite::getCQzonYear(const int _year, const int _logNumber)
{
//qDebug() << "DataProxy_SQLite::getCQzonYear: " << QString::number(_year) << endl;
QSqlQuery query;
QString stringQuery;
bool sqlOK;
stringQuery = QString("SELECT count (cqz) from (SELECT DISTINCT cqz FROM log WHERE lognumber='%0' AND qso_date LIKE '%%1%' AND cqz <>'')").arg(_logNumber).arg(_year);
sqlOK = query.exec(stringQuery);
//qDebug() << "DataProxy_SQLite::getCQzonYear: stringQuery: " << stringQuery << endl;
if (sqlOK)
{
query.next();
if (query.isValid())
{
//qDebug() << "DataProxy_SQLite::getCQzonYear: " << QString::number((query.value(0)).toInt()) << endl;
return (query.value(0)).toInt();
}
else
{
//qDebug() << "DataProxy_SQLite::getCQzonYear: 0" << endl;
return 0;
}
}
else
{
//qDebug() << "DataProxy_SQLite::getCQzonYear: Query error" << endl;
return 0;
}
}
bool DataProxy_SQLite::newDXMarathon(const int _dxcc, const int _cq, const int _year, const int _logNumber)
{
//qDebug() << "DataProxy_SQLite::newDXMarathon" << endl;
QSqlQuery query;
QString stringQuery;
bool sqlOK;
bool existingDXCC = false;
bool existingCQz = false;
stringQuery = QString("SELECT dxcc, cqz FROM log WHERE (lognumber='%1' AND qso_date LIKE'%%2%') AND (dxcc ='%3' OR cqz ='%4')").arg(_logNumber).arg(_year).arg(_dxcc).arg(_cq);
sqlOK = query.exec(stringQuery);
if (sqlOK)
{
while(query.next())
{
if (query.isValid())
{
if ( (query.value(0)).toInt() == _dxcc)
{
//qDebug() << "DataProxy_SQLite::newDXMarathon - Existing DXCC" << endl;
existingDXCC = true;
}
if ( (query.value(1)).toInt() == _cq)
{
//qDebug() << "DataProxy_SQLite::newDXMarathon - Existing CQz" << endl;
existingCQz = true;
}
}
}
if (existingDXCC && existingCQz)
{
//qDebug() << "DataProxy_SQLite::newDXMarathon - FALSE" << endl;
return false;
}
else
{
//qDebug() << "DataProxy_SQLite::newDXMarathon - TRUE1" << endl;
return true;
}
}
else
{
//qDebug() << "DataProxy_SQLite::newDXMarathon - TRUE2" << endl;
return true; // It is an error inthe query but Work First Worry Later, let us work that QSO.
}
//qDebug() << "DataProxy_SQLite::newDXMarathon - TRUE3" << endl;
return true;
}
QStringList DataProxy_SQLite::getContestNames()
{
//qDebug() << "DataProxy_SQLite::getContestNames() " << endl;
QStringList contests = QStringList();
QSqlQuery query;
QString stringQuery;
bool sqlOK;
stringQuery = QString("SELECT DISTINCT name from supportedcontests ORDER BY id ASC");
sqlOK = query.exec(stringQuery);
if (sqlOK)
{
while(query.next())
{
if (query.isValid())
{
stringQuery = (query.value(0)).toString();
//qDebug() << "DataProxy_SQLite::getContestNames: " << stringQuery << endl;
contests.append(stringQuery);
}
else
{
return QStringList();
}
}
return contests;
}
else
{
return QStringList();
}
return QStringList();
}
QStringList DataProxy_SQLite::getContestCat(const int _catn)
{
QStringList contests = QStringList();
QSqlQuery query;
QString stringQuery;
bool sqlOK;
switch (_catn) {
case 1:
stringQuery = QString("SELECT DISTINCT name from contestcatoperator ORDER BY id ASC");
break;
case 2:
stringQuery = QString("SELECT DISTINCT name from contestcatassisted ORDER BY id ASC");
break;
case 3:
stringQuery = QString("SELECT DISTINCT name from contestcatpower ORDER BY id ASC");
break;
case 4:
stringQuery = QString("SELECT DISTINCT name from contestcatband ORDER BY id ASC");
break;
case 5:
stringQuery = QString("SELECT DISTINCT name from contestcatoverlay ORDER BY id ASC");
break;
case 6:
stringQuery = QString("SELECT DISTINCT name from contestcatmode ORDER BY id ASC");
break;
default:
return QStringList();
break;
}
sqlOK = query.exec(stringQuery);
if (sqlOK)
{
while(query.next())
{
if (query.isValid())
{
stringQuery = (query.value(0)).toString();
contests.append(stringQuery);
}
else
{
return QStringList();
}
}
return contests;
}
else
{
return QStringList();
}
return QStringList();
}
QStringList DataProxy_SQLite::getContestOverlays()
{
//qDebug() << "DataProxy_SQLite::getContestOverlays: "<< endl;
QStringList contests = QStringList();
QSqlQuery query;
QString stringQuery;
bool sqlOK;
stringQuery = QString("SELECT DISTINCT name from contestcatoverlay ORDER BY id ASC");
sqlOK = query.exec(stringQuery);
if (sqlOK)
{
while(query.next())
{
if (query.isValid())
{
stringQuery = (query.value(0)).toString();
//qDebug() << "DataProxy_SQLite::getContestOverlays: " << stringQuery << endl;
contests.append(stringQuery);
}
else
{
return QStringList();
}
}
return contests;
}
else
{
return QStringList();
}
return QStringList();
}
QStringList DataProxy_SQLite::getPropModeList()
{
//qDebug() << "DataProxy_SQLite::getPropModeLists" << endl;
QString aux = QString();
QStringList qs;
qs.clear();
QString stringQuery = QString("SELECT id, shortname, name FROM prop_mode_enumeration");
QSqlQuery query;
if (query.exec(stringQuery))
{
while ( (query.next())) {
if (query.isValid())
{
aux.clear();
aux = (query.value(0)).toString() + " - " + (query.value(1)).toString() + " - " + (query.value(2)).toString();
qs << aux;
}
else
{
}
}
}
else
{
return QStringList();
}
return qs;
}
QStringList DataProxy_SQLite::getSatellitesList()
{
//qDebug() << "DataProxy_SQLite::getSatellitesList" << endl;
QString aux = QString();
QStringList qs;
qs.clear();
QString stringQuery = QString("SELECT satarrlid, satname FROM satellites");
QSqlQuery query;
if (query.exec(stringQuery))
{
while ( (query.next())) {
if (query.isValid())
{
aux.clear();
aux = (query.value(0)).toString() + " - " + (query.value(1)).toString();
qs << aux;
}
else
{
}
}
}
else
{
return QStringList();
}
return qs;
}
QStringList DataProxy_SQLite::getValidCatOptions(const int _currentCat, const int _lowerCat)
{
//qDebug() << "DataProxy_SQLite::getContestNames: " << QString::number(_currentCat) <<"/" << QString::number(_lowerCat) << endl;
QStringList contests = QStringList();
QSqlQuery query;
QString stringQuery;
bool sqlOK;
switch (_currentCat) {
case 0:
stringQuery = QString("SELECT DISTINCT contestcatoperator.name FROM contestcatoperator JOIN contest ON contest.catoperator=contestcatoperator.id WHERE contest.contest='%1' ORDER BY contestcatoperator.id").arg(_lowerCat);
break;
case 1:
stringQuery = QString("SELECT DISTINCT contestcatassisted.name FROM contestcatassisted JOIN contest ON contest.catassisted=contestcatassisted.id WHERE contest.catoperator='1' ORDER BY contestcatassisted.id").arg(_lowerCat);
break;
case 2:
stringQuery = QString("SELECT DISTINCT contestcatpower.name FROM contestcatpower JOIN contest ON contest.catpower=contestcatpower.id WHERE contest.catoperator='1' ORDER BY contestcatpower.id").arg(_lowerCat);
break;
case 3:
stringQuery = QString("SELECT DISTINCT contestcatband.name FROM contestcatband JOIN contest ON contest.catband=contestcatband.id WHERE contest.catoperator='1' ORDER BY contestcatband.id").arg(_lowerCat);
break;
case 4:
stringQuery = QString("SELECT DISTINCT contestcatoverlay.name FROM contestcatoverlay JOIN contest ON contest.catoverlay=contestcatoverlay.id WHERE contest.catoperator='1' ORDER BY contestcatoverlay.id").arg(_lowerCat);
break;
case 5:
stringQuery = QString("SELECT DISTINCT contestcatmode.name FROM contestcatmode JOIN contest ON contest.catmode=contestcatmode.id WHERE contest.catoperator='1' ORDER BY contestcatmode.id").arg(_lowerCat);
break;
default:
return QStringList();
break;
}
sqlOK = query.exec(stringQuery);
if (sqlOK)
{
while(query.next())
{
if (query.isValid())
{
stringQuery = (query.value(0)).toString();
contests.append(stringQuery);
}
else
{
return QStringList();
}
}
return contests;
}
else
{
return QStringList();
}
}
bool DataProxy_SQLite::haveAtLeastOneLog()
{
//qDebug() << "DataProxy_SQLite::haveAtLeastOneLog()" << endl;
QSqlQuery query;
if (query.exec("SELECT COUNT(id) from logs"))
{
query.next();
if (query.isValid())
{
if((query.value(0)).toInt()>0)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
else
{
return false;
}
return false;
}
int DataProxy_SQLite::getNumberOfManagedLogs()
{
//qDebug() << "DataProxy_SQLite::getNumberOfManagedLogs" << endl;
QSqlQuery query;
if (query.exec("SELECT COUNT (*) from logs"))
{
query.next();
if (query.isValid())
{
return (query.value(0)).toInt();
}
else
{
return -1;
}
}
else
{
return -1;
}
return -1;
}
int DataProxy_SQLite::getMaxLogNumber()
{
QSqlQuery query;
QString st = QString("SELECT MAX(id) FROM logs");
if (query.exec(st))
{
query.next();
if (query.isValid())
{
return (query.value(0)).toInt();
}
else
{
return -1;
}
}
else
{
return -1;
}
return -1;
}
QStringList DataProxy_SQLite::getListOfManagedLogs()
{
//This function returns the list of log IDs that are being managed
//qDebug() << "DataProxy_SQLite::getListOfManagedLogs" << endl;
QSqlQuery query;
QStringList qs;
qs.clear();
if (query.exec("SELECT id FROM logs"))
{
while (query.next())
{
if (query.isValid())
{
qs << (query.value(0)).toString();
//qDebug() << "DataProxy_SQLite::getListOfManagedLogs: " << (query.value(0)).toString() << endl;
}
}
}
else
{
qs.clear();
}
return qs;
}
QString DataProxy_SQLite::getStationCallSignFromLog(const int _log)
{
//qDebug() << "DataProxy_SQLite::getStationCallSignFromLog: " << QString::number(_log)<< endl;
QSqlQuery query;
QString st = QString("SELECT stationcall FROM logs WHERE id='%1'").arg(_log);
if (query.exec(st))
{
query.next();
if (query.isValid())
{
//qDebug() << "DataProxy_SQLite::getStationCallSignFromLog: " << (query.value(0)).toString() << endl;
return (query.value(0)).toString();
}
else
{
//qDebug() << "DataProxy_SQLite::getStationCallSignFromLog: Not valid" << endl;
return QString();
}
}
else
{
//qDebug() << "DataProxy_SQLite::getStationCallSignFromLog: query failed" << endl;
return QString();
}
//qDebug() << "DataProxy_SQLite::getStationCallSignFromLog: END" << endl;
return QString();
}
int DataProxy_SQLite::getContestTypeN(const int _co, const int _catop, const int _catas, const int _catpo, const int _catba, const int _catov, const int _catmo)
{//typeContestSelected, contestCatOperators, contestCatAssisted, contestCatPower, contestCatBands, contestCatOverlay, contestCatMode
//qDebug() << "DataProxy_SQLite::getContestTypeN: " << endl;
QSqlQuery query;
QString st = QString("SELECT id FROM contest WHERE contest='%1' AND catoperator='%2' AND catassisted='%3' AND catpower='%4' AND catoverlay='%5' AND catmode='%6' AND catband='%7'").arg(_co).arg(_catop).arg(_catas).arg(_catpo).arg(_catov).arg(_catmo).arg(_catba);
//qDebug() << "DataProxy_SQLite::getContestTypeN: " << st << endl;
if (query.exec(st))
{
//qDebug() << "DataProxy_SQLite::getContestTypeN: (OK) LastQuery: " << query.lastQuery() << endl;
query.next();
if (query.isValid())
{
//qDebug() << "DataProxy_SQLite::getContestTypeN: " << (query.value(0)).toString() << endl;
return (query.value(0)).toInt();
}
else
{
//qDebug() << "DataProxy_SQLite::getContestTypeN: Not valid (-1)" << endl;
return -1;
}
}
else
{
//qDebug() << "DataProxy_SQLite::getContestTypeN: (ERROR) LastQuery: " << query.lastQuery() << endl;
//qDebug() << "DataProxy_SQLite::getContestTypeN: query failed (-1)" << endl;
return -1;
}
//qDebug() << "DataProxy_SQLite::getContestTypeN: END (-1)" << endl;
return -1;
}
QStringList DataProxy_SQLite::getDataFromContestType(const int _n)
{
//qDebug() << "DataProxy_SQLite::getDataFromContestType - n: " << QString::number(_n) << endl;
QStringList dataC = QStringList();
QSqlQuery query, query1;
QString stringQuery;
int nameCol = -1;
bool sqlOK;
stringQuery = QString("SELECT supportedcontests.name, contest.contest, contest.catoperator, contest.catassisted, contest.catpower, contest.catoverlay, contest.catmode, contest.catband FROM supportedcontests JOIN contest ON contest.contest=supportedcontests.id WHERE contest.id='%1'").arg(_n);
sqlOK = query.exec(stringQuery);
//qDebug() << "DataProxy_SQLite::getDataFromContestType: LastQuery: " << query.lastQuery() << endl;
QSqlRecord rec = query.record();
if (sqlOK)
{
//qDebug() << "DataProxy_SQLite::getDataFromContestType: Query OK" << endl;
if(query.next())
{
//qDebug() << "DataProxy_SQLite::getDataFromContestType: Query Next" << endl;
if (query.isValid())
{
//qDebug() << "DataProxy_SQLite::getDataFromContestType: Query Valid" << endl;
//qDebug() << "DataProxy_SQLite::getDataFromContestType:-1 " << endl;
nameCol = rec.indexOf("contest");
dataC << (query.value(nameCol)).toString();
//qDebug() << "DataProxy_SQLite::getDataFromContestType: -2" << endl;
nameCol = rec.indexOf("catoperator");
dataC << (query.value(nameCol)).toString();
//qDebug() << "DataProxy_SQLite::getDataFromContestType: -3" << endl;
nameCol = rec.indexOf("catassisted");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("catpower");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("catoverlay");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("catmode");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("name");
dataC << (query.value(nameCol)).toString();
nameCol = rec.indexOf("catband");
dataC << (query.value(nameCol)).toString();
return dataC;
}
else
{
//qDebug() << "DataProxy_SQLite::getDataFromContestType: Query value no valid" << endl;
return QStringList();
}
}
else
{
//qDebug() << "DataProxy_SQLite::getDataFromContestType: No Next" << endl;
return QStringList();
}
return dataC;
}
else
{
//qDebug() << "DataProxy_SQLite::getDataFromContestType: Query not OK" << endl;
return QStringList();
}
}
int DataProxy_SQLite::getHowManyQSOInLog(const int _log)
{
QSqlQuery query;
QString aux;
aux = QString("SELECT count(id) FROM log WHERE lognumber='%1'").arg(_log);
if (query.exec(aux))
{
query.next();
if (query.isValid())
{
return (query.value(0)).toInt();
}
else
{
return 0;
}
}
else
{
return 0;
}
}
bool DataProxy_SQLite::addNewLog (const QStringList _qs)
{
//qDebug() << "SetupPageLogs::addNewLog: " << _qs.at(2) << "/" << _qs.at(5) << "/" << _qs.at(6) << endl;
//_qs << dateString << stationCallsign << _qs.at(4) << comment << _qs.at(12);
//qDebug() << "SetupPageLogs::slotAnalyzeNewLogData: " << _qs.at(4) << "/" << _qs.at(12) << endl;
// Date/Call/Operators/"DX"/comment/"1"
if (_qs.size()!=8)
{
//qDebug() << "SetupPageLogs::addNewLog: != 8" << endl;
return false;
}
//qDebug() << "SetupPageLogs::addNewLog: Has the appropriate length" << endl;
QString aux = QString();
int nameCol = -1;
QString _dateString = _qs.at(0);
QString _stationCallsign = _qs.at(1);
QString _operators = _qs.at(2);
//_operators.clear();
//_operators << (_qs.at(2)).split(',', QString::SkipEmptyParts);
QString _typeContest = _qs.at(3);
QString _comment = _qs.at(4);
QString _typeContestN = _qs.at(5);
QString id = _qs.at(6);
QString editing = _qs.at(7);
QString queryString;
QSqlQuery query;
bool sqlOK;
if (editing == "1")
{ // We are editing
//qDebug() << "SetupPageLogs::addNewLog: We are editing!" << endl;
queryString = QString("UPDATE logs SET logdate = '%1', stationcall = '%2', operators = '%3', comment = '%4', logtype = '%5', logtypen = '%6' WHERE id = '%7'").arg(_dateString).arg(_stationCallsign).arg(_operators).arg(_comment).arg(_typeContest).arg(_typeContestN).arg(id);
sqlOK = query.exec(queryString);
if (sqlOK)
{
//qDebug() << "SetupPageLogs::addNewLog: Editing OK!" << endl;
return true;
}
else
{
//qDebug() << "SetupPageLogs::addNewLog: Editing NOK!" << endl;
return false;
}
return false;
}
//qDebug() << "SetupPageLogs::addNewLog: We are adding a new log" << endl;
// First we check if the log is already there
queryString = QString("SELECT id FROM logs WHERE logdate='%1' AND stationcall='%2' AND logtype='%3' AND logtypen='%4'").arg(_dateString).arg(_stationCallsign).arg(_typeContest).arg(_typeContestN);
//"logs"
//"id, logdate, stationcall, comment, logtype"
//qDebug() << "SetupPageLogs::addNewLog query1: " << queryString << endl;
sqlOK = query.exec(queryString);
QSqlRecord rec = query.record(); // Number of columns
if ( (query.next()) && (query.isValid()) )
{
//nameCol = rec.indexOf("id");
//aux = (query.value(nameCol)).toString();
//qDebug() << "SetupPageLogs::addNewLog: id = " << aux << endl;
return false;
}
//Now we add the new log
queryString = QString("INSERT INTO logs (logdate, stationcall, operators, comment, logtype, logtypen) values('%1','%2','%3','%4', '%5', '%6')").arg(_dateString).arg(_stationCallsign).arg(_operators).arg(_comment).arg(_typeContest).arg(_typeContestN);
//qDebug() << "SetupPageLogs::addNewLog query1: " << queryString << endl;
sqlOK = query.exec(queryString);
if (sqlOK)
{
return true;
}
else
{
return false;
}
return false;
}
bool DataProxy_SQLite::doesThisLogExist(const int _log)
{
QSqlQuery query;
QString aux;
aux = QString("SELECT count(id) FROM logs WHERE id='%1'").arg(_log);
if (query.exec(aux))
{
query.next();
if (query.isValid())
{
if ( query.value(0).toInt()>0)
{
return true;
}
}
else
{
return false;
}
}
else
{
return false;
}
return false;
}
int DataProxy_SQLite::getContinentIdFromContinentShortName(const QString _n)
{
if (_n.length()!=2)
{
return -3;
}
QSqlQuery query;
QString stQuery = QString("SELECT id FROM continent WHERE shortname=='%1'").arg(_n);
if (query.exec(stQuery))
{
query.next();
if (query.isValid())
{
return (query.value(0)).toInt();
}
else
{
return -1;
}
}
else
{
return -2;
}
}
QString DataProxy_SQLite::getContinentShortNameFromEntity(const int _n)
{
QSqlQuery query;
QString aux;
//aux = QString("SELECT continent.shortname FROM entity JOIN continent ON entity.continent=continent.shortname WHERE (mainprefix NOT LIKE '*%') AND dxcc='%1'").arg(_n);
aux = QString("SELECT continent.shortname FROM entity JOIN continent ON entity.continent=continent.shortname WHERE dxcc='%1'").arg(_n);
if (query.exec(aux))
{
query.next();
if (query.isValid())
{
return (query.value(0)).toString();
}
else
{
return QString();
}
}
else
{
return QString();
}
}
int DataProxy_SQLite::getContinentIdFromEntity(const int _n)
{
QSqlQuery query;
QString aux;
aux = QString("SELECT continent.id FROM entity JOIN continent ON entity.continent=continent.shortname WHERE dxcc='%1'").arg(_n);
//aux = QString("SELECT continent.id FROM entity JOIN continent ON entity.continent=continent.shortname WHERE (mainprefix NOT LIKE '*%') AND dxcc='%1'").arg(_n);
if (query.exec(aux))
{
query.next();
if (query.isValid())
{
return (query.value(0)).toInt();
}
else
{
return -1;
}
}
else
{
return -2;
}
}
QStringList DataProxy_SQLite::getContinentShortNames()
{
QSqlQuery query;
QString aux;
QStringList continents;
continents.clear();
aux = QString("SELECT shortname FROM continent");
if (query.exec(aux))
{
while (query.next())
{
if (query.isValid())
{
continents << query.value(0).toString();
}
}
return continents;
}
else
{
return QStringList();
}
return QStringList();
}
bool DataProxy_SQLite::isValidContinentShortName(const QString _n)
{
QString stringQuery = QString("SELECT id FROM continent WHERE shortname ='%1'").arg(_n);
QSqlQuery query;
if (query.exec(stringQuery))
{
if (query.next())
{
if (query.isValid())
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
else
{
return false;
}
return false;
}
int DataProxy_SQLite::getITUzFromPrefix(const QString _p)
{
QSqlQuery query;
QString aux;
aux = QString("SELECT ituz FROM prefixesofentity WHERE prefix LIKE '%1'").arg(_p);
if (query.exec(aux))
{
query.next();
if (query.isValid())
{
return (query.value(0)).toInt();
}
else
{
return -1;
}
}
else
{
return -2;
}
}
int DataProxy_SQLite::getCQzFromPrefix(const QString _p)
{
QSqlQuery query;
QString aux;
aux = QString("SELECT cqz FROM prefixesofentity WHERE prefix LIKE '%1'").arg(_p);
if (query.exec(aux))
{
query.next();
if (query.isValid())
{
return (query.value(0)).toInt();
}
else
{
return -1;
}
}
else
{
return -2;
}
}
int DataProxy_SQLite::getCQzFromEntity(const int _n)
{
QSqlQuery query;
QString aux;
aux = QString("SELECT cqz FROM entity WHERE dxcc='%1'").arg(_n);
if (query.exec(aux))
{
query.next();
if (query.isValid())
{
return (query.value(0)).toInt();
}
else
{
return -1;
}
}
else
{
return -2;
}
}
int DataProxy_SQLite::getITUzFromEntity(const int _n)
{
QSqlQuery query;
QString aux;
aux = QString("SELECT ituz FROM entity WHERE dxcc='%1'").arg(_n);
if (query.exec(aux))
{
query.next();
if (query.isValid())
{
return (query.value(0)).toInt();
}
else
{
return -1;
}
}
else
{
return -2;
}
}
QString DataProxy_SQLite::getEntityNameFromId(const int _n)
{
//qDebug() << "DataProxy_SQLite::getEntityNameFromId:" << endl;
QSqlQuery query;
//QString stQuery = QString("SELECT name FROM entity WHERE (mainprefix NOT LIKE '*%') AND dxcc='%1'").arg(_n);
QString stQuery = QString("SELECT name FROM entity WHERE dxcc='%1'").arg(_n);
QString motherEntName = QString();
if (_n > 1000)
{
QString aux = (QString::number(_n)).right(3);
QString stQuery2 = QString("SELECT name FROM entity WHERE dxcc='%1'").arg(aux);
if (query.exec(stQuery2))
{
if (query.next())
{
if (query.isValid())
{
motherEntName = (query.value(0)).toString();
}
}
}
}
if (query.exec(stQuery))
{
if (query.next())
{
if (query.isValid())
{
if (_n>1000)
{
return (query.value(0)).toString() + " (" + motherEntName + ")";
}
else
{
return (query.value(0)).toString();
}
}
else
{
return QString();
}
}
else
{
return QString();
}
}
else
{
return QString();
}
return QString();
}
QString DataProxy_SQLite::getEntityMainPrefix(const int _entityN)
{
//qDebug() << "DataProxy_SQLite::getEntityMainPrefix:" << QString::number(_entityN) << endl;
if (_entityN <= 0 )
{
return QString();
}
QString queryString;
QSqlQuery query;
//queryString = QString("SELECT mainprefix FROM entity WHERE (mainprefix NOT LIKE '*%') AND dxcc='%1'").arg(_entityN);
queryString = QString("SELECT mainprefix FROM entity WHERE dxcc='%1'").arg(_entityN);
//queryString = "SELECT prefix FROM prefixesofentity WHERE dxcc=='" + QString::number(i) +"'";
if (!query.exec(queryString))
{
return QString();
}
else
{
query.next();
if (query.isValid()){
return (query.value(0)).toString();
}else
{
return QString();
}
}
return QString();
}
int DataProxy_SQLite::getDXCCFromPrefix(const QString _p)
{
//qDebug() << "DataProxy_SQLite::getDXCCFromPrefix(: -" << _p << "-" << endl;
QSqlQuery query;
QString stQuery = QString("SELECT dxcc FROM prefixesofentity WHERE prefix='%1'").arg(_p);
if (query.exec(stQuery))
{
if (query.next())
{
if (query.isValid())
{
return (query.value(0)).toInt();
}
else
{
return -1;
}
}
else
{
return -2;
}
}
else
{
return -3;
}
return -4;
}
bool DataProxy_SQLite::isNewCQz(int _c)
{
QSqlQuery query;
QString queryString = QString("SELECT id FROM log WHERE cqz='%1'").arg(_c);
//queryString = "SELECT id FROM log WHERE cqz=='" + QString::number(_cqz) +"'";
if (!query.exec(queryString))
{
return false;
}
else
{
query.next();
if (query.isValid()){
return true;
}else{
return false;
}
}
return false;
}
bool DataProxy_SQLite::isNewEntity(int _e)
{
if (_e <= 0)
{
return false;
}
//QString queryString;
QSqlQuery query;
QString queryString = QString("SELECT id FROM log WHERE dxcc='%1'").arg(_e);
//queryString = "SELECT id FROM log WHERE dxcc=='" + QString::number(_entityN) +"'";
if (!query.exec(queryString))
{
return false;
}
else
{
query.next();
if (query.isValid()){
return true;
}else{
return false;
}
}
return false;
}
double DataProxy_SQLite::getLongitudeFromEntity(const int _e)
{
QString queryString = QString("SELECT longitude FROM entity WHERE dxcc='%1'").arg(_e);
QSqlQuery query;
if (!query.exec(queryString))
{
return 0.0;
}
else
{
query.next();
if ( !(query.isValid()) ) {
return 0.0;
}else{
return (query.value(0)).toDouble();
}
}
return 0.0;
}
double DataProxy_SQLite::getLatitudeFromEntity(const int _e)
{
QString queryString = QString("SELECT latitude FROM entity WHERE dxcc='%1'").arg(_e);
QSqlQuery query;
if (!query.exec(queryString))
{
return 0.0;
}
else
{
query.next();
if ( !(query.isValid()) ) {
return 0.0;
}else{
return (query.value(0)).toDouble();
}
}
return 0.0;
}
QString DataProxy_SQLite::getEntityPrefixes(const int _enti)
{
if (_enti<=0)
{
return QString();
}
QString result;
result = "";
QString queryString;
QSqlQuery query;
int i = _enti;
queryString = "SELECT prefix FROM prefixesofentity WHERE dxcc=='" + QString::number(i) +"'";
if (!query.exec(queryString))
{
return QString();
}
else
{
while ( (query.next())) {
if (query.isValid())
{
result = result + ", " + (query.value(0)).toString();
}
else
{
}
}
if (result.length() < 1)
{
return result;
}
else
{
result = result.remove(0,2);
return result;
}
}
return QString();
}
QStringList DataProxy_SQLite::getEntitiesNames()
{
//qDebug() << "DataProxy_SQLite::getEntitiesNames" << endl;
QString aux = QString();
QStringList qs;
qs.clear();
QString stringQuery = QString("SELECT mainprefix, name, dxcc FROM entity");
QSqlQuery query;
if (query.exec(stringQuery))
{
while ( (query.next())) {
if (query.isValid())
{
if (query.value(2).toInt()<1000)
{
aux.clear();
aux = (query.value(0)).toString() + "-" + (query.value(1)).toString()+" ("+(query.value(2)).toString()+")";
//result = result + ", " + (query.value(0)).toString();
qs << aux;
}
}
else
{
}
}
}
else
{
}
return qs;
}
/*
* The following code was showing in the Entities prefixes and entities like Sicily, African Italy... and they are not officially an entity in the DXCC
QStringList DataProxy_SQLite::getEntitiesNames()
{
qDebug() << "DataProxy_SQLite::getEntitiesNames" << endl;
QString aux = QString();
QStringList qs;
qs.clear();
QString stringQuery = QString("SELECT mainprefix, name, dxcc FROM entity");
QSqlQuery query,query2;
int dxcc = -1;
QString aux2 = QString();
if (query.exec(stringQuery))
{
while ( (query.next())) {
if (query.isValid())
{
dxcc = query.value(2).toInt();
qDebug() << "DataProxy_SQLite::getEntitiesNames - DXCC: " << QString::number(dxcc) << endl;
if (dxcc > 1000)
{
qDebug() << "DataProxy_SQLite::getEntitiesNames - DXCC>1000 going in details: " << endl;
aux2 = QString::number(dxcc);
aux2 = aux2.right(3);
qDebug() << "DataProxy_SQLite::getEntitiesNames - aux2: " << aux2 << endl;
stringQuery = QString("SELECT mainprefix, name FROM entity WHERE dxcc ='%1'").arg(aux2);
if (query2.exec(stringQuery))
{
if (query2.next())
{
if (query2.isValid())
{
//aux2 = (query2.value(1)).toString();
aux.clear();
aux = (query.value(0)).toString() + "-" + (query.value(1)).toString()+" (" + (query2.value(0)).toString() + "-" + (query2.value(1)).toString() + " - " + aux2 + ")" ;
}
}
}
else
{
//TODO: Manage the error
}
}
else
{
qDebug() << "DataProxy_SQLite::getEntitiesNames - DXCC<1000 quick! " << endl;
aux.clear();
aux = (query.value(0)).toString() + "-" + (query.value(1)).toString()+" ("+QString::number(dxcc)+")";
}
qDebug() << "DataProxy_SQLite::getEntitiesNames - AUX: " << aux << endl;
//result = result + ", " + (query.value(0)).toString();
qs << aux;
}
else
{
//TODO: Manage the error
}
}
}
else
{
//TODO: Manage the error
}
return qs;
}
*/
int DataProxy_SQLite::getHowManyEntities()
{
QSqlQuery query;
QString aux;
aux = QString("SELECT count(id) FROM entity");
if (query.exec(aux))
{
query.next();
if (query.isValid())
{
return (query.value(0)).toInt();
}
else
{
return 0;
}
}
else
{
return 0;
}
}
bool DataProxy_SQLite::updateISONames()
{
qDebug() << "DataProxy_SQLite::updateISONames" << endl;
bool result;
result = db->updateTheEntityTableISONames();
return result;
}
QString DataProxy_SQLite::getISOName(const int _n)
{
//qDebug() << "DataProxy_SQLite::getISONames: " << QString::number(_n) << endl;
if (_n <= 0 )
{
return "un"; // When no flag is known, we return the UN flag
}
QString queryString, aux;
QSqlQuery query;
aux.clear();
queryString = QString("SELECT isoname FROM entity WHERE dxcc='%1'").arg(_n);
if (!query.exec(queryString))
{
//qDebug() << "DataProxy_SQLite::getISOName: Query error" << endl;
return "nu"; // When no flag is known, we return the UN flag
}
else
{
query.next();
if (query.isValid()){
//qDebug() << "DataProxy_SQLite::getISOName: ISO Name: " << (query.value(0)).toString() << endl;
aux = (query.value(0)).toString();
if (aux.length()>1)
{
return aux;
}
else
{
return "un"; // When no flag is known, we return the UN flag
}
}
else
{
//qDebug() << "DataProxy_SQLite::getISOName: NO ISO Name: " << endl;
return "un"; // When no flag is known, we return the UN flag
}
}
//qDebug() << "DataProxy_SQLite::getISOName: NO ISO Name: default" << endl;
return "un"; // When no flag is known, we return the UN flag
}