void terrama2::core::ProcessLogger::log(MessageType messageType, const std::string &description, RegisterId registerId) const { if(!isValid_) throw terrama2::core::LogException() << ErrorDescription("Error on log!"); if(tableName_.empty() || messagesTableName_.empty()) { QString errMsg = QObject::tr("Can not find log tables names."); TERRAMA2_LOG_ERROR() << errMsg; throw terrama2::core::LogException() << ErrorDescription(errMsg); } std::shared_ptr< te::dt::TimeInstantTZ> now(TimeUtils::nowUTC()); std::string escapedDescription(description); // TODO: Remove it when terralib escape work properly std::replace(escapedDescription.begin(), escapedDescription.end(), '\'', ' '); boost::format queryMessages("INSERT INTO " + messagesTableName_ + " (log_id, type, description, timestamp) VALUES(" + QString::number(registerId).toStdString() + ", %1%, '%2%', '%3%')"); queryMessages.bind_arg(1, static_cast<int>(messageType)); queryMessages.bind_arg(2, escapedDescription); queryMessages.bind_arg(3, now->toString()); std::shared_ptr< te::da::DataSourceTransactor > transactor = dataSource_->getTransactor(); transactor->execute(transactor->escape(queryMessages.str())); transactor->commit(); }
bool QMessageStore::removeMessages(const QMessageFilter& filter, QMessageManager::RemovalOption option) { QMessageIdList ids = queryMessages(filter, QMessageSortOrder(), 0, 0); for (int i=0; i < ids.count(); i++) { if (ids[i].toString().startsWith("MO_")) { if (!ModestEngine::instance()->removeMessage(ids[i], option)) { return false; } } else if(!EventLoggerEngine::instance()->deleteMessage(ids[i])) return false; } return true; }
int QMessageStore::countMessages(const QMessageFilter& filter) const { return queryMessages(filter).count(); }