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 #include "java/sql/ResultSetMetaData.hxx" 31 #include "java/sql/Connection.hxx" 32 #include "java/tools.hxx" 33 #include <rtl/logfile.hxx> 34 35 using namespace connectivity; 36 using namespace ::com::sun::star::uno; 37 using namespace ::com::sun::star::beans; 38 // using namespace ::com::sun::star::sdbcx; 39 using namespace ::com::sun::star::sdbc; 40 using namespace ::com::sun::star::container; 41 using namespace ::com::sun::star::lang; 42 43 #define NULLABLE_UNDEFINED 99 44 //************************************************************** 45 //************ Class: java.sql.ResultSetMetaData 46 //************************************************************** 47 48 jclass java_sql_ResultSetMetaData::theClass = 0; 49 java_sql_ResultSetMetaData::java_sql_ResultSetMetaData( JNIEnv * pEnv, jobject myObj, const java::sql::ConnectionLog& _rResultSetLogger, java_sql_Connection& _rCon ) 50 :java_lang_Object( pEnv, myObj ) 51 ,m_aLogger( _rResultSetLogger ) 52 ,m_pConnection( &_rCon ) 53 ,m_nColumnCount(-1) 54 { 55 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::java_sql_ResultSetMetaData" ); 56 SDBThreadAttach::addRef(); 57 } 58 java_sql_ResultSetMetaData::~java_sql_ResultSetMetaData() 59 { 60 SDBThreadAttach::releaseRef(); 61 } 62 63 jclass java_sql_ResultSetMetaData::getMyClass() const 64 { 65 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::getMyClass" ); 66 // die Klasse muss nur einmal geholt werden, daher statisch 67 if( !theClass ) 68 theClass = findMyClass("java/sql/ResultSetMetaData"); 69 return theClass; 70 } 71 // ------------------------------------------------------------------------- 72 73 sal_Int32 SAL_CALL java_sql_ResultSetMetaData::getColumnDisplaySize( sal_Int32 column ) throw(SQLException, RuntimeException) 74 { 75 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::getColumnDisplaySize" ); 76 static jmethodID mID(NULL); 77 return callIntMethodWithIntArg("getColumnDisplaySize",mID,column); 78 } 79 // ------------------------------------------------------------------------- 80 81 sal_Int32 SAL_CALL java_sql_ResultSetMetaData::getColumnType( sal_Int32 column ) throw(SQLException, RuntimeException) 82 { 83 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::getColumnType" ); 84 static jmethodID mID(NULL); 85 return callIntMethodWithIntArg("getColumnType",mID,column); 86 } 87 // ------------------------------------------------------------------------- 88 89 sal_Int32 SAL_CALL java_sql_ResultSetMetaData::getColumnCount( ) throw(SQLException, RuntimeException) 90 { 91 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::getColumnCount" ); 92 if ( m_nColumnCount == -1 ) 93 { 94 static jmethodID mID(NULL); 95 m_nColumnCount = callIntMethod("getColumnCount",mID); 96 } // if ( m_nColumnCount == -1 ) 97 return m_nColumnCount; 98 99 } 100 // ------------------------------------------------------------------------- 101 102 sal_Bool SAL_CALL java_sql_ResultSetMetaData::isCaseSensitive( sal_Int32 column ) throw(SQLException, RuntimeException) 103 { 104 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::isCaseSensitive" ); 105 static jmethodID mID(NULL); 106 return callBooleanMethodWithIntArg( "isCaseSensitive", mID,column ); 107 } 108 // ------------------------------------------------------------------------- 109 ::rtl::OUString SAL_CALL java_sql_ResultSetMetaData::getSchemaName( sal_Int32 column ) throw(SQLException, RuntimeException) 110 { 111 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::getSchemaName" ); 112 static jmethodID mID(NULL); 113 return callStringMethodWithIntArg("getSchemaName",mID,column); 114 } 115 // ------------------------------------------------------------------------- 116 117 ::rtl::OUString SAL_CALL java_sql_ResultSetMetaData::getColumnName( sal_Int32 column ) throw(SQLException, RuntimeException) 118 { 119 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::getColumnName" ); 120 static jmethodID mID(NULL); 121 return callStringMethodWithIntArg("getColumnName",mID,column); 122 } 123 // ------------------------------------------------------------------------- 124 ::rtl::OUString SAL_CALL java_sql_ResultSetMetaData::getTableName( sal_Int32 column ) throw(SQLException, RuntimeException) 125 { 126 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::getTableName" ); 127 static jmethodID mID(NULL); 128 return callStringMethodWithIntArg("getTableName",mID,column); 129 } 130 // ------------------------------------------------------------------------- 131 ::rtl::OUString SAL_CALL java_sql_ResultSetMetaData::getCatalogName( sal_Int32 column ) throw(SQLException, RuntimeException) 132 { 133 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::getCatalogName" ); 134 static jmethodID mID(NULL); 135 return callStringMethodWithIntArg("getCatalogName",mID,column); 136 } 137 // ------------------------------------------------------------------------- 138 ::rtl::OUString SAL_CALL java_sql_ResultSetMetaData::getColumnTypeName( sal_Int32 column ) throw(SQLException, RuntimeException) 139 { 140 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::getColumnTypeName" ); 141 static jmethodID mID(NULL); 142 return callStringMethodWithIntArg("getColumnTypeName",mID,column); 143 } 144 // ------------------------------------------------------------------------- 145 ::rtl::OUString SAL_CALL java_sql_ResultSetMetaData::getColumnLabel( sal_Int32 column ) throw(SQLException, RuntimeException) 146 { 147 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::getColumnLabel" ); 148 static jmethodID mID(NULL); 149 return callStringMethodWithIntArg("getColumnLabel",mID,column); 150 } 151 // ------------------------------------------------------------------------- 152 ::rtl::OUString SAL_CALL java_sql_ResultSetMetaData::getColumnServiceName( sal_Int32 column ) throw(SQLException, RuntimeException) 153 { 154 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::getColumnServiceName" ); 155 static jmethodID mID(NULL); 156 return callStringMethodWithIntArg("getColumnClassName",mID,column); 157 } 158 // ------------------------------------------------------------------------- 159 160 sal_Bool SAL_CALL java_sql_ResultSetMetaData::isCurrency( sal_Int32 column ) throw(SQLException, RuntimeException) 161 { 162 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::isCurrency" ); 163 if ( m_pConnection->isIgnoreCurrencyEnabled() ) 164 return sal_False; 165 static jmethodID mID(NULL); 166 return callBooleanMethodWithIntArg( "isCurrency", mID,column ); 167 } 168 // ------------------------------------------------------------------------- 169 170 sal_Bool SAL_CALL java_sql_ResultSetMetaData::isAutoIncrement( sal_Int32 column ) throw(SQLException, RuntimeException) 171 { 172 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::isAutoIncrement" ); 173 static jmethodID mID(NULL); 174 return callBooleanMethodWithIntArg( "isAutoIncrement", mID,column ); 175 } 176 // ------------------------------------------------------------------------- 177 178 179 sal_Bool SAL_CALL java_sql_ResultSetMetaData::isSigned( sal_Int32 column ) throw(SQLException, RuntimeException) 180 { 181 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::isSigned" ); 182 static jmethodID mID(NULL); 183 return callBooleanMethodWithIntArg( "isSigned", mID,column ); 184 } 185 // ------------------------------------------------------------------------- 186 sal_Int32 SAL_CALL java_sql_ResultSetMetaData::getPrecision( sal_Int32 column ) throw(SQLException, RuntimeException) 187 { 188 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::getPrecision" ); 189 static jmethodID mID(NULL); 190 return callIntMethodWithIntArg("getPrecision",mID,column); 191 } 192 // ------------------------------------------------------------------------- 193 sal_Int32 SAL_CALL java_sql_ResultSetMetaData::getScale( sal_Int32 column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) 194 { 195 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::getScale" ); 196 static jmethodID mID(NULL); 197 return callIntMethodWithIntArg("getScale",mID,column); 198 } 199 // ------------------------------------------------------------------------- 200 sal_Int32 SAL_CALL java_sql_ResultSetMetaData::isNullable( sal_Int32 column ) throw(SQLException, RuntimeException) 201 { 202 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::isNullable" ); 203 static jmethodID mID(NULL); 204 return callIntMethodWithIntArg("isNullable",mID,column); 205 } 206 // ------------------------------------------------------------------------- 207 208 sal_Bool SAL_CALL java_sql_ResultSetMetaData::isSearchable( sal_Int32 column ) throw(SQLException, RuntimeException) 209 { 210 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::isSearchable" ); 211 static jmethodID mID(NULL); 212 return callBooleanMethodWithIntArg( "isSearchable", mID,column ); 213 } 214 // ------------------------------------------------------------------------- 215 216 sal_Bool SAL_CALL java_sql_ResultSetMetaData::isReadOnly( sal_Int32 column ) throw(SQLException, RuntimeException) 217 { 218 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::isReadOnly" ); 219 static jmethodID mID(NULL); 220 return callBooleanMethodWithIntArg( "isReadOnly", mID,column ); 221 } 222 // ------------------------------------------------------------------------- 223 224 sal_Bool SAL_CALL java_sql_ResultSetMetaData::isDefinitelyWritable( sal_Int32 column ) throw(SQLException, RuntimeException) 225 { 226 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::isDefinitelyWritable" ); 227 static jmethodID mID(NULL); 228 return callBooleanMethodWithIntArg( "isDefinitelyWritable", mID,column ); 229 } 230 // ------------------------------------------------------------------------- 231 sal_Bool SAL_CALL java_sql_ResultSetMetaData::isWritable( sal_Int32 column ) throw(SQLException, RuntimeException) 232 { 233 RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "jdbc", "Ocke.Janssen@sun.com", "java_sql_ResultSetMetaData::isWritable" ); 234 static jmethodID mID(NULL); 235 return callBooleanMethodWithIntArg( "isWritable", mID,column ); 236 } 237 // ------------------------------------------------------------------------- 238 239