Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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);
}
Esempio n. 4
0
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;
}
Esempio n. 5
0
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;
}
Esempio n. 6
0
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;
}
Esempio n. 7
0
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);
}
Esempio n. 8
0
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;
}
Esempio n. 9
0
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;
}
Esempio n. 10
0
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;
}
Esempio n. 11
0
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;
}
Esempio n. 12
0
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;
}
Esempio n. 13
0
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;
}
Esempio n. 14
0
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;
}
Esempio n. 15
0
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;
}