1 #ifndef KLOG_DATAPROXY_SQLITE_H 2 #define KLOG_DATAPROXY_SQLITE_H 30 #include <QStringList> 41 #include "database/database.h" 42 #include "database/datacache.h" 43 #include "frequency.h" 45 #include "utilities.h" 46 #include "klogdefinitions.h" 71 DataProxy_SQLite(
const QString &_parentFunction,
const QString &_softVersion=
"0.0");
72 DataProxy_SQLite(
const QString &_parentFunction,
const QString &_softVersion,
const QString &_dbPath);
74 void setLogLevel (
const DebugLogLevel _l);
75 QString getSoftVersion();
76 void setPKGVersion(
const QString &_pkgVersion);
77 QString getPKGVersion();
78 QString getDBVersion();
81 void createLogModel();
82 void createLogPanel();
83 bool haveAtLeastOneLog();
85 QStringList getColumnNamesFromTableLog();
87 int getIdFromModeName(
const QString& _modeName);
88 int getIdFromBandName(
const QString& _bandName);
91 bool isValidMode(
const QString& _modeName);
92 bool isValidBand(
const QString& _bandName);
96 KLOG_DEPRECATED
bool createHashes();
97 void loadBandDataCache();
98 void loadModeDataCache();
99 void loadEntityDataCache();
101 QStringList getFields();
103 QStringList getModes();
104 QStringList getSubModes();
105 QStringList getModesAndSubmodes();
106 QStringList sortBandNamesBottonUp(
const QStringList _qs);
107 QStringList getBandIDs();
108 QStringList getModesIDs();
109 QStringList getBandsInLog(
const int _log);
110 QStringList getModesInLog(
const int _log);
111 int getMostUsedBand(
const int _log);
112 int getMostUsedMode(
const int _log);
114 QString getNameFromBandId (
const int _id);
115 KLOG_DEPRECATED QString getNameFromModeId(
const int _id);
117 QString getSubModeFromId (
const int _id);
118 QString getNameFromSubMode (
const QString &_sm);
119 QList<int> getModeGroupIds(
const int _modeId);
121 bool isModeDeprecated (
const QString &_sm);
124 int getBandIdFromFreq(
const Frequency _n);
125 QString getBandNameFromFreq(
const Frequency _n);
128 Frequency getLowLimitBandFromBandName(
const QString &_sm);
129 Frequency getLowLimitBandFromBandId(
const int _sm);
130 Frequency getUpperLimitBandFromBandName(
const QString &_sm);
131 bool isThisFreqInBand(
const QString &_band,
const Frequency _fr);
134 int getLastInsertedQSO();
135 QDate getFirstQSODateFromCall (
const QString &_call);
136 QDate getLastQSODateFromCall (
const QString &_call);
138 bool addQSOFromWSJTX (
const QString &_dxcall,
const QString &_mode,
const QString &_band,
const double _freq,
139 const QString &_mygrid,
const QString &_dxgrid,
140 const QString &_rstTX,
const QString &_rstRX,
const QString &_sRX,
const QString &_sTX,
141 const QString &_comment,
142 const QString &_stationcallsign,
const QString &_name,
const QString &_operator,
143 const QDateTime &_datetime,
const QDateTime &_datetime_off,
const double txpower,
144 const int _dxcc,
const int _logNumber,
bool _sendQSL =
true);
146 int addQSO(
QSO &_qso);
147 QSO fromDB(
const int _qsoId);
148 bool updateQSOFromLoTW(
const QSO &_lotwQso,
const int _qsoId);
149 bool applyLoTWFieldsToQSO(
const QSO &_lotwQso,
const int _qsoId);
154 bool deleteQSO(
const int _qsoId);
155 int isWorkedB4(
const QString &_qrz,
const int _currentLog);
157 int isThisQSODuplicated(
const QSO &_qso,
const int _secs);
160 bool isQSLReceived(
const int _qsoId);
161 bool isQSLLoTWReceived(
const int _qsoId);
162 bool isQSOConfirmed(
const int _qsoId,
const bool _checkPaper,
const bool _checkLoTW);
163 bool isQSLSent(
const int _qsoId);
165 bool qslSentViaDirect(
const int _qsoId,
const QDate &_updateDate);
166 bool qslSentViaBureau(
const int _qsoId,
const QDate &_updateDate);
167 bool qslRecViaBureau(
const int _qsoId,
const QDate &_updateDate);
168 bool qslRecViaBureau(
const int _qsoId,
const QDate &_updateDate,
const bool _queueSentQSL);
169 bool qslRecViaDirect(
const int _qsoId,
const QDate &_updateDate);
170 bool qslRecViaDirect(
const int _qsoId,
const QDate &_updateDate,
const bool _queueSentQSL);
171 bool qslSentAsRequested(
const int _qsoId,
const QDate &_updateDate);
172 bool qslRecAsRequested(
const int _qsoId,
const QDate &_updateDate);
173 bool setClubLogSent(
const int _qsoId,
const QString &_st,
const QDate &_updateDate);
174 bool setLoTWQSLRec (
const int _qsoId,
const QString &_st,
const QDate &_updateDate);
176 bool isHF(
const int _band);
177 bool isWARC(
const int _band);
178 bool isVHF(
const int _band);
179 bool isUHF(
const int _band);
181 int getBandFromId(
const int _qsoId);
182 int getModeFromId(
const int _qsoId);
183 int getDXCCFromId(
const int _qsoId);
184 int getCQZFromId(
const int _qsoId);
185 QList<int> getBandModeDXCCCQZlogIDFromId(
const int _qsoId);
187 QString getCallFromId(
const int _qsoId);
188 QStringList getClubLogRealTimeFromId(
const int _qsoId);
190 QStringList getFilteredLocators(
const QString &_band,
const QString &_mode,
const QString &_prop,
const QString &_sat,
bool _confirmed =
false);
192 QVariantList getQSOsForLocator(
const QString &_locator,
const QString &_band,
const QString &_mode,
const QString &_prop,
const QString &_sat,
bool _confirmed =
false);
195 bool QRZCOMModifyFullLog(
const int _currentLog);
196 bool QRZCOMSentQSOs(
const QList<int> &_qsos);
199 bool eQSLModifyFullLog(
const int _currentLog);
200 bool eQSLSentQSOs(
const QList<int> &_qsos);
205 bool clublogSentQSOs(
const QList<int> &_qsos);
206 bool clublogModifyFullLog(
const int _currentLog);
210 bool lotwSentQueue(
const QDate &_updateDate,
const int _currentLog);
211 bool lotwSentYes(
const QDate &_updateDate,
const int _currentLog,
const QString &_station);
212 bool lotwSentQSOs(
const QList<int> &_qsos);
213 int lotwUpdateQSLReception (
const QString &_call,
const QDateTime &_dateTime,
const QString &_band,
const QString &_mode,
const QDate &_qslrdate);
214 QList<int> getQSOsListLoTWToSend(
const QString &_stationCallsign,
const QString &_myGrid,
const QDate &_startDate,
const QDate &_endDate,
bool _justQueued=
true,
int _logN = -1);
216 QStringList getQSODetailsForLoTWDownload(
const int _id);
218 QList<int> getQSOsListeQSLNotSent(
const QString &_stationCallsign,
const QDate &_startDate,
const QDate &_endDate,
bool _justQueued=
true);
220 QList<int> getQSOsListClubLogToSent(
const QString &_stationCallsign,
const QDate &_startDate,
const QDate &_endDate,
bool _justModified=
true,
int _logN = -1);
221 QList<int> getQSOsListEQSLToSent(
const QString &_stationCallsign,
222 const QDate &_startDate,
223 const QDate &_endDate,
224 bool _justModified =
true,
226 QList<int> getQSOsListQRZCOMToSent(
const QString &_stationCallsign,
const QDate &_startDate,
const QDate &_endDate,
bool _justModified=
true,
int _logN = -1);
227 QList<int> getQSOsListToBeExported(
const QString &_stationCallsign,
const QString &_grid,
const QDate &_startDate,
const QDate &_endDate,
int _logN = -1);
228 QList<int> getQSOsAll();
229 QStringList getGridsToBeSent(
const QString &_stationCallsign,
const QDate &_startDate,
const QDate &_endDate,
const ExportMode _em,
bool _justModified=
true,
int _logN = -1);
232 int getContinentIdFromContinentShortName(
const QString &_n);
233 QString getContinentShortNameFromEntity(
const int _n);
234 int getContinentIdFromEntity(
const int _n);
235 QStringList getContinentShortNames();
236 bool isValidContinentShortName(
const QString &_n);
237 bool isValidDXCC(
const int _e);
238 QStringList filterValidFields(
const QStringList &_fields);
240 int getCQzFromPrefix(
const QString &_p);
241 int getCQzFromEntity(
const int _n);
242 int getITUzFromEntity(
const int _n);
243 int getITUzFromPrefix(
const QString &_p);
244 QString getEntityNameFromId(
const int _n);
245 int getEntityIdFromName(
const QString &_e);
246 QString getEntityMainPrefix(
const int _entityN);
247 QMap<EntityData, int> getAllEntiNameISOAndPrefix();
249 int getEntityIdFromMainPrefix(
const QString &_e);
250 bool isNewCQz(
int _c);
251 bool isNewEntity(
int _e);
252 double getLongitudeFromEntity(
const int _e);
253 double getLatitudeFromEntity(
const int _e);
255 QString getEntityPrefixes(
const int _enti);
256 QStringList getLongPrefixes();
257 QStringList getSpecialCallsigns();
265 QList<SpecialCallsignInfo> getSpecialCallsignPairs();
266 bool addSpecialCallsign(
const QString &callsign,
int dxccId,
int cqz = -1,
int ituz = -1);
267 bool removeSpecialCallsign(
const QString &callsign);
271 int getKLogSubEntityForCallsign(
const QString &callsign,
int baseDxcc);
272 QHash<QString, int> getWorldData();
275 QStringList getEntitiesNames(
bool _dxccOnly =
true);
276 QStringList getEntitiesIds();
277 int getHowManyEntities();
278 int getMaxEntityID(
bool limit =
true);
279 QList<int> getListOfDXCCIds();
280 QStringList getOperatingYears(
const int _currentLog);
288 int getQSOonYear(
const int _year,
const int _logNumber,
const QList<int> &modeIds = {});
289 int getDXCConYear(
const int _year,
const int _logNumber,
const QList<int> &modeIds = {});
290 int getCQzonYear(
const int _year,
const int _logNumber,
const QList<int> &modeIds = {});
291 int getQSOsWithDXCC(
const int _dxcc,
const int _logNumber);
292 int getQSOsAtHour(
const int _hour,
const int _log);
293 int getQSOsAtHourOnBand(
const int _hour,
const int _band ,
const int _log);
294 int getQSOsOnMonth(
const int _month,
const int _log);
296 int getHowManyQSOInLog(
const int _log,
const QList<int> &modeIds = {});
297 int getHowManyConfirmedQSLInLog(
const int _log,
const QList<int> &modeIds = {});
298 int getHowManyQSLSentInLog(
const int _log);
300 int getQSOsWithContinent(
const QString &_cont,
const int _logNumber);
302 int getQSOsInBand(
const QString &_band,
const int _log);
303 int getQSOsInMode(
const QString &_mode,
const int _log);
304 int getDXCCInBand(
const int _bandid,
const bool _confirmed,
const int _log);
306 QList<QList<int>> getTop10QSOPerDXCC(
const int _log);
309 bool updateQSONumberPerLog();
311 bool newDXMarathon(
const int _dxcc,
const int _cq,
const int _year,
const int _logNumber);
313 QStringList getContestNames();
314 QStringList getContestCat(
const int _catn);
315 QStringList getContestOverlays();
321 int getLogNumberFromQSOId(
const int _qsoId);
323 QStringList getBandNames();
324 QStringList getPropModeList();
325 bool isValidPropMode(
const QString &_prop);
328 bool addSatellite(
const QString &_arrlId,
const QString &_name,
const QString &_downLink,
const QString &_upLink,
const QString &_mode,
int id = -1);
329 int getDBSatId(
const QString &_arrlId);
330 QStringList getSatellitesList();
331 Frequency getSatelliteUplink(
const QString &_sat,
int _pair=0);
332 Frequency getSatelliteDownlink(
const QString &_sat,
int _pair=0);
333 QString getSatelliteMode(
const QString &_sat);
334 QString getSatelliteFullUplink(
const QString &_sat);
335 QString getSatelliteFullDownlink(
const QString &_sat);
336 QString getSatelliteFullMode(
const QString &_sat);
337 QString getSatelliteName(
const QString &_sat);
338 QString getSateliteArrlIdFromId(
const int _id);
342 KLOG_DEPRECATED QStringList getQSLViaList();
343 int getHowManyQSOPerPropMode(
const QString &_p,
const int _logn);
350 int getNumberOfManagedLogs();
351 QStringList getListOfManagedLogs();
352 int getMaxLogNumber();
353 QString getStationCallSignFromLog(
const int _log);
354 QStringList getStationCallSignsFromLog(
const int _log);
355 QStringList getStationCallSignsFromLogWithLoTWPendingToSend(
const int _log);
356 QString getOperatorsFromLog(
const int _log);
357 QString getCommentsFromLog(
const int _log);
358 QString getLogDateFromLog(
const int _log);
360 bool addNewLog (
const QStringList _qs);
361 bool doesThisLogExist(
const int _log);
363 bool updateISONames();
364 QString getISOName(
const int _n);
365 bool addPrimarySubdivisions();
367 KLOG_DEPRECATED
bool setWAZAwardStatus(
const int _qsoId);
370 bool addDXCCEntitySubdivision(
const QString &_name,
const QString &_short,
const QString &_pref,
const QString &_group,
const int _regId,
const int _dxcc,
const int _cq,
const int _itu,
const QDate &_startDate,
const QDate &_endDate,
const bool _deleted);
371 QList<PrimarySubdivision> getPrimarySubDivisions(
const int _entity,
const QString &_pref);
375 KLOG_DEPRECATED QString getADIFValueFromRec(
const QSqlRecord &_rec,
const QString &_fieldName);
376 KLOG_DEPRECATED QString getADIFFromQSOQuery(QSqlRecord _rec, ExportMode _em = ModeADIF,
bool _justMarked =
false,
bool _onlyRequested =
false,
int _logN = -1);
379 bool showInvalidCallMessage(
const QString &_call);
381 QList<QSO*> getSatGridStats(
int _log=-1);
382 QList<QSO*> getGridStats(
int _log=-1);
383 QList<QSO*> getSatDXCCStats(
int _log=-1);
385 int getFieldInBand(ValidFieldsForStats _field,
const QString &_band,
bool confirmedOnly, QString _mode =
"ALL",
int _log=-1,
const QList<int> &modeIds = {});
391 bool beginTransaction();
392 bool commitTransaction();
393 bool rollbackTransaction();
396 void loadDuplicateCache(
int logId);
397 void clearDuplicateCache();
398 void addDuplicateCache (
int _qsoId,
const QSO &qso,
const int _bandId,
const int _modeId);
399 void removeDuplicateCache(
int _qsoId);
400 int findDuplicateId(
const QString &call,
const QDateTime &newTime,
int bandId,
int modeId,
int marginSeconds);
401 inline int findDuplicateId(
const QSO &qso,
int marginSeconds)
403 int modeId = getIdFromModeName(qso.getSubmode().isEmpty() ? qso.getMode() : qso.getSubmode());
404 return findDuplicateId(qso.getCall(), qso.getDateTimeOn(), getIdFromBandName(qso.getBand()), modeId, marginSeconds);
411 typedef QPair<int, QDateTime> QsoInfo;
412 static QDateTime normalizeForCache(
const QDateTime &dt)
415 return QDateTime(dt.date(), QTime(dt.time().hour(),
423 QSqlQuery m_insertQuery;
424 QSqlQuery m_updateQuery;
425 bool m_queriesPrepared =
false;
427 QStringList sortBandIdBottonUp(
const QStringList _qs);
428 Frequency getFreqFromRange(
const QString &_fr,
int _pair, FreqUnits FreUnits);
429 QStringList getColumnNamesFromTable(
const QString &_tableName);
430 QString getStringQueryStationCallSign (
const QString &_a);
431 QString getStringQueryMyGrid (
const QString &_a);
432 QString getStringQueryLogNumber (
const int _a);
433 QString getAddQueryString();
434 QString getModifyQueryString();
435 QSqlQuery getPreparedQuery(
const QString &_s,
const QSO &_qso);
436 void prepareStaticQueries();
437 void bindQSOValues(QSqlQuery &query,
const QSO &_qso);
441 QString getStringQueryForQSOsLists(
const QString &_stationCallsign,
442 const OnLineProvider &_provider,
443 const bool _justModified,
444 const QDate &_startDate,
445 const QDate &_endDate,
447 QString getQueryJustModifiedString(
const OnLineProvider &_provider,
const bool _justModified);
449 void logEvent(
const QString &_func,
const QString &_msg, DebugLogLevel _level);
454 DebugLogLevel logLevel;
465 struct CacheLoadResult {
466 QList<BandEntry> bands;
467 QList<ModeEntry> modes;
468 QList<EntityEntry> entities;
471 static CacheLoadResult loadCacheBG(
const QString &dbPath);
472 void ensureCacheReady();
473 QFuture<CacheLoadResult> m_cacheFuture;
474 bool m_cachePopulated =
false;
479 using DupeCacheData = QMultiHash<QString, QsoInfo>;
480 static DupeCacheData loadDupeCacheBG(
const QString &dbPath,
int logId);
481 void ensureDupeCacheReady();
482 QFuture<DupeCacheData> m_dupeCacheFuture;
483 bool m_dupeCacheLoading =
false;
485 QMultiHash<QString, QsoInfo>
487 static QString generateGroupingKey(
const QString &call,
int bandId,
int modeId);
490 QMetaObject::Connection connections;
494 void slotCaptureDebugLogs(
const QString &_func,
const QString &_msg, DebugLogLevel _l);
496 void qsoFound(
const QStringList _qs);
497 void queryError(QString functionFailed, QString errorCodeS, QString nativeError, QString failedQuery);
498 void debugLog (QString _func, QString _msg, DebugLogLevel _level);
499 void qsoDeleted(
int qsoId);
503 #endif //DATAPROXY_SQLITE_H Definition: database.h:49
Definition: utilities.h:54
Definition: dataproxy_sqlite.h:259
Definition: datacache.h:62
Definition: dataproxy_sqlite.h:59
Definition: frequency.h:36
Definition: dataproxy_sqlite.h:66