| /************************************************************** |
| * |
| * 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. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_connectivity.hxx" |
| #include "ado/ADatabaseMetaData.hxx" |
| #include "ado/ADatabaseMetaDataResultSetMetaData.hxx" |
| #include "ado/Awrapado.hxx" |
| #include "ado/AGroup.hxx" |
| #include "ado/adoimp.hxx" |
| #include "ado/AIndex.hxx" |
| #include "ado/AKey.hxx" |
| #include "ado/ATable.hxx" |
| #include <com/sun/star/sdbc/DataType.hpp> |
| #include <com/sun/star/sdbc/ProcedureResult.hpp> |
| #include <com/sun/star/sdbc/ColumnValue.hpp> |
| #ifdef DELETE |
| #undef DELETE |
| #endif |
| #include <com/sun/star/sdbcx/Privilege.hpp> |
| #include <com/sun/star/sdbcx/PrivilegeObject.hpp> |
| #include <com/sun/star/sdbc/KeyRule.hpp> |
| #include <com/sun/star/sdbcx/KeyType.hpp> |
| |
| using namespace connectivity::ado; |
| using namespace ::com::sun::star::sdbc; |
| using namespace ::com::sun::star::sdbcx; |
| using namespace ::com::sun::star::uno; |
| |
| // ------------------------------------------------------------------------- |
| void ODatabaseMetaData::fillLiterals() |
| { |
| ADORecordset *pRecordset = NULL; |
| OLEVariant vtEmpty; |
| vtEmpty.setNoArg(); |
| m_pADOConnection->OpenSchema(adSchemaDBInfoLiterals,vtEmpty,vtEmpty,&pRecordset); |
| |
| ADOS::ThrowException(*m_pADOConnection,*this); |
| |
| OSL_ENSURE(pRecordset,"fillLiterals: no resultset!"); |
| if ( pRecordset ) |
| { |
| WpADORecordset aRecordset(pRecordset); |
| |
| aRecordset.MoveFirst(); |
| OLEVariant aValue; |
| LiteralInfo aInfo; |
| while(!aRecordset.IsAtEOF()) |
| { |
| WpOLEAppendCollection<ADOFields, ADOField, WpADOField> aFields(aRecordset.GetFields()); |
| WpADOField aField(aFields.GetItem(1)); |
| aInfo.pwszLiteralValue = aField.get_Value(); |
| aField = aFields.GetItem(5); |
| aInfo.fSupported = aField.get_Value(); |
| aField = aFields.GetItem(6); |
| aInfo.cchMaxLen = aField.get_Value().getUInt32(); |
| |
| aField = aFields.GetItem(4); |
| sal_uInt32 nId = aField.get_Value().getUInt32(); |
| m_aLiteralInfo[nId] = aInfo; |
| |
| aRecordset.MoveNext(); |
| } |
| aRecordset.Close(); |
| } |
| } |
| // ------------------------------------------------------------------------- |
| sal_Int32 ODatabaseMetaData::getMaxSize(sal_uInt32 _nId) |
| { |
| if(!m_aLiteralInfo.size()) |
| fillLiterals(); |
| |
| sal_Int32 nSize = 0; |
| ::std::map<sal_uInt32,LiteralInfo>::const_iterator aIter = m_aLiteralInfo.find(_nId); |
| if(aIter != m_aLiteralInfo.end() && (*aIter).second.fSupported) |
| nSize = ((*aIter).second.cchMaxLen == (-1)) ? 0 : (*aIter).second.cchMaxLen; |
| return nSize; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Bool ODatabaseMetaData::isCapable(sal_uInt32 _nId) |
| { |
| if(!m_aLiteralInfo.size()) |
| fillLiterals(); |
| sal_Bool bSupported = sal_False; |
| ::std::map<sal_uInt32,LiteralInfo>::const_iterator aIter = m_aLiteralInfo.find(_nId); |
| if(aIter != m_aLiteralInfo.end()) |
| bSupported = (*aIter).second.fSupported; |
| return bSupported; |
| } |
| |
| // ------------------------------------------------------------------------- |
| ::rtl::OUString ODatabaseMetaData::getLiteral(sal_uInt32 _nId) |
| { |
| if(!m_aLiteralInfo.size()) |
| fillLiterals(); |
| ::rtl::OUString sStr; |
| ::std::map<sal_uInt32,LiteralInfo>::const_iterator aIter = m_aLiteralInfo.find(_nId); |
| if(aIter != m_aLiteralInfo.end() && (*aIter).second.fSupported) |
| sStr = (*aIter).second.pwszLiteralValue; |
| return sStr; |
| } |
| // ----------------------------------------------------------------------------- |
| // ------------------------------------------------------------------------- |
| void ODatabaseMetaDataResultSetMetaData::setColumnPrivilegesMap() |
| { |
| m_mColumns[8] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("IS_GRANTABLE"), |
| ColumnValue::NULLABLE, |
| 3,3,0, |
| DataType::VARCHAR); |
| } |
| // ------------------------------------------------------------------------- |
| void ODatabaseMetaDataResultSetMetaData::setColumnsMap() |
| { |
| m_mColumns[6] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("TYPE_NAME"), |
| ColumnValue::NO_NULLS, |
| 0,0,0, |
| DataType::VARCHAR); |
| m_mColumns[11] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NULLABLE"), |
| ColumnValue::NO_NULLS, |
| 1,1,0, |
| DataType::INTEGER); |
| m_mColumns[12] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("REMARKS"), |
| ColumnValue::NULLABLE, |
| 0,0,0, |
| DataType::VARCHAR); |
| m_mColumns[13] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("COLUMN_DEF"), |
| ColumnValue::NULLABLE, |
| 0,0,0, |
| DataType::VARCHAR); |
| m_mColumns[14] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("SQL_DATA_TYPE"), |
| ColumnValue::NO_NULLS, |
| 1,1,0, |
| DataType::INTEGER); |
| m_mColumns[15] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("SQL_DATETIME_SUB"), |
| ColumnValue::NO_NULLS, |
| 1,1,0, |
| DataType::INTEGER); |
| m_mColumns[16] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("CHAR_OCTET_LENGTH"), |
| ColumnValue::NO_NULLS, |
| 1,1,0, |
| DataType::INTEGER); |
| } |
| // ------------------------------------------------------------------------- |
| void ODatabaseMetaDataResultSetMetaData::setTablesMap() |
| { |
| m_mColumns[5] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("REMARKS"), |
| ColumnValue::NULLABLE, |
| 0,0,0, |
| DataType::VARCHAR); |
| } |
| // ------------------------------------------------------------------------- |
| void ODatabaseMetaDataResultSetMetaData::setProcedureColumnsMap() |
| { |
| m_mColumns[12] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NULLABLE"), |
| ColumnValue::NO_NULLS, |
| 1,1,0, |
| DataType::INTEGER); |
| } |
| // ------------------------------------------------------------------------- |
| void ODatabaseMetaDataResultSetMetaData::setPrimaryKeysMap() |
| { |
| m_mColumns[5] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("KEY_SEQ"), |
| ColumnValue::NO_NULLS, |
| 1,1,0, |
| DataType::INTEGER); |
| m_mColumns[6] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("PK_NAME"), |
| ColumnValue::NULLABLE, |
| 0,0,0, |
| DataType::VARCHAR); |
| } |
| // ------------------------------------------------------------------------- |
| void ODatabaseMetaDataResultSetMetaData::setIndexInfoMap() |
| { |
| m_mColumns[4] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NON_UNIQUE"), |
| ColumnValue::NO_NULLS, |
| 1,1,0, |
| DataType::BIT); |
| m_mColumns[5] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("INDEX_QUALIFIER"), |
| ColumnValue::NULLABLE, |
| 0,0,0, |
| DataType::VARCHAR); |
| m_mColumns[10] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("ASC_OR_DESC"), |
| ColumnValue::NULLABLE, |
| 0,0,0, |
| DataType::VARCHAR); |
| } |
| // ------------------------------------------------------------------------- |
| void ODatabaseMetaDataResultSetMetaData::setTablePrivilegesMap() |
| { |
| m_mColumns[6] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("PRIVILEGE"), |
| ColumnValue::NULLABLE, |
| 0,0,0, |
| DataType::VARCHAR); |
| m_mColumns[7] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("IS_GRANTABLE"), |
| ColumnValue::NULLABLE, |
| 0,0,0, |
| DataType::VARCHAR); |
| } |
| // ------------------------------------------------------------------------- |
| void ODatabaseMetaDataResultSetMetaData::setCrossReferenceMap() |
| { |
| m_mColumns[9] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("KEY_SEQ"), |
| ColumnValue::NO_NULLS, |
| 1,1,0, |
| DataType::INTEGER); |
| } |
| // ------------------------------------------------------------------------- |
| void ODatabaseMetaDataResultSetMetaData::setTypeInfoMap() |
| { |
| m_mColumns[3] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("PRECISION"), |
| ColumnValue::NO_NULLS, |
| 1,1,0, |
| DataType::INTEGER); |
| m_mColumns[7] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NULLABLE"), |
| ColumnValue::NO_NULLS, |
| 1,1,0, |
| DataType::INTEGER); |
| m_mColumns[12] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("AUTO_INCREMENT"), |
| ColumnValue::NO_NULLS, |
| 1,1,0, |
| DataType::BIT); |
| m_mColumns[16] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("SQL_DATA_TYPE"), |
| ColumnValue::NO_NULLS, |
| 1,1,0, |
| DataType::INTEGER); |
| m_mColumns[17] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("SQL_DATETIME_SUB"), |
| ColumnValue::NO_NULLS, |
| 1,1,0, |
| DataType::INTEGER); |
| m_mColumns[18] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NUM_PREC_RADIX"), |
| ColumnValue::NO_NULLS, |
| 1,1,0, |
| DataType::INTEGER); |
| } |
| // ------------------------------------------------------------------------- |
| void ODatabaseMetaDataResultSetMetaData::setProceduresMap() |
| { |
| m_mColumns[7] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("REMARKS"), |
| ColumnValue::NULLABLE, |
| 0,0,0, |
| DataType::VARCHAR); |
| } |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isSearchable( sal_Int32 column ) throw(SQLException, RuntimeException) |
| { |
| if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) |
| return (*m_mColumnsIter).second.isSearchable(); |
| return sal_True; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isAutoIncrement( sal_Int32 column ) throw(SQLException, RuntimeException) |
| { |
| if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) |
| return (*m_mColumnsIter).second.isAutoIncrement(); |
| return sal_False; |
| } |
| // ------------------------------------------------------------------------- |
| ::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getColumnServiceName( sal_Int32 column ) throw(SQLException, RuntimeException) |
| { |
| if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) |
| return (*m_mColumnsIter).second.getColumnServiceName(); |
| return ::rtl::OUString(); |
| } |
| // ------------------------------------------------------------------------- |
| ::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getTableName( sal_Int32 column ) throw(SQLException, RuntimeException) |
| { |
| if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) |
| return (*m_mColumnsIter).second.getTableName(); |
| return ::rtl::OUString(); |
| } |
| // ------------------------------------------------------------------------- |
| ::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getCatalogName( sal_Int32 column ) throw(SQLException, RuntimeException) |
| { |
| if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) |
| return (*m_mColumnsIter).second.getCatalogName(); |
| return ::rtl::OUString(); |
| } |
| // ------------------------------------------------------------------------- |
| ::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getColumnTypeName( sal_Int32 column ) throw(SQLException, RuntimeException) |
| { |
| if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) |
| return (*m_mColumnsIter).second.getColumnTypeName(); |
| return ::rtl::OUString(); |
| } |
| // ------------------------------------------------------------------------- |
| |
| sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isCaseSensitive( sal_Int32 column ) throw(SQLException, RuntimeException) |
| { |
| if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) |
| return (*m_mColumnsIter).second.isCaseSensitive(); |
| return sal_True; |
| } |
| // ------------------------------------------------------------------------- |
| |
| ::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getSchemaName( sal_Int32 column ) throw(SQLException, RuntimeException) |
| { |
| if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end()) |
| return (*m_mColumnsIter).second.getSchemaName(); |
| return ::rtl::OUString(); |
| } |
| // ----------------------------------------------------------------------------- |
| // ------------------------------------------------------------------------- |
| ObjectTypeEnum OAdoGroup::MapObjectType(sal_Int32 _ObjType) |
| { |
| ObjectTypeEnum eNumType= adPermObjTable; |
| switch(_ObjType) |
| { |
| case PrivilegeObject::TABLE: |
| break; |
| case PrivilegeObject::VIEW: |
| eNumType = adPermObjView; |
| break; |
| case PrivilegeObject::COLUMN: |
| eNumType = adPermObjColumn; |
| break; |
| } |
| return eNumType; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Int32 OAdoGroup::MapRight(RightsEnum _eNum) |
| { |
| sal_Int32 nRight = 0; |
| if(_eNum & adRightRead) |
| nRight |= Privilege::SELECT; |
| if(_eNum & adRightInsert) |
| nRight |= Privilege::INSERT; |
| if(_eNum & adRightUpdate) |
| nRight |= Privilege::UPDATE; |
| if(_eNum & adRightDelete) |
| nRight |= Privilege::DELETE; |
| if(_eNum & adRightReadDesign) |
| nRight |= Privilege::READ; |
| if(_eNum & adRightCreate) |
| nRight |= Privilege::CREATE; |
| if(_eNum & adRightWriteDesign) |
| nRight |= Privilege::ALTER; |
| if(_eNum & adRightReference) |
| nRight |= Privilege::REFERENCE; |
| if(_eNum & adRightDrop) |
| nRight |= Privilege::DROP; |
| |
| return nRight; |
| } |
| // ------------------------------------------------------------------------- |
| RightsEnum OAdoGroup::Map2Right(sal_Int32 _eNum) |
| { |
| sal_Int32 nRight = adRightNone; |
| if(_eNum & Privilege::SELECT) |
| nRight |= adRightRead; |
| |
| if(_eNum & Privilege::INSERT) |
| nRight |= adRightInsert; |
| |
| if(_eNum & Privilege::UPDATE) |
| nRight |= adRightUpdate; |
| |
| if(_eNum & Privilege::DELETE) |
| nRight |= adRightDelete; |
| |
| if(_eNum & Privilege::READ) |
| nRight |= adRightReadDesign; |
| |
| if(_eNum & Privilege::CREATE) |
| nRight |= adRightCreate; |
| |
| if(_eNum & Privilege::ALTER) |
| nRight |= adRightWriteDesign; |
| |
| if(_eNum & Privilege::REFERENCE) |
| nRight |= adRightReference; |
| |
| if(_eNum & Privilege::DROP) |
| nRight |= adRightDrop; |
| |
| return (RightsEnum)nRight; |
| } |
| // ------------------------------------------------------------------------- |
| void WpADOIndex::Create() |
| { |
| HRESULT hr = -1; |
| |
| _ADOIndex* pIndex = NULL; |
| hr = CoCreateInstance(ADOS::CLSID_ADOINDEX_25, |
| NULL, |
| CLSCTX_INPROC_SERVER, |
| ADOS::IID_ADOINDEX_25, |
| (void**)&pIndex ); |
| |
| |
| if( !FAILED( hr ) ) |
| { |
| operator=( pIndex ); |
| pIndex->Release(); |
| } |
| } |
| // ------------------------------------------------------------------------- |
| void OAdoIndex::fillPropertyValues() |
| { |
| if(m_aIndex.IsValid()) |
| { |
| m_Name = m_aIndex.get_Name(); |
| m_IsUnique = m_aIndex.get_Unique(); |
| m_IsPrimaryKeyIndex = m_aIndex.get_PrimaryKey(); |
| m_IsClustered = m_aIndex.get_Clustered(); |
| } |
| } |
| // ----------------------------------------------------------------------------- |
| void WpADOKey::Create() |
| { |
| HRESULT hr = -1; |
| _ADOKey* pKey = NULL; |
| hr = CoCreateInstance(ADOS::CLSID_ADOKEY_25, |
| NULL, |
| CLSCTX_INPROC_SERVER, |
| ADOS::IID_ADOKEY_25, |
| (void**)&pKey ); |
| |
| |
| if( !FAILED( hr ) ) |
| { |
| operator=( pKey ); |
| pKey->Release(); |
| } |
| } |
| // ------------------------------------------------------------------------- |
| void OAdoKey::fillPropertyValues() |
| { |
| if(m_aKey.IsValid()) |
| { |
| m_aProps->m_Type = MapKeyRule(m_aKey.get_Type()); |
| m_Name = m_aKey.get_Name(); |
| m_aProps->m_ReferencedTable = m_aKey.get_RelatedTable(); |
| m_aProps->m_UpdateRule = MapRule(m_aKey.get_UpdateRule()); |
| m_aProps->m_DeleteRule = MapRule(m_aKey.get_DeleteRule()); |
| } |
| } |
| // ------------------------------------------------------------------------- |
| sal_Int32 OAdoKey::MapRule(const RuleEnum& _eNum) |
| { |
| sal_Int32 eNum = KeyRule::NO_ACTION; |
| switch(_eNum) |
| { |
| case adRICascade: |
| eNum = KeyRule::CASCADE; |
| break; |
| case adRISetNull: |
| eNum = KeyRule::SET_NULL; |
| break; |
| case adRINone: |
| eNum = KeyRule::NO_ACTION; |
| break; |
| case adRISetDefault: |
| eNum = KeyRule::SET_DEFAULT; |
| break; |
| } |
| return eNum; |
| } |
| // ------------------------------------------------------------------------- |
| RuleEnum OAdoKey::Map2Rule(const sal_Int32& _eNum) |
| { |
| RuleEnum eNum = adRINone; |
| switch(_eNum) |
| { |
| case KeyRule::CASCADE: |
| eNum = adRICascade; |
| break; |
| case KeyRule::SET_NULL: |
| eNum = adRISetNull; |
| break; |
| case KeyRule::NO_ACTION: |
| eNum = adRINone; |
| break; |
| case KeyRule::SET_DEFAULT: |
| eNum = adRISetDefault; |
| break; |
| } |
| return eNum; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Int32 OAdoKey::MapKeyRule(const KeyTypeEnum& _eNum) |
| { |
| sal_Int32 nKeyType = KeyType::PRIMARY; |
| switch(_eNum) |
| { |
| case adKeyPrimary: |
| nKeyType = KeyType::PRIMARY; |
| break; |
| case adKeyForeign: |
| nKeyType = KeyType::FOREIGN; |
| break; |
| case adKeyUnique: |
| nKeyType = KeyType::UNIQUE; |
| break; |
| } |
| return nKeyType; |
| } |
| // ------------------------------------------------------------------------- |
| KeyTypeEnum OAdoKey::Map2KeyRule(const sal_Int32& _eNum) |
| { |
| KeyTypeEnum eNum( adKeyPrimary ); |
| switch(_eNum) |
| { |
| case KeyType::PRIMARY: |
| eNum = adKeyPrimary; |
| break; |
| case KeyType::FOREIGN: |
| eNum = adKeyForeign; |
| break; |
| case KeyType::UNIQUE: |
| eNum = adKeyUnique; |
| break; |
| default: |
| OSL_ENSURE( false, "OAdoKey::Map2KeyRule: invalid key type!" ); |
| } |
| return eNum; |
| } |
| // ----------------------------------------------------------------------------- |
| void WpADOTable::Create() |
| { |
| HRESULT hr = -1; |
| _ADOTable* pTable = NULL; |
| hr = CoCreateInstance(ADOS::CLSID_ADOTABLE_25, |
| NULL, |
| CLSCTX_INPROC_SERVER, |
| ADOS::IID_ADOTABLE_25, |
| (void**)&pTable ); |
| |
| |
| if( !FAILED( hr ) ) |
| { |
| operator=( pTable ); |
| pTable->Release(); |
| } |
| } |
| // ------------------------------------------------------------------------- |
| ::rtl::OUString WpADOCatalog::GetObjectOwner(const ::rtl::OUString& _rName, ObjectTypeEnum _eNum) |
| { |
| OLEVariant _rVar; |
| _rVar.setNoArg(); |
| OLEString aBSTR; |
| OLEString sStr1(_rName); |
| pInterface->GetObjectOwner(sStr1,_eNum,_rVar,&aBSTR); |
| return aBSTR; |
| } |
| // ----------------------------------------------------------------------------- |
| void OAdoTable::fillPropertyValues() |
| { |
| if(m_aTable.IsValid()) |
| { |
| m_Name = m_aTable.get_Name(); |
| m_Type = m_aTable.get_Type(); |
| { |
| WpADOCatalog aCat(m_aTable.get_ParentCatalog()); |
| if(aCat.IsValid()) |
| m_CatalogName = aCat.GetObjectOwner(m_aTable.get_Name(),adPermObjTable); |
| } |
| { |
| WpADOProperties aProps = m_aTable.get_Properties(); |
| if(aProps.IsValid()) |
| m_Description = OTools::getValue(aProps,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Description"))); |
| } |
| } |
| } |
| // ----------------------------------------------------------------------------- |
| void WpADOUser::Create() |
| { |
| HRESULT hr = -1; |
| _ADOUser* pUser = NULL; |
| hr = CoCreateInstance(ADOS::CLSID_ADOUSER_25, |
| NULL, |
| CLSCTX_INPROC_SERVER, |
| ADOS::IID_ADOUSER_25, |
| (void**)&pUser ); |
| |
| |
| if( !FAILED( hr ) ) |
| { |
| operator=( pUser ); |
| pUser->Release(); |
| } |
| } |
| // ------------------------------------------------------------------------- |
| |
| |