xref: /AOO41X/main/connectivity/source/drivers/macab/MacabResultSetMetaData.cxx (revision 79aad27f7f29270c03e208e3d687e8e3850af11d)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_connectivity.hxx"
26 
27 #include "MacabResultSetMetaData.hxx"
28 #include "MacabHeader.hxx"
29 #include "MacabRecords.hxx"
30 #include "MacabAddressBook.hxx"
31 #include "macabutilities.hxx"
32 #include "resource/macab_res.hrc"
33 
34 using namespace connectivity::macab;
35 using namespace com::sun::star::uno;
36 using namespace com::sun::star::lang;
37 using namespace com::sun::star::sdbc;
38 
MacabResultSetMetaData(MacabConnection * _pConnection,::rtl::OUString _sTableName)39 MacabResultSetMetaData::MacabResultSetMetaData(MacabConnection* _pConnection, ::rtl::OUString _sTableName)
40     : m_pConnection(_pConnection),
41         m_sTableName(_sTableName),
42       m_aMacabFields()
43 {
44 }
45 // -------------------------------------------------------------------------
~MacabResultSetMetaData()46 MacabResultSetMetaData::~MacabResultSetMetaData()
47 {
48 }
49 // -------------------------------------------------------------------------
setMacabFields(const::vos::ORef<connectivity::OSQLColumns> & xColumns)50 void MacabResultSetMetaData::setMacabFields(const ::vos::ORef<connectivity::OSQLColumns> &xColumns) throw(SQLException)
51 {
52     OSQLColumns::Vector::const_iterator aIter;
53     static const ::rtl::OUString aName(::rtl::OUString::createFromAscii("Name"));
54     MacabRecords *aRecords;
55     MacabHeader *aHeader;
56 
57     aRecords = m_pConnection->getAddressBook()->getMacabRecords(m_sTableName);
58 
59     // In case, somehow, we don't have anything with the name m_sTableName
60     if(aRecords == NULL)
61     {
62         impl_throwError(STR_NO_TABLE);
63     }
64 
65     aHeader = aRecords->getHeader();
66 
67     for (aIter = xColumns->get().begin(); aIter != xColumns->get().end(); ++aIter)
68     {
69         ::rtl::OUString aFieldName;
70         sal_uInt32 nFieldNumber;
71 
72         (*aIter)->getPropertyValue(aName) >>= aFieldName;
73         nFieldNumber = aHeader->getColumnNumber(aFieldName);
74         m_aMacabFields.push_back(nFieldNumber);
75     }
76 
77 }
78 // -------------------------------------------------------------------------
getColumnDisplaySize(sal_Int32 column)79 sal_Int32 SAL_CALL MacabResultSetMetaData::getColumnDisplaySize(sal_Int32 column) throw(SQLException, RuntimeException)
80 {
81     // For now, all columns are the same size.
82     return 50;
83 }
84 // -------------------------------------------------------------------------
getColumnType(sal_Int32 column)85 sal_Int32 SAL_CALL MacabResultSetMetaData::getColumnType(sal_Int32 column) throw(SQLException, RuntimeException)
86 {
87     MacabRecords *aRecords;
88     MacabHeader *aHeader;
89     macabfield *aField;
90 
91     aRecords = m_pConnection->getAddressBook()->getMacabRecords(m_sTableName);
92 
93     // In case, somehow, we don't have anything with the name m_sTableName
94     if(aRecords == NULL)
95     {
96         impl_throwError(STR_NO_TABLE);
97     }
98 
99     aHeader = aRecords->getHeader();
100     aField = aHeader->get(column-1);
101 
102     if(aField == NULL)
103     {
104         ::dbtools::throwInvalidIndexException(*this,Any());
105         return -1;
106     }
107 
108     return ABTypeToDataType(aField->type);
109 }
110 // -------------------------------------------------------------------------
getColumnCount()111 sal_Int32 SAL_CALL MacabResultSetMetaData::getColumnCount() throw(SQLException, RuntimeException)
112 {
113     return m_aMacabFields.size();
114 }
115 // -------------------------------------------------------------------------
isCaseSensitive(sal_Int32)116 sal_Bool SAL_CALL MacabResultSetMetaData::isCaseSensitive(sal_Int32) throw(SQLException, RuntimeException)
117 {
118     return sal_True;
119 }
120 // -------------------------------------------------------------------------
getSchemaName(sal_Int32)121 ::rtl::OUString SAL_CALL MacabResultSetMetaData::getSchemaName(sal_Int32) throw(SQLException, RuntimeException)
122 {
123     return ::rtl::OUString();
124 }
125 // -------------------------------------------------------------------------
getColumnName(sal_Int32 column)126 ::rtl::OUString SAL_CALL MacabResultSetMetaData::getColumnName(sal_Int32 column) throw(SQLException, RuntimeException)
127 {
128     sal_uInt32 nFieldNumber = m_aMacabFields[column - 1];
129     MacabRecords *aRecords;
130     MacabHeader *aHeader;
131 
132     aRecords = m_pConnection->getAddressBook()->getMacabRecords(m_sTableName);
133 
134     // In case, somehow, we don't have anything with the name m_sTableName
135     if(aRecords == NULL)
136     {
137         impl_throwError(STR_NO_TABLE);
138     }
139 
140     aHeader = aRecords->getHeader();
141     ::rtl::OUString aName = aHeader->getString(nFieldNumber);
142 
143     return aName;
144 }
145 // -------------------------------------------------------------------------
getTableName(sal_Int32)146 ::rtl::OUString SAL_CALL MacabResultSetMetaData::getTableName(sal_Int32) throw(SQLException, RuntimeException)
147 {
148     return m_sTableName;
149 }
150 // -------------------------------------------------------------------------
getCatalogName(sal_Int32)151 ::rtl::OUString SAL_CALL MacabResultSetMetaData::getCatalogName(sal_Int32) throw(SQLException, RuntimeException)
152 {
153     return ::rtl::OUString();
154 }
155 // -------------------------------------------------------------------------
getColumnTypeName(sal_Int32)156 ::rtl::OUString SAL_CALL MacabResultSetMetaData::getColumnTypeName(sal_Int32) throw(SQLException, RuntimeException)
157 {
158     return ::rtl::OUString();
159 }
160 // -------------------------------------------------------------------------
getColumnLabel(sal_Int32)161 ::rtl::OUString SAL_CALL MacabResultSetMetaData::getColumnLabel(sal_Int32) throw(SQLException, RuntimeException)
162 {
163     return ::rtl::OUString();
164 }
165 // -------------------------------------------------------------------------
getColumnServiceName(sal_Int32)166 ::rtl::OUString SAL_CALL MacabResultSetMetaData::getColumnServiceName(sal_Int32) throw(SQLException, RuntimeException)
167 {
168     return ::rtl::OUString();
169 }
170 // -------------------------------------------------------------------------
isCurrency(sal_Int32)171 sal_Bool SAL_CALL MacabResultSetMetaData::isCurrency(sal_Int32) throw(SQLException, RuntimeException)
172 {
173     return sal_False;
174 }
175 // -------------------------------------------------------------------------
isAutoIncrement(sal_Int32)176 sal_Bool SAL_CALL MacabResultSetMetaData::isAutoIncrement(sal_Int32) throw(SQLException, RuntimeException)
177 {
178     return sal_False;
179 }
180 // -------------------------------------------------------------------------
isSigned(sal_Int32)181 sal_Bool SAL_CALL MacabResultSetMetaData::isSigned(sal_Int32) throw(SQLException, RuntimeException)
182 {
183     return sal_False;
184 }
185 // -------------------------------------------------------------------------
getPrecision(sal_Int32)186 sal_Int32 SAL_CALL MacabResultSetMetaData::getPrecision(sal_Int32) throw(SQLException, RuntimeException)
187 {
188     return 0;
189 }
190 // -----------------------------------------------------------------------------
getScale(sal_Int32)191 sal_Int32 SAL_CALL MacabResultSetMetaData::getScale(sal_Int32) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
192 {
193     return 0;
194 }
195 // -------------------------------------------------------------------------
isNullable(sal_Int32)196 sal_Int32 SAL_CALL MacabResultSetMetaData::isNullable(sal_Int32) throw(SQLException, RuntimeException)
197 {
198     return (sal_Int32) sal_True;
199 }
200 // -------------------------------------------------------------------------
isSearchable(sal_Int32)201 sal_Bool SAL_CALL MacabResultSetMetaData::isSearchable(sal_Int32) throw(SQLException, RuntimeException)
202 {
203     return sal_True;
204 }
205 // -------------------------------------------------------------------------
isReadOnly(sal_Int32)206 sal_Bool SAL_CALL MacabResultSetMetaData::isReadOnly(sal_Int32) throw(SQLException, RuntimeException)
207 {
208     return sal_True;
209 }
210 // -------------------------------------------------------------------------
isDefinitelyWritable(sal_Int32)211 sal_Bool SAL_CALL MacabResultSetMetaData::isDefinitelyWritable(sal_Int32) throw(SQLException, RuntimeException)
212 {
213     return sal_False;
214 }
215 // -------------------------------------------------------------------------
isWritable(sal_Int32)216 sal_Bool SAL_CALL MacabResultSetMetaData::isWritable(sal_Int32) throw(SQLException, RuntimeException)
217 {
218     return sal_False;
219 }
220 // -------------------------------------------------------------------------
221