#include "pch.h"
#include "AGCDBParams.h"
TC_OBJECT_EXTERN_IMPL(CAGCDBParams)
STDMETHODIMP CAGCDBParams::put_ConnectionString(BSTR bstr)
{
XLock lock(this);
m_bstrConnectionString = bstr;
m_bDirty = true;
return S_OK;
}
STDMETHODIMP CAGCDBParams::get_ConnectionString(BSTR* pbstr)
{
CLEAROUT(pbstr, (BSTR)NULL);
XLock lock(this);
*pbstr = m_bstrConnectionString.Copy();
return S_OK;
}
STDMETHODIMP CAGCDBParams::put_TableName(BSTR bstr)
{
XLock lock(this);
m_bstrTableName = bstr;
m_bDirty = true;
return S_OK;
}
STDMETHODIMP CAGCDBParams::get_TableName(BSTR* pbstr)
{
CLEAROUT(pbstr, (BSTR)NULL);
XLock lock(this);
*pbstr = m_bstrTableName.Copy();
return S_OK;
}
STDMETHODIMP CAGCDBParams::GetClassID(CLSID* pClassID)
{
__try
{
*pClassID = GetObjectCLSID();
}
__except(1)
{
return E_POINTER;
}
return S_OK;
}
STDMETHODIMP CAGCDBParams::IsDirty()
{
XLock lock(this);
return m_bDirty ? S_OK : S_FALSE;
}
STDMETHODIMP CAGCDBParams::Load(LPSTREAM pStm)
{
XLock lock(this);
m_bstrConnectionString.Empty();
m_bstrTableName.Empty();
RETURN_FAILED(m_bstrConnectionString.ReadFromStream(pStm));
RETURN_FAILED(m_bstrTableName.ReadFromStream(pStm));
m_bDirty = true;
return S_OK;
}
STDMETHODIMP CAGCDBParams::Save(LPSTREAM pStm, BOOL fClearDirty)
{
XLock lock(this);
RETURN_FAILED(m_bstrConnectionString.WriteToStream(pStm));
RETURN_FAILED(m_bstrTableName.WriteToStream(pStm));
if (fClearDirty)
m_bDirty = false;
return S_OK;
}
STDMETHODIMP CAGCDBParams::GetSizeMax(ULARGE_INTEGER* pCbSize)
{
XLock lock(this);
return TCGetPersistStreamSize(GetUnknown(), pCbSize);
}
STDMETHODIMP CAGCDBParams::InitNew( void)
{
XLock lock(this);
m_bstrConnectionString.Empty();
m_bstrTableName.Empty();
return S_OK;
}
STDMETHODIMP CAGCDBParams::Load(IPropertyBag* pPropBag, IErrorLog* pErrorLog)
{
VARIANT varConnectionString, varTableName;
RETURN_FAILED(pPropBag->Read(L"ConnectionString", &varConnectionString, pErrorLog));
RETURN_FAILED(pPropBag->Read(L"TableName" , &varTableName , pErrorLog));
XLock lock(this);
m_bstrConnectionString.Empty();
m_bstrConnectionString.Attach(V_BSTR(&varConnectionString));
m_bstrTableName.Empty();
m_bstrTableName.Attach(V_BSTR(&varTableName));
m_bDirty = true;
return S_OK;
}
STDMETHODIMP CAGCDBParams::Save(IPropertyBag* pPropBag, BOOL fClearDirty, BOOL)
{
XLock lock(this);
RETURN_FAILED(pPropBag->Write(L"ConnectionString", &CComVariant(m_bstrConnectionString)));
RETURN_FAILED(pPropBag->Write(L"TableName" , &CComVariant(m_bstrTableName )));
if (fClearDirty)
m_bDirty = false;
return S_OK;
}