bool NFCProperty::SetObject(const NFGUID& value) { if (eType != TDATA_OBJECT) { return false; } if (!mxData.get()) { //本身是空就是因为没数据,还来个没数据的就不存了 if (value.IsNull()) { return false; } mxData = NF_SHARE_PTR<NFIDataList::TData>(NF_NEW NFIDataList::TData(TDATA_OBJECT)); mxData->SetObject(NFGUID()); } if (value == mxData->GetObject()) { return false; } NFCDataList::TData oldValue; oldValue = *mxData; mxData->SetObject(value); OnEventHandler(oldValue, *mxData); return true; }
bool NFCRecord::SwapRowInfo(const int nOriginRow, const int nTargetRow) { if (!IsUsed(nOriginRow)) { return false; } if (ValidRow(nOriginRow) && ValidRow(nTargetRow)) { for (int i = 0; i < GetCols(); ++i) { NF_SHARE_PTR<NFData> pOrigin = mtRecordVec.at(GetPos(nOriginRow, i)); mtRecordVec[GetPos(nOriginRow, i)] = mtRecordVec.at(GetPos(nTargetRow, i)); mtRecordVec[GetPos(nTargetRow, i)] = pOrigin; } int nOriginUse = mVecUsedState[nOriginRow]; mVecUsedState[nOriginRow] = mVecUsedState[nTargetRow]; mVecUsedState[nTargetRow] = nOriginUse; RECORD_EVENT_DATA xEventData; xEventData.nOpType = RECORD_EVENT_DATA::Swap; xEventData.nRow = nOriginRow; xEventData.nCol = nTargetRow; xEventData.strRecordName = mstrRecordName; NFData xData; OnEventHandler(mSelf, xEventData, xData, xData); return true; } return false; }
void NFCProperty::SetValue(const NFIDataList::TData& xData) { if (eType != xData.GetType()) { return; } if (xData.IsNullValue()) { return; } if (nullptr == mxData) { mxData = NF_SHARE_PTR<NFIDataList::TData>(NF_NEW NFIDataList::TData(xData)); } NFCDataList::TData oldValue; oldValue = *mxData; mxData->variantData = xData.variantData; NFCDataList::TData newValue; newValue = *mxData; OnEventHandler(oldValue, newValue); }
bool NFCProperty::SetFloat(const double value) { if (eType != TDATA_FLOAT) { return false; } if (!mxData.get()) { //本身是空就是因为没数据,还来个没数据的就不存了 if (std::abs(value) < 0.001) { return false; } mxData = NF_SHARE_PTR<NFIDataList::TData>(NF_NEW NFIDataList::TData(TDATA_FLOAT)); mxData->SetFloat(0.0); } if (value - mxData->GetFloat() < 0.001) { return false; } NFCDataList::TData oldValue; oldValue = *mxData; mxData->SetFloat(value); OnEventHandler(oldValue, *mxData); return true; }
bool NFCProperty::SetString(const std::string& value) { if (eType != TDATA_STRING) { return false; } if (!mxData.get()) { //本身是空就是因为没数据,还来个没数据的就不存了 if (value.empty()) { return false; } mxData = NF_SHARE_PTR<NFIDataList::TData>(NF_NEW NFIDataList::TData(TDATA_STRING)); mxData->SetString(NULL_STR); } if (value == mxData->GetString()) { return false; } NFCDataList::TData oldValue; oldValue = *mxData; mxData->SetString(value); OnEventHandler(oldValue, *mxData); return true; }
bool NFCProperty::SetInt(const NFINT64 value) { if (eType != TDATA_INT) { return false; } if (!mxData.get()) { //本身是空就是因为没数据,还来个没数据的就不存了 if (0 == value) { return false; } mxData = NF_SHARE_PTR<NFIDataList::TData>(NF_NEW NFIDataList::TData(TDATA_INT)); mxData->SetInt(0); } if (value == mxData->GetInt()) { return false; } NFCDataList::TData oldValue; oldValue = *mxData; mxData->SetInt(value); OnEventHandler(oldValue, *mxData); return true; }
void NFCProperty::SetValue(const NFIDataList::TData& TData) { if (eType != TData.nType) { return; } if (!m_pTData.get()) { if (!NFIDataList::Valid(TData)) { return; } m_pTData = NF_SHARE_PTR<NFIDataList::TData>(NF_NEW NFIDataList::TData()); m_pTData->nType = TData.nType; m_pTData->variantData = TData.variantData; } NFCDataList oldValue; oldValue.Append(*m_pTData); m_pTData->variantData = TData.variantData; NFCDataList newValue; newValue.Append(*m_pTData); OnEventHandler(oldValue , newValue); }
bool NFCRecord::SetVector3(const int nRow, const int nCol, const NFVector3& value) { if (!ValidPos(nRow, nCol)) { return false; } if (TDATA_VECTOR3 != GetColType(nCol)) { return false; } if (!IsUsed(nRow)) { return false; } NFData var; var.SetVector3(value); NF_SHARE_PTR<NFData>& pVar = mtRecordVec.at(GetPos(nRow, nCol)); //must have memory if (nullptr == pVar) { return false; } if (var == *pVar) { return false; } if (mtRecordCallback.size() == 0) { pVar->SetVector3(value); } else { NFData oldValue; oldValue.SetVector3(pVar->GetVector3()); pVar->SetVector3(value); RECORD_EVENT_DATA xEventData; xEventData.nOpType = RECORD_EVENT_DATA::Update; xEventData.nRow = nRow; xEventData.nCol = nCol; xEventData.strRecordName = mstrRecordName; OnEventHandler(mSelf, xEventData, oldValue, *pVar); } return true; }
bool NFCRecord::SetObject(const int nRow, const int nCol, const NFGUID& value) { if (!ValidPos(nRow, nCol)) { return false; } if (TDATA_OBJECT != GetColType(nCol)) { return false; } if (!IsUsed(nRow)) { return false; } NFIDataList::TData var; var.SetObject(value); NF_SHARE_PTR<NFIDataList::TData>& pVar = mtRecordVec.at(GetPos(nRow, nCol)); //must have memory if (nullptr == pVar) { return false; } if (var == *pVar) { return false; } NFCDataList::TData oldValue; oldValue.SetObject(pVar->GetObject()); pVar->variantData = value; RECORD_EVENT_DATA xEventData; xEventData.nOpType = Update; xEventData.nRow = nRow; xEventData.nCol = nCol; xEventData.strRecordName = mstrRecordName; OnEventHandler(mSelf, xEventData, oldValue, *pVar); return true; }
bool NFCProperty::SetObject(const NFIDENTID& value) { if (eType != TDATA_OBJECT) { return false; } NFIDataList::TData TData; TData.variantData = value; TData.nType = TDATA_OBJECT; if (!m_pTData.get()) { //本身是空就是因为没数据,还来个没数据的就不存了 if (!NFIDataList::Valid(TData)) { return false; } m_pTData = NF_SHARE_PTR<NFIDataList::TData>(NF_NEW NFIDataList::TData()); m_pTData->nType = TDATA_OBJECT; m_pTData->variantData = (NFINT64)0; } if (TData.variantData == m_pTData->variantData) { return false; } if (TDATA_OBJECT == m_pTData->nType) { NFCDataList oldValue; oldValue.Append(*m_pTData); m_pTData->variantData = value; NFCDataList newValue; newValue.Append(*m_pTData); OnEventHandler(oldValue , newValue); return true; } return false; }
bool NFCProperty::SetDouble(const double value) { if (eType != TDATA_DOUBLE) { return false; } NFIDataList::TData TData; TData.variantData = value; TData.nType = TDATA_DOUBLE; if (!m_pTData.get()) { //本身是空就是因为没数据,还来个没数据的就不存了 if (!NFIDataList::Valid(TData)) { return false; } m_pTData = NF_SHARE_PTR<NFIDataList::TData>(NF_NEW NFIDataList::TData()); m_pTData->nType = TDATA_DOUBLE; m_pTData->variantData = (double)0.0f; } if (TData.variantData == m_pTData->variantData) { return false; } if (TDATA_DOUBLE == m_pTData->nType) { NFCDataList oldValue; oldValue.Append(*m_pTData); m_pTData->variantData = value; NFCDataList newValue; newValue.Append(*m_pTData); OnEventHandler(oldValue , newValue); return true; } return false; }
bool NFCProperty::SetString(const std::string& value) { if (eType != TDATA_STRING) { return false; } NFIDataList::TData TData; TData.variantData = value; TData.nType = TDATA_STRING; if (!m_pTData.get()) { //本身是空就是因为没数据,还来个没数据的就不存了 if (!NFIDataList::Valid(TData)) { return false; } m_pTData = NF_SHARE_PTR<NFIDataList::TData>(NF_NEW NFIDataList::TData()); m_pTData->nType = TDATA_STRING; m_pTData->variantData = NULL_STR; } if (TData.variantData == m_pTData->variantData) { return false; } if (TDATA_STRING == m_pTData->nType) { NFCDataList oldValue; oldValue.Append(*m_pTData); m_pTData->variantData = value; NFCDataList newValue; newValue.Append(*m_pTData); OnEventHandler(oldValue , newValue); return true; } return false; }
bool NFCRecord::SetRow(const int nRow, const NFDataList & var) { if (var.GetCount() != GetCols()) { return false; } if (!IsUsed(nRow)) { return false; } for (int i = 0; i < GetCols(); ++i) { if (var.Type(i) != GetColType(i)) { return false; } } for (int i = 0; i < GetCols(); ++i) { NF_SHARE_PTR<NFData>& pVar = mtRecordVec.at(GetPos(nRow, i)); if (nullptr == pVar) { pVar = NF_SHARE_PTR<NFData>(NF_NEW NFData(var.Type(i))); } NFData oldValue = *pVar; pVar->variantData = var.GetStack(i)->variantData; RECORD_EVENT_DATA xEventData; xEventData.nOpType = RECORD_EVENT_DATA::Update; xEventData.nRow = nRow; xEventData.nCol = i; xEventData.strRecordName = mstrRecordName; OnEventHandler(mSelf, xEventData, oldValue, *pVar); } return false; }
bool NFCRecord::Remove(const int nRow) { if (ValidRow(nRow)) { if (IsUsed(nRow)) { RECORD_EVENT_DATA xEventData; xEventData.nOpType = Del; xEventData.nRow = nRow; xEventData.nCol = 0; xEventData.strRecordName = mstrRecordName; OnEventHandler(mSelf, xEventData, NFCDataList::TData(), NFCDataList::TData()); mVecUsedState[nRow] = 0; return true; } } return false; }
int NFCRecord::AddRow(const int nRow, const NFDataList& var) { bool bCover = false; int nFindRow = nRow; if (nFindRow >= mnMaxRow) { return -1; } if (var.GetCount() != GetCols()) { return -1; } if (nFindRow < 0) { for (int i = 0; i < mnMaxRow; i++) { if (!IsUsed(i)) { nFindRow = i; break; } } } else { if (IsUsed(nFindRow)) { bCover = true; } } if (nFindRow < 0) { return -1; } for (int i = 0; i < GetCols(); ++i) { if (var.Type(i) != GetColType(i)) { return -1; } } SetUsed(nFindRow, 1); for (int i = 0; i < GetCols(); ++i) { NF_SHARE_PTR<NFData>& pVar = mtRecordVec.at(GetPos(nFindRow, i)); if (nullptr == pVar) { pVar = NF_SHARE_PTR<NFData>(NF_NEW NFData(var.Type(i))); } pVar->variantData = var.GetStack(i)->variantData; } RECORD_EVENT_DATA xEventData; xEventData.nOpType = bCover? RECORD_EVENT_DATA::Cover : RECORD_EVENT_DATA::Add; xEventData.nRow = nFindRow; xEventData.nCol = 0; xEventData.strRecordName = mstrRecordName; NFData tData; OnEventHandler(mSelf, xEventData, tData, tData); //FIXME:RECORD return nFindRow; }