home *** CD-ROM | disk | FTP | other *** search
- // Xform.h : Declaration of the CXform
-
- #ifndef __XFORM_H_
- #define __XFORM_H_
-
- #include "resource.h" // main symbols
- #include <oledb.h>
- #include <msdadc.h>
- #include "dtspump.h"
-
- /////////////////////////////////////////////////////////////////////////////
- // CXform
- class ATL_NO_VTABLE CXform :
- public CComObjectRootEx<CComSingleThreadModel>,
- public CComCoClass<CXform, &CLSID_DTSStrCatXform>,
- public IDispatchImpl<IDTSStrCatXform, &IID_IDTSStrCatXform, &LIBID_DTSXFORMLib>,
- public IDTSDataPumpTransform,
- public ISupportErrorInfo
- {
- public:
- CXform()
- {
- m_bRemoveSpace = VARIANT_TRUE;
- }
-
- DECLARE_REGISTRY_RESOURCEID(IDR_XFORM)
-
- BEGIN_COM_MAP(CXform)
- COM_INTERFACE_ENTRY(IDTSStrCatXform)
- COM_INTERFACE_ENTRY(IDispatch)
- COM_INTERFACE_ENTRY(IDTSDataPumpTransform)
- COM_INTERFACE_ENTRY(ISupportErrorInfo)
- END_COM_MAP()
-
- // IDTSStrCatXform
- public:
- //Cut and paste from idl generated header file.
- STDMETHOD(get_RemoveSpace)(
- /* [retval][out] */ VARIANT_BOOL __RPC_FAR *pRetVal) ;
-
- STDMETHOD(put_RemoveSpace)(
- /* [in] */ VARIANT_BOOL NewValue);
-
-
- public:
- //*** IDTSDataPumpTransform members
- STDMETHOD(Initialize)(
- DP_IN LPCOLESTR pwzName, // Transform name
- VARIANT ServerParameters, // Parameters to server for this transform
- LPBYTE *ppvTransformServerData // Transform server state data.
- );
- STDMETHOD(ValidateSchema)(
- LPBYTE pvTransformServerData, // Transform server state data.
- LPCDTSTransformColumnInfo pSrcColumnInfo, // Source columns and rowdata
- LPCDTSTransformColumnInfo pDestColumnInfo, // Dest columns and rowdata
- IDTSDataConvert *pIDTSDataConvert, // Pointer to the data conversion interface
- DTSTransformFlags eTransformFlags // Input Flags for Transformation validation and execution
- );
- STDMETHOD(AddVariable)(
- LPBYTE pvTransformServerData, // Transform server state data.
- LPCOLESTR pwzName, // Variable name
- BOOL bGlobal, // For ActiveX scripts, indicates whether this variable's
- // methods must be qualified by the object name.
- VARIANT Variable // Variable value; passed to and updatable by Transform
- );
- STDMETHOD(Execute)(
- LPBYTE pvTransformServerData, // Transform server state data.
- LPCDTSTransformColumnInfo pSrcColumnInfo, // Source columns and rowdata
- LPDTSTransformColumnInfo pDestColumnInfo, // Dest columns and rowdata
- IDTSDataConvert *pIDTSDataConvert, // Pointer to the data conversion interface
- LPDTSTransformStatus pTransformStatus // Result of transform
- );
- STDMETHOD(OnRowComplete)(
- LPBYTE pvTransformServerData, // Transform server state data.
- LPDTSTransformColumnInfo pSrcColumnInfo, // Source columns and rowdata
- LPDTSTransformColumnInfo pDestColumnInfo, // Dest columns and rowdata
- IDTSDataConvert *pIDTSDataConvert, // Pointer to the data conversion interface
- DTSTransformStatus eTransformStatus, // Result of Execute()
- HRESULT hrInsert // Result of IRowsetChange::InsertRow()
- );
- STDMETHOD(OnTransformComplete)(
- LPBYTE pvTransformServerData, // Transform server state data.
- LPDTSTransformColumnInfo pSrcColumnInfo, // Source columns and rowdata
- LPDTSTransformColumnInfo pDestColumnInfo, // Dest columns and rowdata
- IDTSDataConvert *pIDTSDataConvert // Pointer to the data conversion interface
- );
-
-
- //ISupportErrorInfo
- public:
- STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid)
- {return (InlineIsEqualGUID(riid,IID_IDTSStrCatXform) ||
- InlineIsEqualGUID(riid,IID_IDTSDataPumpTransform))
- ? S_OK : S_FALSE;}
-
- private:
- VARIANT_BOOL m_bRemoveSpace;
- };
-
- inline LPSTR RemoveTrailingSpace(LPSTR psz, int iLength)
- {
- for (ULONG ii = iLength - 1; ii >= 0; ii--) {
- if (!isspace(*(psz+ii)) && *(psz+ii) != 0)
- break;
- }
- *(psz+ii+1) = 0;
- return psz;
- }
-
-
-
- #endif //__XFORM_H_
-