home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 32 / IOPROG_32.ISO / SOFT / SqlEval7 / devtools / samples / DTS / dtsxform / xform.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-10-26  |  3.9 KB  |  113 lines

  1. // Xform.h : Declaration of the CXform
  2.  
  3. #ifndef __XFORM_H_
  4. #define __XFORM_H_
  5.  
  6. #include "resource.h"       // main symbols
  7. #include <oledb.h>
  8. #include <msdadc.h>     
  9. #include "dtspump.h" 
  10.  
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CXform
  13. class ATL_NO_VTABLE CXform : 
  14.     public CComObjectRootEx<CComSingleThreadModel>,
  15.     public CComCoClass<CXform, &CLSID_DTSStrCatXform>,
  16.     public IDispatchImpl<IDTSStrCatXform, &IID_IDTSStrCatXform, &LIBID_DTSXFORMLib>,
  17.     public IDTSDataPumpTransform,
  18.     public ISupportErrorInfo
  19. {
  20. public:
  21.     CXform()
  22.     {
  23.         m_bRemoveSpace = VARIANT_TRUE;
  24.     }
  25.  
  26. DECLARE_REGISTRY_RESOURCEID(IDR_XFORM)
  27.  
  28. BEGIN_COM_MAP(CXform)
  29.     COM_INTERFACE_ENTRY(IDTSStrCatXform)
  30.     COM_INTERFACE_ENTRY(IDispatch)
  31.     COM_INTERFACE_ENTRY(IDTSDataPumpTransform)
  32.     COM_INTERFACE_ENTRY(ISupportErrorInfo)
  33. END_COM_MAP()
  34.  
  35. // IDTSStrCatXform
  36. public:
  37.     //Cut and paste from idl generated header file.
  38.     STDMETHOD(get_RemoveSpace)( 
  39.             /* [retval][out] */ VARIANT_BOOL __RPC_FAR *pRetVal) ;
  40.         
  41.     STDMETHOD(put_RemoveSpace)( 
  42.             /* [in] */ VARIANT_BOOL NewValue);
  43.  
  44.  
  45. public:
  46.     //*** IDTSDataPumpTransform members
  47.     STDMETHOD(Initialize)(
  48.             DP_IN LPCOLESTR pwzName,                            // Transform name
  49.             VARIANT ServerParameters,                        // Parameters to server for this transform
  50.             LPBYTE *ppvTransformServerData                // Transform server state data.
  51.         );
  52.     STDMETHOD(ValidateSchema)(
  53.             LPBYTE pvTransformServerData,                    // Transform server state data.
  54.             LPCDTSTransformColumnInfo pSrcColumnInfo,     // Source columns and rowdata
  55.             LPCDTSTransformColumnInfo pDestColumnInfo, // Dest columns and rowdata
  56.             IDTSDataConvert *pIDTSDataConvert,            // Pointer to the data conversion interface
  57.             DTSTransformFlags eTransformFlags                // Input Flags for Transformation validation and execution
  58.         );
  59.     STDMETHOD(AddVariable)( 
  60.             LPBYTE pvTransformServerData,                    // Transform server state data.
  61.             LPCOLESTR pwzName,                            // Variable name
  62.             BOOL bGlobal,                                    // For ActiveX scripts, indicates whether this variable's
  63.                                                                 // methods must be qualified by the object name.
  64.             VARIANT Variable                                // Variable value; passed to and updatable by Transform
  65.         );
  66.     STDMETHOD(Execute)(
  67.             LPBYTE pvTransformServerData,                    // Transform server state data.
  68.             LPCDTSTransformColumnInfo pSrcColumnInfo,     // Source columns and rowdata
  69.             LPDTSTransformColumnInfo pDestColumnInfo,     // Dest columns and rowdata
  70.             IDTSDataConvert *pIDTSDataConvert,            // Pointer to the data conversion interface
  71.             LPDTSTransformStatus pTransformStatus        // Result of transform
  72.         );
  73.     STDMETHOD(OnRowComplete)(
  74.             LPBYTE pvTransformServerData,                    // Transform server state data.
  75.             LPDTSTransformColumnInfo pSrcColumnInfo,     // Source columns and rowdata
  76.             LPDTSTransformColumnInfo pDestColumnInfo,     // Dest columns and rowdata
  77.             IDTSDataConvert *pIDTSDataConvert,            // Pointer to the data conversion interface
  78.             DTSTransformStatus eTransformStatus,            // Result of Execute()
  79.             HRESULT hrInsert                                // Result of IRowsetChange::InsertRow()
  80.         );
  81.     STDMETHOD(OnTransformComplete)(
  82.             LPBYTE pvTransformServerData,                    // Transform server state data.
  83.             LPDTSTransformColumnInfo pSrcColumnInfo,     // Source columns and rowdata
  84.             LPDTSTransformColumnInfo pDestColumnInfo,     // Dest columns and rowdata
  85.             IDTSDataConvert *pIDTSDataConvert                // Pointer to the data conversion interface
  86.         );
  87.  
  88.  
  89. //ISupportErrorInfo
  90. public:
  91.     STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid)
  92.     {return (InlineIsEqualGUID(riid,IID_IDTSStrCatXform) || 
  93.                 InlineIsEqualGUID(riid,IID_IDTSDataPumpTransform)) 
  94.                 ? S_OK : S_FALSE;}
  95.  
  96. private:
  97.     VARIANT_BOOL    m_bRemoveSpace;
  98. };
  99.  
  100. inline LPSTR RemoveTrailingSpace(LPSTR psz, int iLength)
  101. {
  102.     for (ULONG ii = iLength - 1; ii >= 0; ii--) {
  103.         if (!isspace(*(psz+ii)) && *(psz+ii) != 0) 
  104.             break;
  105.     }
  106.     *(psz+ii+1) = 0;
  107.     return psz;
  108. }
  109.  
  110.  
  111.  
  112. #endif //__XFORM_H_
  113.