void initializeDBLogger(const char * server, const char *user, const char * password, const char * database, DEALLOCATE_FUNC_POINTER func_p) { EventProcessor = createEventProcessor(logInThread, cloneExceptionPointer, func_p); memset(ErrorStr, 0, sizeof(ErrorStr)); if (createDatabaseConnection(server, user, password, database) == SUCCESS) { sprintf(ErrorStr, "DB connection created."); } else { sprintf(ErrorStr, "Failed to Create DB Connection. Error: %s", getString((char *) mysql_error(Conn))); } logError(ErrorStr); if (prepareQueries() == SUCCESS) { sprintf(ErrorStr, "Queries Prepared Successfully"); } else { sprintf(ErrorStr, "Failed to Prepare Queries. Error: %s", getString( (char *) mysql_error(Conn))); } logError(ErrorStr); }
QString ibanBicData::iban2Bic(const QString& iban) { Q_ASSERT(iban.length() < 1 || iban.at(0).isLetterOrNumber()); Q_ASSERT(iban.length() < 2 || iban.at(1).isLetterOrNumber()); Q_ASSERT(iban == payeeIdentifiers::ibanBic::ibanToElectronic(iban)); if (iban.length() <= 4) // This iban is to short to extract a BIC return QString(""); // Get bank identifier const QString bankCode = extractBankIdentifier(iban); if (bankCode.isEmpty()) return bankCode; // keep .isEmpty() or .isNull() // Get countryCode const QString countryCode = iban.left(2); // Get services which support iban2bic and have a database entry KService::List services = KServiceTypeTrader::self()->query("KMyMoney/IbanBicData", QString("(\'%1' ~in [X-KMyMoney-CountryCodes] or '*' in [X-KMyMoney-CountryCodes]) and true == [X-KMyMoney-IBAN-2-BIC-supported] and exist [X-KMyMoney-Bankdata-Database]").arg(countryCode) ); if (services.isEmpty()) return QString(); QSqlDatabase db = createDatabaseConnection(services.first()->property(QLatin1String("X-KMyMoney-Bankdata-Database"), QVariant::String).toString()); if (!db.isOpen()) // This is an error return QString(); QSqlQuery query = QSqlQuery(db); query.prepare("SELECT bic FROM institutions WHERE bankcode=? and country=?"); query.bindValue(0, bankCode); query.bindValue(1, countryCode); if (!query.exec()) { qWarning() << QString("Could not execute query on \"%1\" to receive BIC. Error: %2").arg(db.databaseName()).arg(query.lastError().text()); return QString(); } if (query.next()) { return query.value(0).toString(); } return QString(""); }
ibanBicData::bicAllocationStatus ibanBicData::isBicAllocated(const QString& bic) { // Get countryCode const QString countryCode = bic.mid(4, 2); if (countryCode.length() != 2) return bicNotAllocated; // Get services which have a database entry KService::List services = KServiceTypeTrader::self()->query("KMyMoney/IbanBicData", QString("(\'%1' ~in [X-KMyMoney-CountryCodes] or '*' in [X-KMyMoney-CountryCodes]) and exist [X-KMyMoney-Bankdata-Database]").arg(countryCode) ); if (services.isEmpty()) return bicAllocationUncertain; QSqlDatabase db = createDatabaseConnection(services.first()->property(QLatin1String("X-KMyMoney-Bankdata-Database"), QVariant::String).toString()); if (!db.isOpen()) // This is an error return bicAllocationUncertain; QSqlQuery query(db); query.prepare("SELECT ? IN (SELECT bic FROM institutions)"); query.bindValue(0, bic); if (!query.exec() || !query.next()) { qWarning() << QString("Could not execute query on \"%1\" to check if bic exists. Error: %2").arg(db.databaseName()).arg(query.lastError().text()); return bicAllocationUncertain; } if (query.value(0).toBool()) // Bic found return bicAllocated; // Bic not found, test if database is complete if (services.first()->property(QLatin1String("X-KMyMoney-Bankdata-IsComplete"), QVariant::Bool).toBool()) return bicNotAllocated; return bicAllocationUncertain; }
QString ibanBicData::bankNameByBic(QString bic) { if (bic.length() == 8) bic += QLatin1String("XXX"); else if (bic.length() != 11) return QString(); const QString countryCode = bic.mid(4, 2); // Get services which have a database entry KService::List services = KServiceTypeTrader::self()->query("KMyMoney/IbanBicData", QString("(\'%1' ~in [X-KMyMoney-CountryCodes] or '*' in [X-KMyMoney-CountryCodes]) and exist [X-KMyMoney-Bankdata-Database]").arg(countryCode) ); if (services.isEmpty()) return QString(); QSqlDatabase db = createDatabaseConnection(services.first()->property("X-KMyMoney-Bankdata-Database", QVariant::String).toString()); if (!db.isOpen()) // This is an error return QString(); QSqlQuery query = QSqlQuery(db); query.prepare("SELECT name FROM institutions WHERE bic=?"); query.bindValue(0, bic); if (!query.exec()) { qWarning() << QString("Could not execute query on \"%1\" to receive bank name. Error: %2").arg(db.databaseName()).arg(query.lastError().text()); return QString(); } if (query.next()) { return query.value(0).toString(); } return QString(""); }
Storage::Storage(QObject *parent) : QObject(parent) { createDatabaseConnection(); }