void DBItemDAO::updateAssocTable(BillItem::Ptr item) { qCDebug(lcPersistence) << "Entering DBItemDAO::updateAssocTable with param " + item->toString(); QSqlQuery query(m_database); // remove all old entries query.prepare("DELETE FROM MATERIAL_ITEM_ASSOC WHERE ITEM_ID = ?"); query.addBindValue(item->id()); if (!query.exec()) { qCCritical(lcPersistence) << "removing old material-item assocs failed" + query.lastError().text(); throw new PersistenceException("removing old material-item assocs failed" + query.lastError().text()); } QSqlQuery insertQuery(m_database); insertQuery.prepare("INSERT INTO MATERIAL_ITEM_ASSOC VALUES (?,?,?);"); QMap<Material::Ptr, double> material = item->material(); QMap<Material::Ptr, double>::iterator it; for (it = material.begin(); it != material.end(); ++it) { insertQuery.addBindValue(it.key()->id()); insertQuery.addBindValue(item->id()); insertQuery.addBindValue(it.value()); if (!insertQuery.exec()) { qCCritical(lcPersistence) << "adding material-item assoc failed" + insertQuery.lastError().text(); throw new PersistenceException("adding material-item assocs failed" + insertQuery.lastError().text()); } } }
void DBHTMLFileLetterDAO::create(Letter::Ptr item) { qCDebug(lcPersistence) << "Entering DBHTMLFileLetterDAO::create with param " + item->toString(); try { m_validator->validateForCreate(item); } catch (ValidationException *e) { throw new PersistenceException(e); } QString filePath = createHtmlFile(item); QSqlQuery insertQuery(m_database); insertQuery.prepare("INSERT INTO LETTER VALUES(NULL, ?, ?, ?);"); insertQuery.addBindValue(item->date()); insertQuery.addBindValue(item->customer()->id()); insertQuery.addBindValue(filePath); if (!insertQuery.exec()) { QFile::remove(filePath); qCCritical(lcPersistence) << "DBHTMLFileLetterDAO::create failed: " + insertQuery.lastError().text(); throw new PersistenceException("DBHTMLFileLetterDAO::create failed: " + insertQuery.lastError().text()); } item->setId(insertQuery.lastInsertId().toInt()); }
void DBOfferItemDAO::create(BillItem::Ptr item) { qCDebug(lcPersistence) << "Entering DBOfferItemDAO::create with param " + item->toString(); DBItemDAO::create(item); QSqlQuery insertQuery(m_database); insertQuery.prepare("INSERT INTO OFFER_ITEM VALUES(?, NULL);"); insertQuery.addBindValue(item->id()); if (!insertQuery.exec()) { qCCritical(lcPersistence) << "DBOfferItemDAO::create failed: " + insertQuery.lastError().text(); throw new PersistenceException("DBOfferItemDAO::create failed: " + insertQuery.lastError().text()); } }
qint64 HistoryManager::getRecord(const QLatin1String &table, const QVariantHash &values) { const QStringList keys = values.keys(); QStringList placeholders; for (int i = 0; i < keys.count(); ++i) { placeholders.append(QString('?')); } QSqlQuery selectQuery(QSqlDatabase::database(QLatin1String("browsingHistory"))); selectQuery.prepare(QStringLiteral("SELECT \"id\" FROM \"%1\" WHERE \"%2\" = ?;").arg(table).arg(keys.join(QLatin1String("\" = ? AND \"")))); for (int i = 0; i < keys.count(); ++i) { selectQuery.bindValue(i, values[keys.at(i)]); } selectQuery.exec(); if (selectQuery.first()) { return selectQuery.record().field(QLatin1String("id")).value().toLongLong(); } QSqlQuery insertQuery(QSqlDatabase::database(QLatin1String("browsingHistory"))); insertQuery.prepare(QStringLiteral("INSERT INTO \"%1\" (\"%2\") VALUES(%3);").arg(table).arg(keys.join(QLatin1String("\", \""))).arg(placeholders.join(QLatin1String(", ")))); for (int i = 0; i < keys.count(); ++i) { insertQuery.bindValue(i, values[keys.at(i)]); } insertQuery.exec(); return insertQuery.lastInsertId().toULongLong(); }
void DBItemDAO::create(BillItem::Ptr item) { qCDebug(lcPersistence) << "Entering DBItemDAO::create with param " + item->toString(); try { m_validator->validateForCreate(item); } catch (ValidationException *e) { throw new PersistenceException(e); } QSqlQuery insertQuery(m_database); insertQuery.prepare("INSERT INTO ITEM VALUES(NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0);"); insertQuery.addBindValue(item->description()); insertQuery.addBindValue(item->workingHours()); insertQuery.addBindValue(item->wagePerHour().cents()); insertQuery.addBindValue(item->materialNetCost().cents()); insertQuery.addBindValue(item->materialCost().cents()); insertQuery.addBindValue(item->materialOverhead()); insertQuery.addBindValue(item->factoryOverhead()); insertQuery.addBindValue(item->profit()); insertQuery.addBindValue(item->cashback()); insertQuery.addBindValue(item->taxRate()); insertQuery.addBindValue(item->price().cents()); insertQuery.addBindValue(item->unit()); insertQuery.addBindValue(item->quantity()); if (!insertQuery.exec()) { qCCritical(lcPersistence) << "DBItemDAO::create failed: " + insertQuery.lastError().text(); throw new PersistenceException("DBItemDAO::create failed: " + insertQuery.lastError().text()); } item->setId(insertQuery.lastInsertId().toInt()); updateAssocTable(item); }
void CookieDatabaseBackingStore::invokeOpen(const String& cookieJar) { ASSERT(isCurrentThread()); if (m_db.isOpen()) close(); if (!m_db.open(cookieJar)) { LOG_ERROR("Could not open the cookie database. No cookie will be stored!"); LOG_ERROR("SQLite Error Message: %s", m_db.lastErrorMsg()); return; } m_db.executeCommand("PRAGMA locking_mode=EXCLUSIVE;"); m_db.executeCommand("PRAGMA journal_mode=TRUNCATE;"); const String primaryKeyFields("PRIMARY KEY (protocol, host, path, name)"); const String databaseFields("name TEXT, value TEXT, host TEXT, path TEXT, expiry DOUBLE, lastAccessed DOUBLE, isSecure INTEGER, isHttpOnly INTEGER, creationTime DOUBLE, protocol TEXT"); // Update table to add the new column creationTime and protocol for backwards compatability. upgradeTableIfNeeded(databaseFields, primaryKeyFields); // Create table if not exsist in case that the upgradeTableIfNeeded() failed accidentally. String createTableQuery("CREATE TABLE IF NOT EXISTS "); createTableQuery += m_tableName; // This table schema is compliant with Mozilla's. createTableQuery += " (" + databaseFields + ", " + primaryKeyFields+");"; if (!m_db.executeCommand(createTableQuery)) { LOG_ERROR("Could not create the table to store the cookies into. No cookie will be stored!"); LOG_ERROR("SQLite Error Message: %s", m_db.lastErrorMsg()); close(); return; } String insertQuery("INSERT OR REPLACE INTO "); insertQuery += m_tableName; insertQuery += " (name, value, host, path, expiry, lastAccessed, isSecure, isHttpOnly, creationTime, protocol) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10);"; m_insertStatement = new SQLiteStatement(m_db, insertQuery); if (m_insertStatement->prepare()) { LOG_ERROR("Cannot save cookies"); LOG_ERROR("SQLite Error Message: %s", m_db.lastErrorMsg()); } String updateQuery("UPDATE "); updateQuery += m_tableName; // The where statement is chosen to match CookieMap key. updateQuery += " SET name = ?1, value = ?2, host = ?3, path = ?4, expiry = ?5, lastAccessed = ?6, isSecure = ?7, isHttpOnly = ?8, creationTime = ?9, protocol = ?10 where protocol = ?10 and name = ?1 and host = ?3 and path = ?4;"; m_updateStatement = new SQLiteStatement(m_db, updateQuery); if (m_updateStatement->prepare()) { LOG_ERROR("Cannot update cookies"); LOG_ERROR("SQLite Error Message: %s", m_db.lastErrorMsg()); } String deleteQuery("DELETE FROM "); deleteQuery += m_tableName; // The where statement is chosen to match CookieMap key. deleteQuery += " WHERE name=?1 and host=?2 and path=?3 and protocol=?4;"; m_deleteStatement = new SQLiteStatement(m_db, deleteQuery); if (m_deleteStatement->prepare()) { LOG_ERROR("Cannot delete cookies"); LOG_ERROR("SQLite Error Message: %s", m_db.lastErrorMsg()); } }
void TimeTrackerConfigurationWidget::on_btnNewCompany_clicked() { QString fileName = QFileDialog::getSaveFileName(this, "Database File", "", "Image Files (*.sqlite)"); if(fileName.toStdString().empty()) { std::cout << "Filename was empty." << std::endl; return; } if(QFile::exists(fileName)) { QMessageBox::warning(this, "Time Tracker Configuration", "This company database already exists. Please choose a different file.", QMessageBox::Ok); return; } if(this->CompanyDatabase) { delete this->CompanyDatabase; this->CompanyDatabase = NULL; } QSqlDatabase::removeDatabase("CompanyDatabase"); this->CompanyDatabase = new QSqlDatabase(QSqlDatabase::addDatabase("QSQLITE")); this->CompanyDatabase->setDatabaseName(fileName); if (this->CompanyDatabase->open()) { std::cout << "Opened." << std::endl; } else { std::cerr << "Could not open database" << std::endl; std::cerr << this->CompanyDatabase->lastError().text().toStdString() << std::endl; } QSqlQuery createQuery(*(this->CompanyDatabase)); bool createSuccess = createQuery.exec("create table CompanyTable " "(id integer primary key, " "CompanyName TEXT, " "PayrollClientNumber TEXT, " "PayDay TEXT, " "PayrollFaxNumber TEXT, " "MOTD TEXT, " "PayrollContact TEXT, " "OwnerName TEXT, " "CompanyPhone TEXT, " "PayrollSubmission TEXT)"); if(!createSuccess) { std::cerr << "Could not create table!" << std::endl; std::cerr << createQuery.lastError().text().toStdString() << std::endl; return; } // Populate the table with default values QSqlQuery insertQuery(*(this->CompanyDatabase)); insertQuery.prepare("INSERT INTO CompanyTable (id, CompanyName, PayrollClientNumber, PayDay, PayrollFaxNumber, MOTD, PayrollContact, OwnerName, CompanyPhone, PayrollSubmission) " "VALUES (:id, :CompanyName, :PayrollClientNumber, :PayDay, :PayrollFaxNumber, :MOTD, :PayrollContact, :OwnerName, :CompanyPhone, :PayrollSubmission)"); insertQuery.bindValue(":id", 0); insertQuery.bindValue(":CompanyName", "CompanyName"); insertQuery.bindValue(":PayrollClientNumber", "PayrollClientNumber"); insertQuery.bindValue(":PayDay", "PayDay"); insertQuery.bindValue(":PayrollFaxNumber", "PayrollFaxNumber"); insertQuery.bindValue(":MOTD", "MOTD"); insertQuery.bindValue(":PayrollContact", "PayrollContact"); insertQuery.bindValue(":OwnerName", "OwnerName"); insertQuery.bindValue(":CompanyPhone", "CompanyPhone"); insertQuery.bindValue(":PayrollSubmission", "PayrollSubmission"); bool insertSuccess = insertQuery.exec(); if(!insertSuccess) { std::cerr << "Could not insert values!" << std::endl; std::cerr << "insertQuery last error: " << insertQuery.lastError().text().toStdString() << std::endl; return; } EditCompanyWidget* editCompanyWidget = new EditCompanyWidget(this->CompanyDatabase); editCompanyWidget->exec(); }
static int really_do_dns(AtomPtr name, ObjectPtr object) { int rc; DnsQueryPtr query; AtomPtr message = NULL; int id; AtomPtr a = NULL; if(a == NULL) { if(name == atomLocalhost || name == atomLocalhostDot) { char s[1 + sizeof(HostAddressRec)]; memset(s, 0, sizeof(s)); s[0] = DNS_A; s[1] = 4; s[2] = 127; s[3] = 0; s[4] = 0; s[5] = 1; a = internAtomN(s, 1 + sizeof(HostAddressRec)); if(a == NULL) { abortObject(object, 501, internAtom("Couldn't allocate address")); notifyObject(object); errno = ENOMEM; return -1; } } } if(a == NULL) { struct in_addr ina; rc = inet_aton(name->string, &ina); if(rc == 1) { char s[1 + sizeof(HostAddressRec)]; memset(s, 0, sizeof(s)); s[0] = DNS_A; s[1] = 4; memcpy(s + 2, &ina, 4); a = internAtomN(s, 1 + sizeof(HostAddressRec)); if(a == NULL) { abortObject(object, 501, internAtom("Couldn't allocate address")); notifyObject(object); errno = ENOMEM; return -1; } } } #ifdef HAVE_IPv6 if(a == NULL) a = rfc2732(name); #endif if(a) { object->headers = a; object->age = current_time.tv_sec; object->expires = current_time.tv_sec + 240; object->flags &= ~(OBJECT_INITIAL | OBJECT_INPROGRESS); notifyObject(object); return 0; } rc = establishDnsSocket(); if(rc < 0) { do_log_error(L_ERROR, -rc, "Couldn't establish DNS socket.\n"); message = internAtomError(-rc, "Couldn't establish DNS socket"); goto fallback; } /* The id is used to speed up detecting replies to queries that are no longer current -- see dnsReplyHandler. */ id = (idSeed++) & 0xFFFF; query = malloc(sizeof(DnsQueryRec)); if(query == NULL) { do_log(L_ERROR, "Couldn't allocate DNS query.\n"); message = internAtom("Couldn't allocate DNS query"); goto fallback; } query->id = id; query->inet4 = NULL; query->inet6 = NULL; query->name = name; query->time = current_time.tv_sec; query->object = retainObject(object); query->timeout = 4; query->timeout_handler = NULL; query->next = NULL; query->timeout_handler = scheduleTimeEvent(query->timeout, dnsTimeoutHandler, sizeof(query), &query); if(query->timeout_handler == NULL) { do_log(L_ERROR, "Couldn't schedule DNS timeout handler.\n"); message = internAtom("Couldn't schedule DNS timeout handler"); goto free_fallback; } insertQuery(query); object->flags |= OBJECT_INPROGRESS; rc = sendQuery(query); if(rc < 0) { if(rc != -EWOULDBLOCK && rc != -EAGAIN && rc != -ENOBUFS) { object->flags &= ~OBJECT_INPROGRESS; message = internAtomError(-rc, "Couldn't send DNS query"); goto remove_fallback; } /* else let it timeout */ } releaseAtom(message); return 1; remove_fallback: removeQuery(query); free_fallback: releaseObject(query->object); cancelTimeEvent(query->timeout_handler); free(query); fallback: if(dnsUseGethostbyname >= 1) { releaseAtom(message); do_log(L_WARN, "Falling back on gethostbyname.\n"); return really_do_gethostbyname(name, object); } else { abortObject(object, 501, message); notifyObject(object); return 1; } }
void FlightStatuses::setStatusCode(StatusCode code) { m_statusCode = code; insertQuery("code", toString(code)); emit statusCodeChanged(); }