int NFCPropertyTrailModule::OnObjectRecordEvent(const NFGUID& self, const RECORD_EVENT_DATA& xEventData, const NFIDataList::TData& oldVar, const NFIDataList::TData& newVar) { std::ostringstream stream; NF_SHARE_PTR<NFIRecord> xRecord = m_pKernelModule->FindRecord(self, xEventData.strRecordName); if (nullptr == xRecord) { return 0; } switch (xEventData.nOpType) { case NFIRecord::RecordOptype::Add: { NFCDataList xDataList; bool bRet = xRecord->QueryRow(xEventData.nRow, xDataList); if (bRet) { stream << " Trail Add Row[" << xEventData.nRow << "]"; for (int j = 0; j < xDataList.GetCount(); ++j) { stream << " [" << j << "] " << xDataList.StringValEx(j); } m_pLogModule->LogRecord(NFILogModule::NF_LOG_LEVEL::NLL_INFO_NORMAL, self, xRecord->GetName(), stream.str(), __FUNCTION__, __LINE__); } } break; case NFIRecord::RecordOptype::Del: { stream << " Trail Del Row[" << xEventData.nRow << "]"; m_pLogModule->LogRecord(NFILogModule::NF_LOG_LEVEL::NLL_INFO_NORMAL, self, xRecord->GetName(), stream.str(), __FUNCTION__, __LINE__); } break; case NFIRecord::RecordOptype::Swap: { stream << " Trail Swap Row[" << xEventData.nRow << "] Row[" << xEventData.nCol << "]"; m_pLogModule->LogRecord(NFILogModule::NF_LOG_LEVEL::NLL_INFO_NORMAL, self, xRecord->GetName(), stream.str(), __FUNCTION__, __LINE__); } break; case NFIRecord::RecordOptype::Create: break; case NFIRecord::RecordOptype::Update: { stream << " Trail UpData Row[" << xEventData.nRow << "] Col[" << xEventData.nCol << "]"; stream << " [Old] " << oldVar.StringValEx(); stream << " [New] " << newVar.StringValEx(); m_pLogModule->LogRecord(NFILogModule::NF_LOG_LEVEL::NLL_INFO_NORMAL, self, xRecord->GetName(), stream.str(), __FUNCTION__, __LINE__); } break; case NFIRecord::RecordOptype::Cleared: break; case NFIRecord::RecordOptype::Sort: break; default: break; } return 0; }