/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef _CONNECTIVITY_ADO_AWRAPADO_HXX_ #define _CONNECTIVITY_ADO_AWRAPADO_HXX_ #include // Includes fuer ADO #include "ado_pre_sys_include.h" #include #include #include #include "ado_post_sys_include.h" #include "ado/adoimp.hxx" #include "ado/Aolewrap.hxx" #include "ado/Aolevariant.hxx" namespace connectivity { namespace ado { class WpADOConnection; class WpADOCommand; class WpADORecordset; class WpADOField; class WpADOParameter; class WpADOError; class WpADOProperty; typedef WpOLEAppendCollection< ADOFields, ADOField, WpADOField> WpADOFields; typedef WpOLECollection< ADOProperties, ADOProperty, WpADOProperty> WpADOProperties; //------------------------------------------------------------------------ class WpADOConnection : public WpOLEBase { friend class WpADOCommand; public: WpADOConnection(ADOConnection* pInt) : WpOLEBase(pInt){} WpADOConnection(const WpADOConnection& rhs){operator=(rhs);} WpADOConnection& operator=(const WpADOConnection& rhs) {WpOLEBase::operator=(rhs); return *this;} ////////////////////////////////////////////////////////////////////// WpADOProperties get_Properties() const; rtl::OUString GetConnectionString() const; sal_Bool PutConnectionString(const ::rtl::OUString &aCon) const; sal_Int32 GetCommandTimeout() const; void PutCommandTimeout(sal_Int32 nRet); sal_Int32 GetConnectionTimeout() const ; void PutConnectionTimeout(sal_Int32 nRet); sal_Bool Close( ) ; sal_Bool Execute(const ::rtl::OUString& _CommandText,OLEVariant& RecordsAffected,long Options, WpADORecordset** ppiRset); sal_Bool BeginTrans(); sal_Bool CommitTrans( ) ; sal_Bool RollbackTrans( ); sal_Bool Open(const ::rtl::OUString& ConnectionString, const ::rtl::OUString& UserID,const ::rtl::OUString& Password,long Options); sal_Bool GetErrors(ADOErrors** pErrors); ::rtl::OUString GetDefaultDatabase() const; sal_Bool PutDefaultDatabase(const ::rtl::OUString& _bstr); IsolationLevelEnum get_IsolationLevel() const ; sal_Bool put_IsolationLevel(const IsolationLevelEnum& eNum) ; sal_Int32 get_Attributes() const; sal_Bool put_Attributes(sal_Int32 nRet); CursorLocationEnum get_CursorLocation() const; sal_Bool put_CursorLocation(const CursorLocationEnum &eNum) ; ConnectModeEnum get_Mode() const; sal_Bool put_Mode(const ConnectModeEnum &eNum) ; ::rtl::OUString get_Provider() const; sal_Bool put_Provider(const ::rtl::OUString& _bstr); sal_Int32 get_State() const; sal_Bool OpenSchema(SchemaEnum eNum,OLEVariant& Restrictions,OLEVariant& SchemaID,ADORecordset**pprset); ::rtl::OUString get_Version() const; // special methods ADORecordset* getExportedKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ); ADORecordset* getImportedKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ); ADORecordset* getPrimaryKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ); ADORecordset* getIndexInfo( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table, sal_Bool unique, sal_Bool approximate ); ADORecordset* getTablePrivileges( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern ); ADORecordset* getCrossReference( const ::com::sun::star::uno::Any& primaryCatalog, const ::rtl::OUString& primarySchema, const ::rtl::OUString& primaryTable, const ::com::sun::star::uno::Any& foreignCatalog, const ::rtl::OUString& foreignSchema, const ::rtl::OUString& foreignTable); ADORecordset* getProcedures( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& procedureNamePattern ); ADORecordset* getProcedureColumns( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& procedureNamePattern, const ::rtl::OUString& columnNamePattern ); ADORecordset* getTables( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& types ); ADORecordset* getColumns( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern, const ::rtl::OUString& columnNamePattern ); ADORecordset* getColumnPrivileges( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& table, const ::rtl::OUString& columnNamePattern ); ADORecordset* getTypeInfo(DataTypeEnum _eType = adEmpty ); }; //------------------------------------------------------------------------ class WpADOCommand : public WpOLEBase { public: WpADOCommand(){} // Konstruktoren, operator= // diese rufen nur die Oberklasse WpADOCommand(ADOCommand* pInt) : WpOLEBase(pInt){} WpADOCommand(const WpADOCommand& rhs){operator=(rhs);} WpADOCommand& operator=(const WpADOCommand& rhs) { WpOLEBase::operator=(rhs); return *this;} ////////////////////////////////////////////////////////////////////// sal_Bool putref_ActiveConnection( WpADOConnection *pCon); void put_ActiveConnection(/* [in] */ const OLEVariant& vConn); void Create(); sal_Int32 get_State() const; ::rtl::OUString get_CommandText() const; sal_Bool put_CommandText(const ::rtl::OUString &aCon) ; sal_Int32 get_CommandTimeout() const; void put_CommandTimeout(sal_Int32 nRet); sal_Bool get_Prepared() const; sal_Bool put_Prepared(VARIANT_BOOL bPrepared) const; sal_Bool Execute(OLEVariant& RecordsAffected,OLEVariant& Parameters,long Options, ADORecordset** ppiRset); ADOParameter* CreateParameter(const ::rtl::OUString &_bstr,DataTypeEnum Type,ParameterDirectionEnum Direction,long nSize,const OLEVariant &Value); ADOParameters* get_Parameters() const; sal_Bool put_CommandType( /* [in] */ CommandTypeEnum lCmdType); CommandTypeEnum get_CommandType( ) const ; // gibt den Namen des Feldes zur"ueck ::rtl::OUString GetName() const ; sal_Bool put_Name(const ::rtl::OUString& _Name); sal_Bool Cancel(); }; //------------------------------------------------------------------------ class WpADOError : public WpOLEBase { public: // Konstruktoren, operator= // diese rufen nur die Oberklasse WpADOError(ADOError* pInt):WpOLEBase(pInt){} WpADOError(const WpADOError& rhs){operator=(rhs);} WpADOError& operator=(const WpADOError& rhs) {WpOLEBase::operator=(rhs); return *this;} ////////////////////////////////////////////////////////////////////// ::rtl::OUString GetDescription() const; ::rtl::OUString GetSource() const ; sal_Int32 GetNumber() const ; ::rtl::OUString GetSQLState() const ; sal_Int32 GetNativeError() const ; }; //------------------------------------------------------------------------ class WpADOField : public WpOLEBase { // friend class WpADOFields; public: // Konstruktoren, operator= // diese rufen nur die Oberklasse WpADOField(ADOField* pInt=NULL):WpOLEBase(pInt){} WpADOField(const WpADOField& rhs){operator=(rhs);} WpADOField& operator=(const WpADOField& rhs) {WpOLEBase::operator=(rhs); return *this;} ////////////////////////////////////////////////////////////////////// WpADOProperties get_Properties(); sal_Int32 GetActualSize() const ; sal_Int32 GetAttributes() const ; sal_Int32 GetStatus() const ; sal_Int32 GetDefinedSize() const ; // gibt den Namen des Feldes zur"ueck ::rtl::OUString GetName() const ; DataTypeEnum GetADOType() const ; void get_Value(OLEVariant& aValVar) const ; OLEVariant get_Value() const; sal_Bool PutValue(const OLEVariant& aVariant); sal_Int32 GetPrecision() const ; sal_Int32 GetNumericScale() const ; sal_Bool AppendChunk(const OLEVariant& _Variant); OLEVariant GetChunk(long Length) const; void GetChunk(long Length,OLEVariant &aValVar) const; OLEVariant GetOriginalValue() const; void GetOriginalValue(OLEVariant &aValVar) const; OLEVariant GetUnderlyingValue() const; void GetUnderlyingValue(OLEVariant &aValVar) const; sal_Bool PutPrecision(sal_Int8 _prec); sal_Bool PutNumericScale(sal_Int8 _prec); void PutADOType(DataTypeEnum eType) ; sal_Bool PutDefinedSize(sal_Int32 _nDefSize); sal_Bool PutAttributes(sal_Int32 _nDefSize); }; //------------------------------------------------------------------------ class WpADOProperty: public WpOLEBase { public: // Konstruktoren, operator= // diese rufen nur die Oberklasse WpADOProperty(ADOProperty* pInt=NULL):WpOLEBase(pInt){} WpADOProperty(const WpADOProperty& rhs){operator=(rhs);} WpADOProperty& operator=(const WpADOProperty& rhs) {WpOLEBase::operator=(rhs); return *this;} ////////////////////////////////////////////////////////////////////// OLEVariant GetValue() const; void GetValue(OLEVariant &aValVar) const; sal_Bool PutValue(const OLEVariant &aValVar) ; ::rtl::OUString GetName() const ; DataTypeEnum GetADOType() const ; sal_Int32 GetAttributes() const ; sal_Bool PutAttributes(sal_Int32 _nDefSize); }; class WpADORecordset : public WpOLEBase { public: // Konstruktoren, operator= // diese rufen nur die Oberklasse WpADORecordset(ADORecordset* pInt=NULL):WpOLEBase(pInt){} WpADORecordset(const WpADORecordset& rhs){operator=(rhs);} WpADORecordset& operator=(const WpADORecordset& rhs) { WpOLEBase::operator=(rhs); return *this; } ~WpADORecordset() { // if(pInterface && get_State() == adStateOpen) // Close(); } ////////////////////////////////////////////////////////////////////// void Create(); sal_Bool Open( /* [optional][in] */ VARIANT Source, /* [optional][in] */ VARIANT ActiveConnection, /* [defaultvalue][in] */ CursorTypeEnum CursorType, /* [defaultvalue][in] */ LockTypeEnum LockType, /* [defaultvalue][in] */ sal_Int32 Options); LockTypeEnum GetLockType(); void Close(); sal_Bool Cancel() const; sal_Int32 get_State( ); sal_Bool Supports( /* [in] */ CursorOptionEnum CursorOptions); PositionEnum get_AbsolutePosition(); void GetDataSource(IUnknown** pIUnknown) const ; void PutRefDataSource(IUnknown* pIUnknown); void GetBookmark(VARIANT& var); OLEVariant GetBookmark(); CompareEnum CompareBookmarks(const OLEVariant& left,const OLEVariant& right); sal_Bool SetBookmark(const OLEVariant &pSafeAr); WpADOFields GetFields() const; sal_Bool Move(sal_Int32 nRows, VARIANT aBmk); sal_Bool MoveNext(); sal_Bool MovePrevious(); sal_Bool MoveFirst(); sal_Bool MoveLast(); sal_Bool IsAtBOF() const; sal_Bool IsAtEOF() const; sal_Bool Delete(AffectEnum eNum); sal_Bool AddNew(const OLEVariant &FieldList,const OLEVariant &Values); sal_Bool Update(const OLEVariant &FieldList,const OLEVariant &Values); sal_Bool CancelUpdate(); WpADOProperties get_Properties() const; sal_Bool NextRecordset(OLEVariant& RecordsAffected,ADORecordset** ppiRset); sal_Bool get_RecordCount(sal_Int32 &_nRet) const; sal_Bool get_MaxRecords(sal_Int32 &_nRet) const; sal_Bool put_MaxRecords(sal_Int32 _nRet); sal_Bool get_CursorType(CursorTypeEnum &_nRet) const; sal_Bool put_CursorType(CursorTypeEnum _nRet); sal_Bool get_LockType(LockTypeEnum &_nRet) const; sal_Bool put_LockType(LockTypeEnum _nRet); sal_Bool get_CacheSize(sal_Int32 &_nRet) const; sal_Bool put_CacheSize(sal_Int32 _nRet); sal_Bool UpdateBatch(AffectEnum AffectRecords); }; //------------------------------------------------------------------------ class WpADOParameter:public WpOLEBase { public: // Konstruktoren, operator= // diese rufen nur die Oberklasse WpADOParameter(ADOParameter* pInt):WpOLEBase(pInt){} WpADOParameter(const WpADOParameter& rhs):WpOLEBase(rhs){} WpADOParameter& operator=(const WpADOParameter& rhs) {WpOLEBase::operator=(rhs); return *this;} ////////////////////////////////////////////////////////////////////// ::rtl::OUString GetName() const ; DataTypeEnum GetADOType() const ; void put_Type(const DataTypeEnum& _eType); sal_Bool put_Size(const sal_Int32& _nSize); sal_Int32 GetAttributes() const ; sal_Int32 GetPrecision() const ; sal_Int32 GetNumericScale() const ; ParameterDirectionEnum get_Direction() const; void GetValue(OLEVariant& aValVar) const ; OLEVariant GetValue() const; sal_Bool PutValue(const OLEVariant& aVariant); sal_Bool AppendChunk(const OLEVariant& aVariant); }; class OTools { public: /** putValue set the property value at the ado column @param _rProps the properties where to set @param _aPosition which property to set @param _aValVar the value to set */ static void putValue(const WpADOProperties& _rProps,const OLEVariant &_aPosition,const OLEVariant &_aValVar); /** getValue returns a specific property value @param _rProps the properties where to set @param _aPosition the property @return the property value */ static OLEVariant getValue(const WpADOProperties& _rProps,const OLEVariant &_aPosition); }; } } #endif //_CONNECTIVITY_ADO_AWRAPADO_HXX_