1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 // MARKER(update_precomp.py): autogen include statement, do not remove 29 #include "precompiled_connectivity.hxx" 30 31 #include "KResultSetMetaData.hxx" 32 #include "kfields.hxx" 33 #include "KDatabaseMetaData.hxx" 34 #include <com/sun/star/sdbc/DataType.hpp> 35 36 using namespace connectivity::kab; 37 using namespace com::sun::star::uno; 38 using namespace com::sun::star::lang; 39 using namespace com::sun::star::sdbc; 40 41 KabResultSetMetaData::KabResultSetMetaData(KabConnection* _pConnection) 42 : m_pConnection(_pConnection), 43 m_aKabFields() 44 { 45 } 46 // ------------------------------------------------------------------------- 47 KabResultSetMetaData::~KabResultSetMetaData() 48 { 49 } 50 // ------------------------------------------------------------------------- 51 void KabResultSetMetaData::setKabFields(const ::vos::ORef<connectivity::OSQLColumns> &xColumns) throw(SQLException) 52 { 53 OSQLColumns::Vector::const_iterator aIter; 54 static const ::rtl::OUString aName(::rtl::OUString::createFromAscii("Name")); 55 56 for (aIter = xColumns->get().begin(); aIter != xColumns->get().end(); ++aIter) 57 { 58 ::rtl::OUString aFieldName; 59 sal_uInt32 nFieldNumber; 60 61 (*aIter)->getPropertyValue(aName) >>= aFieldName; 62 nFieldNumber = findKabField(aFieldName); 63 m_aKabFields.push_back(nFieldNumber); 64 } 65 } 66 // ------------------------------------------------------------------------- 67 sal_Int32 SAL_CALL KabResultSetMetaData::getColumnDisplaySize(sal_Int32 column) throw(SQLException, RuntimeException) 68 { 69 return m_aKabFields[column - 1] < KAB_DATA_FIELDS? 20: 50; 70 } 71 // ------------------------------------------------------------------------- 72 sal_Int32 SAL_CALL KabResultSetMetaData::getColumnType(sal_Int32 column) throw(SQLException, RuntimeException) 73 { 74 return m_aKabFields[column - 1] == KAB_FIELD_REVISION? DataType::TIMESTAMP: DataType::CHAR; 75 } 76 // ------------------------------------------------------------------------- 77 sal_Int32 SAL_CALL KabResultSetMetaData::getColumnCount() throw(SQLException, RuntimeException) 78 { 79 return m_aKabFields.size(); 80 } 81 // ------------------------------------------------------------------------- 82 sal_Bool SAL_CALL KabResultSetMetaData::isCaseSensitive(sal_Int32) throw(SQLException, RuntimeException) 83 { 84 return sal_True; 85 } 86 // ------------------------------------------------------------------------- 87 ::rtl::OUString SAL_CALL KabResultSetMetaData::getSchemaName(sal_Int32) throw(SQLException, RuntimeException) 88 { 89 return ::rtl::OUString(); 90 } 91 // ------------------------------------------------------------------------- 92 ::rtl::OUString SAL_CALL KabResultSetMetaData::getColumnName(sal_Int32 column) throw(SQLException, RuntimeException) 93 { 94 sal_uInt32 nFieldNumber = m_aKabFields[column - 1]; 95 ::KABC::Field::List aFields = ::KABC::Field::allFields(); 96 QString aQtName; 97 98 switch (nFieldNumber) 99 { 100 case KAB_FIELD_REVISION: 101 aQtName = KABC::Addressee::revisionLabel(); 102 break; 103 default: 104 aQtName = aFields[nFieldNumber - KAB_DATA_FIELDS]->label(); 105 } 106 ::rtl::OUString aName((const sal_Unicode *) aQtName.ucs2()); 107 108 return aName; 109 } 110 // ------------------------------------------------------------------------- 111 ::rtl::OUString SAL_CALL KabResultSetMetaData::getTableName(sal_Int32) throw(SQLException, RuntimeException) 112 { 113 return KabDatabaseMetaData::getAddressBookTableName(); 114 } 115 // ------------------------------------------------------------------------- 116 ::rtl::OUString SAL_CALL KabResultSetMetaData::getCatalogName(sal_Int32) throw(SQLException, RuntimeException) 117 { 118 return ::rtl::OUString(); 119 } 120 // ------------------------------------------------------------------------- 121 ::rtl::OUString SAL_CALL KabResultSetMetaData::getColumnTypeName(sal_Int32) throw(SQLException, RuntimeException) 122 { 123 return ::rtl::OUString(); 124 } 125 // ------------------------------------------------------------------------- 126 ::rtl::OUString SAL_CALL KabResultSetMetaData::getColumnLabel(sal_Int32) throw(SQLException, RuntimeException) 127 { 128 return ::rtl::OUString(); 129 } 130 // ------------------------------------------------------------------------- 131 ::rtl::OUString SAL_CALL KabResultSetMetaData::getColumnServiceName(sal_Int32) throw(SQLException, RuntimeException) 132 { 133 return ::rtl::OUString(); 134 } 135 // ------------------------------------------------------------------------- 136 sal_Bool SAL_CALL KabResultSetMetaData::isCurrency(sal_Int32) throw(SQLException, RuntimeException) 137 { 138 return sal_False; 139 } 140 // ------------------------------------------------------------------------- 141 sal_Bool SAL_CALL KabResultSetMetaData::isAutoIncrement(sal_Int32) throw(SQLException, RuntimeException) 142 { 143 return sal_False; 144 } 145 // ------------------------------------------------------------------------- 146 sal_Bool SAL_CALL KabResultSetMetaData::isSigned(sal_Int32) throw(SQLException, RuntimeException) 147 { 148 return sal_False; 149 } 150 // ------------------------------------------------------------------------- 151 sal_Int32 SAL_CALL KabResultSetMetaData::getPrecision(sal_Int32) throw(SQLException, RuntimeException) 152 { 153 return 0; 154 } 155 // ----------------------------------------------------------------------------- 156 sal_Int32 SAL_CALL KabResultSetMetaData::getScale(sal_Int32) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) 157 { 158 return 0; 159 } 160 // ------------------------------------------------------------------------- 161 sal_Int32 SAL_CALL KabResultSetMetaData::isNullable(sal_Int32) throw(SQLException, RuntimeException) 162 { 163 return (sal_Int32) sal_True; 164 // KDE address book currently does not use NULL values. 165 // But it might do it someday 166 } 167 // ------------------------------------------------------------------------- 168 sal_Bool SAL_CALL KabResultSetMetaData::isSearchable(sal_Int32) throw(SQLException, RuntimeException) 169 { 170 return sal_True; 171 } 172 // ------------------------------------------------------------------------- 173 sal_Bool SAL_CALL KabResultSetMetaData::isReadOnly(sal_Int32) throw(SQLException, RuntimeException) 174 { 175 return sal_True; 176 } 177 // ------------------------------------------------------------------------- 178 sal_Bool SAL_CALL KabResultSetMetaData::isDefinitelyWritable(sal_Int32) throw(SQLException, RuntimeException) 179 { 180 return sal_False; 181 } 182 // ------------------------------------------------------------------------- 183 sal_Bool SAL_CALL KabResultSetMetaData::isWritable(sal_Int32) throw(SQLException, RuntimeException) 184 { 185 return sal_False; 186 } 187 // ------------------------------------------------------------------------- 188